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
=== modified file 'Template/LO/Source/make_opts'
--- Template/LO/Source/make_opts 2014-01-07 10:50:42 +0000
+++ Template/LO/Source/make_opts 2014-08-26 07:56:12 +0000
@@ -1,14 +1,15 @@
1# Environment variables1# Environment variables
22
3ifeq ($(origin FFLAGS),undefined)3ifeq ($(origin FFLAGS),undefined)
4 FFLAGS= -O -w -fbounds-check4 FFLAGS= -O -w -fbounds-check -fPIC
5 #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall5 #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
6endif6endif
7FFLAGS+= -ffixed-line-length-1327FFLAGS+= -ffixed-line-length-132
88
9# Set FC unless it's defined by an environment variable9# Set FC unless it's defined by an environment variable
10ifeq ($(origin FC),default)10ifeq ($(origin FC),default)
11 FC=gfortran11# FC=gfortran
12 FC=gfortran
12endif13endif
1314
14# Options: dynamic, lhapdf15# Options: dynamic, lhapdf
@@ -17,6 +18,12 @@
1718
18# Option dynamic19# Option dynamic
1920
21ifeq ($(UNAME), Darwin)
22 dylibext=dylib
23else
24 dylibext=so
25endif
26
20ifdef dynamic27ifdef dynamic
21 ifeq ($(UNAME), Darwin)28 ifeq ($(UNAME), Darwin)
22 libext=dylib29 libext=dylib
2330
=== modified file 'Template/NLO/Cards/shower_card.dat'
--- Template/NLO/Cards/shower_card.dat 2014-07-01 13:57:28 +0000
+++ Template/NLO/Cards/shower_card.dat 2014-08-26 07:56:12 +0000
@@ -1,81 +1,111 @@
1################################################################################1#***********************************************************************
2# 2# MadGraph5_aMC@NLO *
3# This file contains the settings for partons showers to be used in aMC@NLO 3# *
4# mind the format: variable = name # comment 4# shower_card.dat aMC@NLO *
5# 5# *
6################################################################################6# This file is used to set the parameters for the shower. *
7#7# *
8# SHOWER SETTINGS:8# Some notation/conventions: *
9#9# *
10nevents = -1 # number of events to shower. If negative, shower all events10# Lines starting with a hash (#) are info or comments *
11nsplit_jobs= 1 # number of jobs to be run on parallel or on a cluster (<100)11# *
12combine_td = T # combine or not the td files if splitting12# mind the format: variable = value # comment *
13ue_enabled = F # underlying event on (T)/ off (F) (is MSTP(81) 0/1 for PY6)13#***********************************************************************
14pdfcode = 0 # pdf code: 0 = internal pdf, 1 = same as NLO, other = lhaglue14#
15hadronize = T # hadronization on/off (is MSTP(111) 0/1 for PY6) 15#****************
16maxprint = 2 # maximum number of events to be printed in the log16# Shower settings
17maxerrs = 0.1 # maximum tolerated fraction of errors17#****************
18b_stable = F # b hadrons are stable18#
19pi_stable = T # pi0's are stable19#***********************************************************************
20wp_stable = F # w+'s are stable20# Number of events, jobs, errors, and random seeds *
21wm_stable = F # w-'s are stable21#***********************************************************************
22z_stable = F # z0's are stable22nevents = -1 # N evts to shower (< 0 = all)
23h_stable = F # Higgs bosons are stable23nsplit_jobs = 1 # N jobs to run in parallel (< 100!!)
24tap_stable = F # tau+'s are stable24combine_td = T # combine the topdrawer files if nsplit_jobs > 1
25tam_stable = F # tau-'s are stable25maxprint = 2 # N evts to print in the log
26mup_stable = F # mu+'s are stable26maxerrs = 0.1 # max fraction of errors
27mum_stable = F # mu-'s are stable27rnd_seed = 0 # 1st random seed (0 = default)
28rnd_seed = 0 # random seed (0 is default)28rnd_seed2 = 0 # 2nd random seed (0 = default) !ONLY FOR HWERIG6!
29rnd_seed2 = 0 # 2nd random seed (only for HW6, 0 is default)29#***********************************************************************
30lambda_5 = -1 # lambda_5 value, -1 for default30# PDFs and non-perturbative modelling *
31b_mass = -1 # b mass, -1 for default31#***********************************************************************
32is_4lep = F # true if it is 4 lepton production (only for PY6)32pdfcode = 0 # 0 = internal, 1 = same as NLO, other = lhaglue
33is_bbar = F # true if it is b-b~ production (only for HW6)33ue_enabled = F # underlying event
34modbos_1 = 5 # dec mode for boson 1 (only for HW6, overridden by DM_ below)34hadronize = T # hadronisation on/off !IGNORED BY HERWIG6!
35modbos_2 = 5 # dec mode for boson 2 (only for HW6, overridden by DM_ below)35lambda_5 = -1 # Lambda_5 (< 0 = default) !IGNORED BY PYTHIA8!
36################################################################################36#***********************************************************************
37# DECAY CHANNELS37# Stable or unstable particles *
38# Write down the decay channels for the resonances, to be performed by the shower.38#***********************************************************************
39# The syntax (for a two-body decay) is39b_stable = F # set B hadrons stable
40# DM_I = M > D1 D2 @ BR @ ME40pi_stable = T # set pi0's stable
41# where I = 1, ..., 99, M is the decaying resonance, D1, D2 are the decay products41wp_stable = F # set w+'s stable
42# (up to D5 if such a decay is supported by the shower), BR is the branching ratio42wm_stable = F # set w-'s stable
43# (only used by the HERWIG6 shower, ignored otherwise) and ME is the type of matrix43z_stable = F # set z0's stable
44# element to be used in the decay (only used by HERWIG6, ignored otherwise).44h_stable = F # set Higgs' stable
45# BR's are correctly understood by HERWIG6 only if they add up to one and only if45tap_stable = F # set tau+'s stable
46# no more than three modes are required for a given resonance.46tam_stable = F # set tau-'s stable
47# ME corresponds to the third entry of subroutine HWMODK, see the relevant manual.47mup_stable = F # set mu+'s stable
48# Examples of syntax:48mum_stable = F # set mu-'s stable
49# Z -> e+ e- or mu+ mu- with BR = 0.5 each49#***********************************************************************
50# DM_1 = 23 > -11 11 @ 0.5d0 @ 10050# Mass of the b quark *
51# DM_2 = 23 > -13 13 @ 0.5d0 @ 10051#***********************************************************************
52# H -> tau+ tau- with BR = 152b_mass = -1 # if < 0 = read from SubProcesses/MCmasses_*.inc
53# DM_3 = 25 > -15 15 @ 1.0d0 @ 053#***********************************************************************
54# t -> nu_e e+ b @ 1d054# Special settings *
55# DM_4 = 6 > 12 -11 5 @ 1d0 @ 10055#***********************************************************************
56# WARNING: for HERWIG6 the order of decay products in >2-body decays IS RELEVANT.56is_4lep = F # T if 4-lepton production !ONLY FOR PYTHIA6!
57# WARNING: 1 -> n decays (with n > 2) are handled by PYTHIA6 and PYTHIA8 through57is_bbar = F # T if bb~ production !ONLY FOR HERWIG6!
58# a sequence of 1 -> 2 decays.58#***********************************************************************
59################################################################################59# Decay channels *
60# Write down the decay channels for the resonances, to be performed by *
61# the shower. *
62# The syntax (for a two-body decay) is *
63# DM_I = M > D1 D2 @ BR @ ME *
64# where I < 100, M is the decaying resonance, D1, D2 are the decay *
65# products (up to D5 if such a decay is supported by the shower), BR *
66# is the branching ratio (only used by the HERWIG6 shower, ignored *
67# otherwise) and ME is the type of matrix element to be used in the *
68# decay (only used by HERWIG6, ignored otherwise). *
69# BR's are correctly understood by HERWIG6 only if they add up to 1 *
70# and only if no more than three modes are required for a given *
71# resonance. *
72# ME corresponds to the third entry of subroutine HWMODK, see the *
73# relevant manual. *
74# *
75# WARNING: in HERWIG6, the order of decay products in > 2-body decays *
76# IS RELEVANT. *
77# WARNING: in PYTHIA6, turning hadronisation off disables top decays *
78# WARNING: in PYTHIA6 and PYTHIA8, 1 -> n decays (with n > 2) are *
79# handled through a sequence of 1 -> 2 decays. *
80# *
81# Examples of syntax: *
82# Z -> e+ e- or mu+ mu- with BR = 0.5 each *
83# DM_1 = 23 > -11 11 @ 0.5d0 @ 100 *
84# DM_2 = 23 > -13 13 @ 0.5d0 @ 100 *
85# H -> tau+ tau- with BR = 1 *
86# DM_3 = 25 > -15 15 @ 1.0d0 @ 0 *
87# t -> nu_e e+ b with BR = 1 (HERWIG) *
88# DM_4 = 6 > 12 -11 5 @ 1d0 @ 100 *
89# t -> nu_e e+ b with BR = 1 (PYTHIA) *
90# DM_5 = 6 > 24 5 @ 1d0 @ 100 *
91# DM_6 = 24 > 12 -11 @ 1d0 @ 100 *
92#***********************************************************************
6093
61################################################################################94#***********************************************************************
62#95# Extra Libraries/analyses *
63# EXTRA LIBRARIES/ANALYSES96# The following lines need to be changed if the user does not want to *
64# The following lines need to be changed if the user does not want to create the97# create a StdHEP/HepMC file, but to directly run an own analysis (to *
65# StdHEP/HEPMC file, but to directly run his/her own analyse.98# be placed in HWAnalyzer or analogous MCatNLO subfolders). *
66# Please note that this works only for HW6 and PY6, and that the analysis should99# Please use files in those folders as examples. *
67# be in the HWAnalyzer/ (or PYAnalyzer/) folder. 100#***********************************************************************
68# Please use files in those folders as examples.101EXTRALIBS = stdhep Fmcfio # Extra-libraries (not LHAPDF)
69# "None" and an empty value are equivalent.102 # Default: "stdhep Fmcfio"
70#103EXTRAPATHS = ../lib # Path to the extra-libraries
71################################################################################104 # Default: "../lib"
72EXTRALIBS = stdhep Fmcfio # Needed extra-libraries (not LHAPDF). 105INCLUDEPATHS = # Path to header files needed by c++
73 # Default: "stdhep Fmcfio"106 # Dir names separated by white spaces
74EXTRAPATHS = ../lib # Path to the extra-libraries. 107ANALYSE = # User's analysis and histogramming
75 # Default: "../lib"108 # routines (please use .o as extension
76INCLUDEPATHS= # Path to the dirs containing header files neede by C++.109 # and use spaces to separate files)
77 # Directory names are separated by white spaces
78ANALYSE = # User's analysis and histogramming routines
79 # (please use .o as extension and use spaces to separate files)
80110
81111
82112
=== modified file 'Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script'
--- Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-06-19 07:02:07 +0000
+++ Template/NLO/MCatNLO/Scripts/MCatNLO_MadFKS_HERWIG6.Script 2014-08-26 07:56:12 +0000
@@ -316,7 +316,6 @@
316 '$PART1' '$PART2' ! hadron types316 '$PART1' '$PART2' ! hadron types
317 $beammom1 $beammom2 ! beam momenta317 $beammom1 $beammom2 ! beam momenta
318 $LHSOFT ! Underlying event on (.TRUE.) or off (.FALSE.)318 $LHSOFT ! Underlying event on (.TRUE.) or off (.FALSE.)
319 $MODBOS_1 $MODBOS_2 ! Gauge boson decay modes
320EOF319EOF
321if [ $pdftype = 1 ]320if [ $pdftype = 1 ]
322then321then
323322
=== modified file 'Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f'
--- Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f 2014-06-06 09:51:20 +0000
+++ Template/NLO/MCatNLO/srcHerwig/madfks_hwdriver.f 2014-08-26 07:56:12 +0000
@@ -69,9 +69,6 @@
69 IF(.NOT.LHSOFT)WRITE(*,*)'Underlying event WILL NOT be generated'69 IF(.NOT.LHSOFT)WRITE(*,*)'Underlying event WILL NOT be generated'
70 WRITE(*,*)70 WRITE(*,*)
71C71C
72 WRITE(*,*)'Enter decay modes for gauge bosons'
73 READ(*,*)MODBOS(1),MODBOS(2)
74C
75 IF(LHSOFT.AND.IPDF.NE.1)THEN72 IF(LHSOFT.AND.IPDF.NE.1)THEN
76 WRITE(*,*)' '73 WRITE(*,*)' '
77 WRITE(*,*)'Underlying event requires external PDF sets'74 WRITE(*,*)'Underlying event requires external PDF sets'
7875
=== removed file 'Template/NLO/Source/make_opts'
--- Template/NLO/Source/make_opts 2014-06-24 08:40:18 +0000
+++ Template/NLO/Source/make_opts 1970-01-01 00:00:00 +0000
@@ -1,86 +0,0 @@
1# Environment variables
2
3ifeq ($(origin FFLAGS),undefined)
4 #FFLAGS= -O -w
5 FFLAGS = -O -fno-automatic
6 #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
7endif
8
9ifeq ($(origin CXXFLAGS),undefined)
10 #CXXFLAGS= -g
11 CXXFLAGS = -O
12endif
13
14ifeq ($(origin CFLAGS),undefined)
15 #CFLAGS= -g
16 CFLAGS = -O
17endif
18
19
20
21FFLAGS+= -ffixed-line-length-132
22
23# Set FC unless it's defined by an environment variable
24ifeq ($(origin FC),default)
25# FC=g77
26 FC=gfortran
27endif
28
29# Set CXX unless it's defined by an environment variable
30ifeq ($(origin CXX),default)
31 CXX=g++
32endif
33
34# Options: dynamic, lhapdf
35
36UNAME := $(shell uname)
37
38# Option dynamic
39
40ifdef dynamic
41 ifeq ($(UNAME), Darwin)
42 libext=dylib
43 FFLAGS+= -fno-common
44 LDFLAGS += -bundle
45 define CREATELIB
46 $(FC) -dynamiclib -undefined dynamic_lookup -o $(1) $(2)
47 endef
48 else
49 libext=so
50 FFLAGS+= -fPIC
51 LDFLAGS += -shared
52 define CREATELIB
53 $(FC) $(FFLAGS) $(LDFLAGS) -o $(1) $(2)
54 endef
55 endif
56else
57 libext=a
58 define CREATELIB
59 $(AR) cru $(1) $(2)
60 ranlib $(1)
61 endef
62endif
63
64# Option lhapdf
65
66ifdef lhapdf
67 alfas_functions=alfas_functions_lhapdf
68 lhapdf=-lLHAPDF -lstdc++
69 reweight_xsec_events_pdf_dummy=
70else
71 alfas_functions=alfas_functions
72 lhapdf=
73 reweight_xsec_events_pdf_dummy=reweight_xsec_events_pdf_dummy.o
74endif
75
76# Madloop
77ifeq ($(has_loops),true)
78 libmadloop=libMadLoop.a
79 libcuttools=-lcts
80else
81 libmadloop=
82 libcuttools=
83endif
84
85# OLP (virtuals) necessary link
86libOLP=
870
=== added file 'Template/NLO/Source/make_opts.inc'
--- Template/NLO/Source/make_opts.inc 1970-01-01 00:00:00 +0000
+++ Template/NLO/Source/make_opts.inc 2014-08-26 07:56:12 +0000
@@ -0,0 +1,86 @@
1# Environment variables
2
3ifeq ($(origin FFLAGS),undefined)
4 #FFLAGS= -O -w
5 FFLAGS = -O -fno-automatic
6 #FFLAGS+= -g -fbounds-check -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall
7endif
8
9ifeq ($(origin CXXFLAGS),undefined)
10 #CXXFLAGS= -g
11 CXXFLAGS = -O
12endif
13
14ifeq ($(origin CFLAGS),undefined)
15 #CFLAGS= -g
16 CFLAGS = -O
17endif
18
19
20
21FFLAGS+= -ffixed-line-length-132
22
23# Set FC unless it's defined by an environment variable
24ifeq ($(origin FC),default)
25# FC=g77
26 FC=gfortran
27endif
28
29# Set CXX unless it's defined by an environment variable
30ifeq ($(origin CXX),default)
31 CXX=g++
32endif
33
34# Options: dynamic, lhapdf
35
36UNAME := $(shell uname)
37
38# Option dynamic
39
40ifdef dynamic
41 ifeq ($(UNAME), Darwin)
42 libext=dylib
43 FFLAGS+= -fno-common
44 LDFLAGS += -bundle
45 define CREATELIB
46 $(FC) -dynamiclib -undefined dynamic_lookup -o $(1) $(2)
47 endef
48 else
49 libext=so
50 FFLAGS+= -fPIC
51 LDFLAGS += -shared
52 define CREATELIB
53 $(FC) $(FFLAGS) $(LDFLAGS) -o $(1) $(2)
54 endef
55 endif
56else
57 libext=a
58 define CREATELIB
59 $(AR) cru $(1) $(2)
60 ranlib $(1)
61 endef
62endif
63
64# Option lhapdf
65
66ifdef lhapdf
67 alfas_functions=alfas_functions_lhapdf
68 lhapdf=-lLHAPDF -lstdc++
69 reweight_xsec_events_pdf_dummy=
70else
71 alfas_functions=alfas_functions
72 lhapdf=
73 reweight_xsec_events_pdf_dummy=reweight_xsec_events_pdf_dummy.o
74endif
75
76# Madloop
77ifdef madloop
78 libmadloop=libMadLoop.a
79 libcuttools=-lcts %(link_tir_libs)s
80else
81 libmadloop=
82 libcuttools=
83endif
84
85# OLP (virtuals) necessary link
86libOLP=
087
=== modified file 'Template/NLO/Source/makefile'
--- Template/NLO/Source/makefile 2014-06-25 23:19:58 +0000
+++ Template/NLO/Source/makefile 2014-08-26 07:56:12 +0000
@@ -5,6 +5,7 @@
5BINDIR= ../bin/5BINDIR= ../bin/
6PDFDIR= ./PDF/6PDFDIR= ./PDF/
7CUTTOOLSDIR= ./CutTools/7CUTTOOLSDIR= ./CutTools/
8IREGIDIR= ./IREGI/src/
8STDHEPDIR= ./StdHEP/9STDHEPDIR= ./StdHEP/
910
10PROCESS= hfill.o matrix.o myamp.o 11PROCESS= hfill.o matrix.o myamp.o
@@ -80,10 +81,16 @@
8081
81CutTools: $(LIBDIR)libcts.a82CutTools: $(LIBDIR)libcts.a
8283
84IREGI: $(LIBDIR)libiregi.a
85
83$(LIBDIR)libcts.a: $(CUTTOOLSDIR)86$(LIBDIR)libcts.a: $(CUTTOOLSDIR)
84 cd $(CUTTOOLSDIR); make87 cd $(CUTTOOLSDIR); make
85 ln -sf ../Source/CutTools/includects/libcts.a $(LIBDIR)libcts.a88 ln -sf ../Source/$(CUTTOOLSDIR)includects/libcts.a $(LIBDIR)libcts.a
86 ln -sf ../Source/CutTools/includects/mpmodule.mod $(LIBDIR)mpmodule.mod89 ln -sf ../Source/$(CUTTOOLSDIR)includects/mpmodule.mod $(LIBDIR)mpmodule.mod
90
91$(LIBDIR)libiregi.a: $(IREGIDIR)
92 cd $(IREGIDIR); make
93 ln -sf ../Source/$(IREGIDIR)libiregi.a $(LIBDIR)libiregi.a
8794
88StdHEP: $(MCATNLOLIBDIR)libstdhep.a 95StdHEP: $(MCATNLOLIBDIR)libstdhep.a
8996
@@ -99,6 +106,9 @@
99cleanCT:106cleanCT:
100 cd $(CUTTOOLSDIR); make clean; cd ..107 cd $(CUTTOOLSDIR); make clean; cd ..
101108
109cleanIR:
110 cd $(IREGIDIR); make clean; cd ..
111
102cleanStdHEP:112cleanStdHEP:
103 cd $(STDHEPDIR); make clean; cd ..113 cd $(STDHEPDIR); make clean; cd ..
104114
105115
=== modified file 'Template/NLO/SubProcesses/BinothLHA.f'
--- Template/NLO/SubProcesses/BinothLHA.f 2013-12-18 07:47:00 +0000
+++ Template/NLO/SubProcesses/BinothLHA.f 2014-08-26 07:56:12 +0000
@@ -28,8 +28,10 @@
28 parameter (pi=3.1415926535897932385d0)28 parameter (pi=3.1415926535897932385d0)
29 parameter (zero=0d0)29 parameter (zero=0d0)
30 double precision p(0:3,nexternal-1)30 double precision p(0:3,nexternal-1)
31 double precision virt_wgt,born_wgt,double,single,virt_wgts(3)31 double precision virt_wgt,born_wgt,double,single
32 $ ,virt_wgts_hel(3),born_wgt_recomputed,born_wgt_recomp_direct32 $ ,born_wgt_recomputed,born_wgt_recomp_direct
33 double precision, allocatable :: virt_wgts(:,:)
34 double precision, allocatable :: virt_wgts_hel(:,:)
33 double precision mu,ao2pi,conversion,alpha_S35 double precision mu,ao2pi,conversion,alpha_S
34 save conversion36 save conversion
35 double precision fkssymmetryfactor,fkssymmetryfactorBorn,37 double precision fkssymmetryfactor,fkssymmetryfactorBorn,
@@ -39,6 +41,8 @@
39 & fkssymmetryfactorDeg,ngluons,nquarks41 & fkssymmetryfactorDeg,ngluons,nquarks
40 logical firsttime,firsttime_conversion42 logical firsttime,firsttime_conversion
41 data firsttime,firsttime_conversion /.true.,.true./43 data firsttime,firsttime_conversion /.true.,.true./
44 logical firsttime_run
45 data firsttime_run /.true./
42 double precision qes246 double precision qes2
43 common /coupl_es/ qes247 common /coupl_es/ qes2
44 integer nvtozero48 integer nvtozero
@@ -52,16 +56,18 @@
52 parameter (fksprefact=.true.)56 parameter (fksprefact=.true.)
53 integer ret_code57 integer ret_code
54 double precision madfks_single, madfks_double58 double precision madfks_single, madfks_double
55 double precision tolerance,prec_found59 double precision tolerance, prec_found
60 double precision, allocatable :: accuracies(:)
56 integer i,j61 integer i,j
57 integer nbad, nbadmax62 integer nbad, nbadmax
58 double precision target,ran2,accum63 double precision target,ran2,accum
59 external ran264 external ran2
60 double precision wgt_hel(max_bhel)65 double precision wgt_hel(max_bhel)
61 common/c_born_hel/wgt_hel66 common/c_born_hel/wgt_hel
67 integer nsqso, MLResArrayDim
62c statistics for MadLoop68c statistics for MadLoop
63 double precision avgPoleRes(2),PoleDiff(2)69 double precision avgPoleRes(2),PoleDiff(2)
64 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n170 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
65 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n171 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
66 parameter (nbadmax = 5)72 parameter (nbadmax = 5)
67 double precision pmass(nexternal)73 double precision pmass(nexternal)
@@ -86,30 +92,39 @@
86 single = 0d092 single = 0d0
87 double = 0d093 double = 0d0
88 prec_found = 1.0d094 prec_found = 1.0d0
89 if (firsttime) then95 if (firsttime_run) then
96 call get_nsqso_loop(nsqso)
97 call get_answer_dimension(MLResArrayDim)
98 allocate(accuracies(0:nsqso))
99 allocate(virt_wgts(0:3,0:MLResArrayDim))
100 allocate(virt_wgts_hel(0:3,0:MLResArrayDim))
90c Make sure that whenever in the initialisation phase, MadLoop calls101c Make sure that whenever in the initialisation phase, MadLoop calls
91c itself again to perform stability check to make sure no unstable EPS102c itself again to perform stability check to make sure no unstable EPS
92c splips unnoticed.103c splips unnoticed.
93 CALL FORCE_STABILITY_CHECK(.TRUE.)104 CALL FORCE_STABILITY_CHECK(.TRUE.)
94105 firsttime_run = .false.
106 endif
107 if (firsttime) then
95 write(*,*) "alpha_s value used for the virtuals"/108 write(*,*) "alpha_s value used for the virtuals"/
96 & /" is (for the first PS point): ", alpha_S109 & /" is (for the first PS point): ", alpha_S
97 tolerance=IRPoleCheckThreshold/10d0 ! for the pole check below110 tolerance=IRPoleCheckThreshold/10d0 ! for the pole check below
98 call sloopmatrix_thres(p, virt_wgts, tolerance, prec_found,111 call sloopmatrix_thres(p, virt_wgts, tolerance, accuracies,
99 $ ret_code)112 $ ret_code)
100 virt_wgt= virt_wgts(1)/dble(ngluons)113 prec_found = accuracies(0)
101 single = virt_wgts(2)/dble(ngluons)114 virt_wgt= virt_wgts(1,0)/dble(ngluons)
102 double = virt_wgts(3)/dble(ngluons)115 single = virt_wgts(2,0)/dble(ngluons)
116 double = virt_wgts(3,0)/dble(ngluons)
103 else117 else
104 tolerance=PrecisionVirtualAtRunTime118 tolerance=PrecisionVirtualAtRunTime
105c Just set the accuracy found to a positive value as it is not specified119c Just set the accuracy found to a positive value as it is not specified
106c once the initial pole check is performed.120c once the initial pole check is performed.
107 if (mc_hel.eq.0) then121 if (mc_hel.eq.0) then
108 call sloopmatrix_thres(p,virt_wgts,tolerance,prec_found122 call sloopmatrix_thres(p,virt_wgts,tolerance,accuracies
109 $ ,ret_code)123 $ ,ret_code)
110 virt_wgt= virt_wgts(1)/dble(ngluons)124 prec_found = accuracies(0)
111 single = virt_wgts(2)/dble(ngluons)125 virt_wgt= virt_wgts(1,0)/dble(ngluons)
112 double = virt_wgts(3)/dble(ngluons)126 single = virt_wgts(2,0)/dble(ngluons)
127 double = virt_wgts(3,0)/dble(ngluons)
113 elseif (mc_hel.eq.1) then128 elseif (mc_hel.eq.1) then
114c Use the Born helicity amplitudes to sample the helicities of the129c Use the Born helicity amplitudes to sample the helicities of the
115c virtual as flat as possible130c virtual as flat as possible
@@ -142,12 +157,13 @@
142c$$$ fillh=.true.157c$$$ fillh=.true.
143 fillh=.false.158 fillh=.false.
144 call sloopmatrixhel_thres(p,hel(ihel),virt_wgts_hel159 call sloopmatrixhel_thres(p,hel(ihel),virt_wgts_hel
145 $ ,tolerance,prec_found,ret_code)160 $ ,tolerance,accuracies,ret_code)
146 virt_wgt = virt_wgt + virt_wgts_hel(1)*dble(goodhel(ihel))161 prec_found = accuracies(0)
147 $ /volh/4d0/dble(ngluons)162 virt_wgt = virt_wgt + virt_wgts_hel(1,0)*dble(goodhel(ihel))
148 single = single + virt_wgts_hel(2)*dble(goodhel(ihel))163 $ /volh/4d0/dble(ngluons)
149 $ /volh/4d0/dble(ngluons)164 single = single + virt_wgts_hel(2,0)*dble(goodhel(ihel))
150 double = double + virt_wgts_hel(3)*dble(goodhel(ihel))165 $ /volh/4d0/dble(ngluons)
166 double = double + virt_wgts_hel(3,0)*dble(goodhel(ihel))
151 $ /volh/4d0/dble(ngluons)167 $ /volh/4d0/dble(ngluons)
152c Average over initial state helicities (and take the ngluon factor into168c Average over initial state helicities (and take the ngluon factor into
153c account)169c account)
@@ -200,7 +216,12 @@
200 if (mc_hel.ne.0) then216 if (mc_hel.ne.0) then
201c Set-up the MC over helicities. This assumes that the 'HelFilter.dat'217c Set-up the MC over helicities. This assumes that the 'HelFilter.dat'
202c exists, which should be the case when firsttime is false.218c exists, which should be the case when firsttime is false.
203 open (unit=67,file='HelFilter.dat',status='old',err=201)219 if (NHelForMCoverHels.lt.0) then
220 mc_hel=0
221 goto 203
222 endif
223 open (unit=67,file='../MadLoop5_resources/HelFilter.dat',
224 $ status='old',err=201)
204 hel(0)=0225 hel(0)=0
205 j=0226 j=0
206c optimized loop output227c optimized loop output
@@ -214,8 +235,18 @@
214 endif235 endif
215 enddo236 enddo
216 goto 203237 goto 203
238201 continue
239 write (*,*) 'Cannot do MC over hel:'/
240 & /' "HelFilter.dat" does not exist'/
241 & /' or does not have the correct format.'/
242 $ /' Change NHelForMCoverHels in FKS_params.dat '/
243 & /'to explicitly summ over them instead.'
244 stop
245c mc_hel=0
246c goto 203
247202 continue
217c non optimized loop output248c non optimized loop output
218 202 rewind(67)249 rewind(67)
219 read(67,*,err=201) (include_hel(i),i=1,max_bhel)250 read(67,*,err=201) (include_hel(i),i=1,max_bhel)
220 do i=1,max_bhel251 do i=1,max_bhel
221 if (include_hel(i).eq.'T') then252 if (include_hel(i).eq.'T') then
@@ -225,7 +256,7 @@
225 hel(j)=i256 hel(j)=i
226 endif257 endif
227 enddo258 enddo
228 203 continue259203 continue
229c Only do MC over helicities if there are NHelForMCoverHels260c Only do MC over helicities if there are NHelForMCoverHels
230c or more non-zero (independent) helicities261c or more non-zero (independent) helicities
231 if (NHelForMCoverHels.eq.-1) then262 if (NHelForMCoverHels.eq.-1) then
@@ -290,9 +321,7 @@
290 else321 else
291 n10=n10+1 ! no known ret_code (10)322 n10=n10+1 ! no known ret_code (10)
292 endif323 endif
293 if (mod(ret_code,10).ne.0) then324 n1(mod(ret_code,10))=n1(mod(ret_code,10))+1 ! unit ret code distribution
294 n1=n1+1 ! no known ret_code (1)
295 endif
296325
297c Write out the unstable, non-rescued phase-space points (MadLoop return326c Write out the unstable, non-rescued phase-space points (MadLoop return
298c code is in the four hundreds) or the ones that are found by the pole327c code is in the four hundreds) or the ones that are found by the pole
@@ -342,10 +371,6 @@
342 $ .and. ret_code/100.eq.1)virt_wgt=0d0371 $ .and. ret_code/100.eq.1)virt_wgt=0d0
343372
344 return373 return
345 201 write (*,*) 'Cannot do MC over hel:'/
346 & /' "HelFilter.dat" does not exist'/
347 & /' or does not have the correct format'
348 stop
349 end374 end
350375
351 subroutine BinothLHAInit(filename)376 subroutine BinothLHAInit(filename)
352377
=== modified file 'Template/NLO/SubProcesses/add_write_info.f'
--- Template/NLO/SubProcesses/add_write_info.f 2014-02-19 09:46:05 +0000
+++ Template/NLO/SubProcesses/add_write_info.f 2014-08-26 07:56:12 +0000
@@ -228,7 +228,7 @@
228 enddo228 enddo
229c Assume helicity summed229c Assume helicity summed
230 do i=1,nexternal230 do i=1,nexternal
231 jpart(7,i)=0231 jpart(7,i)=9
232 enddo232 enddo
233 if (firsttime2 .and. isum_hel.ne.0) then233 if (firsttime2 .and. isum_hel.ne.0) then
234 write (*,*) 'WARNING: for writing the events, no helicity '//234 write (*,*) 'WARNING: for writing the events, no helicity '//
235235
=== modified file 'Template/NLO/SubProcesses/ajob_template'
--- Template/NLO/SubProcesses/ajob_template 2014-06-12 08:52:03 +0000
+++ Template/NLO/SubProcesses/ajob_template 2014-08-26 07:56:12 +0000
@@ -7,8 +7,9 @@
7fi7fi
8}8}
99
1010if [[ -e MadLoop5_resources.tar && ! -e MadLoop5_resources ]]; then
1111 tar -xf MadLoop5_resources.tar
12fi
1213
13TAGTAGTAGTAGTAGTAGTAG for i in 1 ; do14TAGTAGTAGTAGTAGTAGTAG for i in 1 ; do
14 15
@@ -72,22 +73,17 @@
72 fi73 fi
73 if [[ ! -e symfact.dat ]] ; then74 if [[ ! -e symfact.dat ]] ; then
74 if [[ -e ../symfact.dat ]] ; then75 if [[ -e ../symfact.dat ]] ; then
75 ln -sf ../symfact.dat .76 ln -sf ../symfact.dat .
76 else77 else
77 ln -sf ../../symfact.dat . 78 ln -sf ../../symfact.dat .
78 fi79 fi
79 fi80 fi
8081
81 link1up MadLoopParams.dat
82 link1up HelFilter.dat
83 link1up LoopFilter.dat
84 link1up ColorDenomFactors.dat
85 link1up HelConfigs.dat
86 link1up ColorNumFactors.dat
87 link1up FKS_params.dat82 link1up FKS_params.dat
83# Not necessary anymore
84# link1up MadLoop5_resources
88 link1up OLE_order.olc85 link1up OLE_order.olc
89 link1up param_card.dat86 link1up param_card.dat
90 link1up libLHAPDF.so
91 87
92# check where is the basic file for the creation of input_app.txt88# check where is the basic file for the creation of input_app.txt
93# 89#
9490
=== modified file 'Template/NLO/SubProcesses/check_poles.f'
--- Template/NLO/SubProcesses/check_poles.f 2013-12-13 08:38:35 +0000
+++ Template/NLO/SubProcesses/check_poles.f 2014-08-26 07:56:12 +0000
@@ -9,10 +9,13 @@
9 double precision pi, zero9 double precision pi, zero
10 parameter (pi=3.1415926535897932385d0)10 parameter (pi=3.1415926535897932385d0)
11 parameter (zero = 0d0)11 parameter (zero = 0d0)
12 integer npoints, npointsChecked,ret_code12 integer npoints, npointsChecked
13 integer i, j, k13 integer i, j, k
14 double precision tolerance14 integer return_code
15 double precision tolerance, tolerance_default
16 double precision, allocatable :: accuracies(:)
15 double precision accuracy17 double precision accuracy
18 parameter (tolerance_default = 1d-5)
16 double precision ren_scale, energy19 double precision ren_scale, energy
17 parameter (ren_scale = 1d2)20 parameter (ren_scale = 1d2)
18 parameter (energy = 1d3)21 parameter (energy = 1d3)
@@ -23,7 +26,8 @@
23 double precision p_born(0:3,nexternal-1)26 double precision p_born(0:3,nexternal-1)
24 common/pborn/p_born27 common/pborn/p_born
25 double precision pswgt28 double precision pswgt
26 double precision virt_wgts(3), fks_double, fks_single29 double precision fks_double, fks_single
30 double precision, allocatable :: virt_wgts(:,:)
27 double precision double, single, finite31 double precision double, single, finite
28 double complex born(2)32 double complex born(2)
29 logical calculatedborn33 logical calculatedborn
@@ -46,19 +50,21 @@
46 include 'run.inc'50 include 'run.inc'
47 include 'coupl.inc'51 include 'coupl.inc'
48 include 'q_es.inc'52 include 'q_es.inc'
53 integer nsqso
49 double precision pmass(nexternal), pmass_rambo(nexternal)54 double precision pmass(nexternal), pmass_rambo(nexternal)
50 integer nfail55 integer nfail
56 logical first_time
57 data first_time/.TRUE./
51 58
52c general MadFKS parameters
53 include "FKSParams.inc"
54
55C-----59C-----
56C BEGIN CODE60C BEGIN CODE
57C----- 61C-----
58c62 if (first_time) then
59c Read general MadFKS parameters63 call get_nsqso_loop(nsqso)
60c64 allocate(virt_wgts(0:3,0:nsqso))
61 call FKSParamReader(paramFileName,.TRUE.,.FALSE.)65 allocate(accuracies(0:nsqso))
66 first_time = .false.
67 endif
6268
63 call setrun !Sets up run parameters69 call setrun !Sets up run parameters
64 call setpara('param_card.dat') !Sets up couplings and masses70 call setpara('param_card.dat') !Sets up couplings and masses
@@ -71,9 +77,9 @@
71 read(*,*) npoints77 read(*,*) npoints
72 write(*,*)'Insert the relative tolerance'78 write(*,*)'Insert the relative tolerance'
73 write(*,*)' A negative number will mean use the default one: ',79 write(*,*)' A negative number will mean use the default one: ',
74 1 IRPoleCheckThreshold 80 1 tolerance_default
75 read(*,*) tolerance81 read(*,*) tolerance
76 if (tolerance .le. zero) tolerance = IRPoleCheckThreshold82 if (tolerance .le. zero) tolerance = tolerance_default
7783
78 mu_r = ren_scale84 mu_r = ren_scale
79 qes2 = ren_scale**285 qes2 = ren_scale**2
@@ -160,12 +166,13 @@
160 enddo166 enddo
161167
162 call sborn(p_born, born)168 call sborn(p_born, born)
163 call sloopmatrix_thres(p_born,virt_wgts,tolerance,accuracy169 call sloopmatrix_thres(p_born,virt_wgts,tolerance,
164 $ ,ret_code) 170 1 accuracies,return_code)
171 accuracy=accuracies(0)
165172
166 finite = virt_wgts(1)/dble(ngluons)173 finite = virt_wgts(1,0)/dble(ngluons)
167 single = virt_wgts(2)/dble(ngluons)174 single = virt_wgts(2,0)/dble(ngluons)
168 double = virt_wgts(3)/dble(ngluons)175 double = virt_wgts(3,0)/dble(ngluons)
169176
170C If MadLoop was still in initialization mode, then skip this177C If MadLoop was still in initialization mode, then skip this
171C point for the checks178C point for the checks
172179
=== removed symlink 'Template/NLO/SubProcesses/check_sa_loop.f'
=== target was u'../../loop_material/StandAlone/SubProcesses/check_sa.f'
=== modified file 'Template/NLO/SubProcesses/driver_mintFO.f'
--- Template/NLO/SubProcesses/driver_mintFO.f 2014-07-02 13:45:42 +0000
+++ Template/NLO/SubProcesses/driver_mintFO.f 2014-08-26 07:56:12 +0000
@@ -107,7 +107,7 @@
107 common/SHevents/Hevents107 common/SHevents/Hevents
108 character*10 dum108 character*10 dum
109c statistics for MadLoop 109c statistics for MadLoop
110 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1110 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
111 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1111 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
112112
113 double precision virtual_over_born113 double precision virtual_over_born
@@ -148,7 +148,9 @@
148 nqdp=0148 nqdp=0
149 nini=0149 nini=0
150 n10=0150 n10=0
151 n1=0151 do i=0,9
152 n1(i)=0
153 enddo
152 154
153 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)155 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
154 read (lun+1,'(a130)',err=11,end=11) buf156 read (lun+1,'(a130)',err=11,end=11) buf
@@ -320,7 +322,12 @@
320 write(*,*)322 write(*,*)
321 & " Unknown return code (10): ",n10323 & " Unknown return code (10): ",n10
322 write(*,*)324 write(*,*)
323 & " Unknown return code (1): ",n1325 & " Unit return code distribution (1): "
326 do j=0,9
327 if (n1(j).ne.0) then
328 write(*,*) "#Unit ",j," = ",n1(j)
329 endif
330 enddo
324 endif331 endif
325332
326 call cpu_time(tAfter)333 call cpu_time(tAfter)
327334
=== modified file 'Template/NLO/SubProcesses/driver_mintMC.f'
--- Template/NLO/SubProcesses/driver_mintMC.f 2014-07-02 13:45:42 +0000
+++ Template/NLO/SubProcesses/driver_mintMC.f 2014-08-26 07:56:12 +0000
@@ -128,7 +128,7 @@
128 common/SHevents/Hevents128 common/SHevents/Hevents
129 character*10 dum129 character*10 dum
130c statistics for MadLoop 130c statistics for MadLoop
131 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1131 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
132 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1132 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
133133
134c timing statistics134c timing statistics
@@ -161,7 +161,9 @@
161 nqdp=0161 nqdp=0
162 nini=0162 nini=0
163 n10=0163 n10=0
164 n1=0164 do i=0,9
165 n1(i)=0
166 enddo
165 167
166 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)168 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
167 read (lun+1,'(a130)',err=11,end=11) buf169 read (lun+1,'(a130)',err=11,end=11) buf
@@ -513,7 +515,12 @@
513 write(*,*)515 write(*,*)
514 & " Unknown return code (10): ",n10516 & " Unknown return code (10): ",n10
515 write(*,*)517 write(*,*)
516 & " Unknown return code (1): ",n1518 & " Unit return code distribution (1): "
519 do j=0,9
520 if (n1(j).ne.0) then
521 write(*,*) "#Unit ",j," = ",n1(j)
522 endif
523 enddo
517 endif524 endif
518525
519 call cpu_time(tAfter)526 call cpu_time(tAfter)
520527
=== modified file 'Template/NLO/SubProcesses/driver_vegas.f'
--- Template/NLO/SubProcesses/driver_vegas.f 2013-11-28 17:05:38 +0000
+++ Template/NLO/SubProcesses/driver_vegas.f 2014-08-26 07:56:12 +0000
@@ -98,7 +98,7 @@
9898
99 integer n_mp, n_disc99 integer n_mp, n_disc
100c statistics for MadLoop 100c statistics for MadLoop
101 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1101 integer ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1(0:9)
102 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1102 common/ups_stats/ntot,nsun,nsps,nups,neps,n100,nddp,nqdp,nini,n10,n1
103103
104c general MadFKS parameters104c general MadFKS parameters
@@ -126,7 +126,9 @@
126 nqdp=0126 nqdp=0
127 nini=0127 nini=0
128 n10=0128 n10=0
129 n1=0129 do i=0,9
130 n1(i)=0
131 enddo
130132
131 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)133 open (unit=lun+1,file='../dname.mg',status='unknown',err=11)
132 read (lun+1,'(a130)',err=11,end=11) buf134 read (lun+1,'(a130)',err=11,end=11) buf
@@ -311,7 +313,12 @@
311 write(*,*)313 write(*,*)
312 & " Unknown return code (10): ",n10314 & " Unknown return code (10): ",n10
313 write(*,*)315 write(*,*)
314 & " Unknown return code (1): ",n1316 & " Unit return code distribution (1): "
317 do j=0,9
318 if (n1(j).ne.0) then
319 write(*,*) "#Unit ",j," = ",n1(j)
320 endif
321 enddo
315 endif322 endif
316323
317 if(savegrid)call initplot_dummy324 if(savegrid)call initplot_dummy
318325
=== removed file 'Template/NLO/SubProcesses/makefile_loop'
--- Template/NLO/SubProcesses/makefile_loop 2012-11-15 11:00:21 +0000
+++ Template/NLO/SubProcesses/makefile_loop 1970-01-01 00:00:00 +0000
@@ -1,33 +0,0 @@
1include ../../../Source/make_opts
2
3LIBDIR = ../../../lib/
4LOOPLIB= libMadLoop.a
5LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel
6LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) \
7 $(LIBDIR)libmodel.$(libext)
8PROCESS= loop_matrix.o improve_ps.o born_matrix.o loop_num.o CT_interface.o \
9 $(patsubst %.f,%.o,$(wildcard polynomial.f)) \
10 $(patsubst %.f,%.o,$(wildcard MadLoopParamReader.f)) \
11 $(patsubst %.f,%.o,$(wildcard helas_calls*.f)) \
12 $(patsubst %.f,%.o,$(wildcard jamp?_calls_*.f)) \
13 $(patsubst %.f,%.o,$(wildcard mp_born_amps_and_wfs.f)) \
14 $(patsubst %.f,%.o,$(wildcard mp_compute_loop_coefs.f)) \
15 $(patsubst %.f,%.o,$(wildcard mp_helas_calls*.f)) \
16 $(patsubst %.f,%.o,$(wildcard coef_construction_*.f)) \
17 $(patsubst %.f,%.o,$(wildcard loop_CT_calls_*.f)) \
18 $(patsubst %.f,%.o,$(wildcard mp_coef_construction_*.f))
19
20%.o : %.f
21 $(FC) $(FFLAGS) -c $<
22
23all: cleanlib $(LOOPLIB)
24
25$(LOOPLIB): $(PROCESS)
26 @ar cr $(LOOPLIB) $(PROCESS)
27 mv $(LOOPLIB) ../
28
29clean: cleanlib
30 @rm -f *.o
31
32cleanlib:
33 rm -f ../$(LOOPLIB) $(PROG)
340
=== added file 'Template/NLO/SubProcesses/makefile_loop.inc'
--- Template/NLO/SubProcesses/makefile_loop.inc 1970-01-01 00:00:00 +0000
+++ Template/NLO/SubProcesses/makefile_loop.inc 2014-08-26 07:56:12 +0000
@@ -0,0 +1,36 @@
1include ../../../Source/make_opts
2
3LIBDIR = ../../../lib/
4LOOPLIB= libMadLoop.a
5
6LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel %(link_tir_libs)s
7LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) \
8 $(LIBDIR)libmodel.$(libext) %(tir_libs)s
9PROCESS= loop_matrix.o improve_ps.o born_matrix.o loop_num.o CT_interface.o MadLoopCommons.o \
10 $(patsubst %(dotf)s,%(doto)s,$(wildcard polynomial.f)) \
11 $(patsubst %(dotf)s,%(doto)s,$(wildcard MadLoopParamReader.f)) \
12 $(patsubst %(dotf)s,%(doto)s,$(wildcard helas_calls*.f)) \
13 $(patsubst %(dotf)s,%(doto)s,$(wildcard jamp?_calls_*.f)) \
14 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_born_amps_and_wfs.f)) \
15 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_compute_loop_coefs.f)) \
16 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_helas_calls*.f)) \
17 $(patsubst %(dotf)s,%(doto)s,$(wildcard coef_construction_*.f)) \
18 $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_CT_calls_*.f)) \
19 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_coef_construction_*.f)) \
20 $(patsubst %(dotf)s,%(doto)s,$(wildcard TIR_interface.f)) \
21 $(patsubst %(dotf)s,%(doto)s,$(wildcard GOLEM_interface.f))
22
23%(doto)s : %(dotf)s
24 $(FC) $(FFLAGS) -c $< %(tir_include)s
25
26all: cleanlib $(LOOPLIB)
27
28$(LOOPLIB): $(PROCESS)
29 @ar cr $(LOOPLIB) $(PROCESS)
30 mv $(LOOPLIB) ../
31
32clean: cleanlib
33 @rm -f *.o
34
35cleanlib:
36 rm -f ../$(LOOPLIB) $(PROG)
037
=== modified file 'Template/NLO/SubProcesses/montecarlocounter.f'
--- Template/NLO/SubProcesses/montecarlocounter.f 2014-05-27 16:58:59 +0000
+++ Template/NLO/SubProcesses/montecarlocounter.f 2014-08-26 07:56:12 +0000
@@ -349,6 +349,7 @@
349 include "fks_powers.inc"349 include "fks_powers.inc"
350 include "madfks_mcatnlo.inc"350 include "madfks_mcatnlo.inc"
351 include "run.inc"351 include "run.inc"
352 include "../../Source/MODEL/input.inc"
352 include 'nFKSconfigs.inc'353 include 'nFKSconfigs.inc'
353 integer fks_j_from_i(nexternal,0:nexternal)354 integer fks_j_from_i(nexternal,0:nexternal)
354 & ,particle_type(nexternal),pdg_type(nexternal)355 & ,particle_type(nexternal),pdg_type(nexternal)
@@ -366,7 +367,7 @@
366 integer jpartner,mpartner367 integer jpartner,mpartner
367 logical emscasharp368 logical emscasharp
368369
369 double precision shattmp,dot,xkern,xkernazi,born_red,370 double precision shattmp,dot,xkern(2),xkernazi(2),born_red,
370 & born_red_tilde371 & born_red_tilde
371 double precision bornbars(max_bcol), bornbarstilde(max_bcol)372 double precision bornbars(max_bcol), bornbarstilde(max_bcol)
372373
@@ -452,6 +453,7 @@
452 parameter (vtf=1d0/2d0)453 parameter (vtf=1d0/2d0)
453 parameter (vca=3d0)454 parameter (vca=3d0)
454455
456 double precision g_ew,charge,qi2,qj2
455 double precision pmass(nexternal)457 double precision pmass(nexternal)
456 include "pmass.inc"458 include "pmass.inc"
457459
@@ -470,6 +472,9 @@
470 knbar = veckbarn_ev472 knbar = veckbarn_ev
471 kn0 = xp0jfks473 kn0 = xp0jfks
472 nofpartners = ipartners(0)474 nofpartners = ipartners(0)
475 g_ew=sqrt(4.d0*pi/aewm1)
476 qi2=charge(pdg_type(i_fks))**2
477 qj2=charge(pdg_type(j_fks))**2
473 tiny = 1d-4478 tiny = 1d-4
474 if (softtest.or.colltest)tiny = 1d-6479 if (softtest.or.colltest)tiny = 1d-6
475c Logical variables to control the IR limits:480c Logical variables to control the IR limits:
@@ -585,8 +590,8 @@
585c Compute MC subtraction terms590c Compute MC subtraction terms
586 if(lzone(npartner))then591 if(lzone(npartner))then
587 if(.not.flagmc)flagmc=.true.592 if(.not.flagmc)flagmc=.true.
588 if( (ileg.ge.3 .and. m_type.eq.8) .or.593 if( (ileg.ge.3 .and. (m_type.eq.8.or.m_type.eq.0)) .or.
589 & (ileg.le.2 .and. j_type.eq.8) )then594 & (ileg.le.2 .and. (j_type.eq.8.or.j_type.eq.0)) )then
590 if(i_type.eq.8)then595 if(i_type.eq.8)then
591c g --> g g ( icode = 1 )596c g --> g g ( icode = 1 )
592c go --> go g597c go --> go g
@@ -594,17 +599,17 @@
594 N_p=2599 N_p=2
595 if(isspecial)N_p=1600 if(isspecial)N_p=1
596 if(limit)then601 if(limit)then
597 xkern=(g**2/N_p)*8*vca*(1-x*(1-x))**2/(s*x**2)602 xkern(1)=(g**2/N_p)*8*vca*(1-x*(1-x))**2/(s*x**2)
598 xkernazi=-(g**2/N_p)*16*vca*(1-x)**2/(s*x**2)603 xkernazi(1)=-(g**2/N_p)*16*vca*(1-x)**2/(s*x**2)
599 elseif(non_limit)then604 elseif(non_limit)then
600 xfact=(1-yi)*(1-x)/x605 xfact=(1-yi)*(1-x)/x
601 prefact=4/(s*N_p)606 prefact=4/(s*N_p)
602 call AP_reduced(m_type,i_type,one,z(npartner),ap)607 call AP_reduced(m_type,i_type,one,z(npartner),ap)
603 ap=ap/(1-z(npartner))608 ap=ap/(1-z(npartner))
604 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)609 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
605 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)610 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)
606 Q=Q/(1-z(npartner))611 Q=Q/(1-z(npartner))
607 xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)612 xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
608 endif613 endif
609c614c
610 elseif(ileg.eq.3)then615 elseif(ileg.eq.3)then
@@ -615,59 +620,66 @@
615 prefact=2/(s*N_p)620 prefact=2/(s*N_p)
616 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)621 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
617 ap=ap/(1-z(npartner))622 ap=ap/(1-z(npartner))
618 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)623 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
619 endif624 endif
620c625c
621 elseif(ileg.eq.4)then626 elseif(ileg.eq.4)then
622 N_p=2627 N_p=2
623 if(isspecial)N_p=1628 if(isspecial)N_p=1
624 if(limit)then629 if(limit)then
625 xkern=(g**2/N_p)*( 8*vca*630 xkern(1)=(g**2/N_p)*( 8*vca*
626 & (s**2*(1-(1-x)*x)-s*(1+x)*xm12+xm12**2)**2 )/631 & (s**2*(1-(1-x)*x)-s*(1+x)*xm12+xm12**2)**2 )/
627 & ( s*(s-xm12)**2*(s*x-xm12)**2 )632 & ( s*(s-xm12)**2*(s*x-xm12)**2 )
628 xkernazi=-(g**2/N_p)*(16*vca*s*(1-x)**2)/((s-xm12)**2)633 xkernazi(1)=-(g**2/N_p)*(16*vca*s*(1-x)**2)/((s-xm12)**2)
629 elseif(non_limit)then634 elseif(non_limit)then
630 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)635 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
631 prefact=2/(s*N_p)636 prefact=2/(s*N_p)
632 call AP_reduced(j_type,i_type,one,z(npartner),ap)637 call AP_reduced(j_type,i_type,one,z(npartner),ap)
633 ap=ap/(1-z(npartner))638 ap=ap/(1-z(npartner))
634 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)639 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
635 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)640 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)
636 Q=Q/(1-z(npartner))641 Q=Q/(1-z(npartner))
637 xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)642 xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
638 endif643 endif
639 endif644 endif
640 elseif(abs(i_type).eq.3)then645 elseif(abs(i_type).eq.3)then
641c g --> q q~ ( icode = 2 )646c g --> q q~ ( icode = 2 )
647c a --> q q~
642 if(ileg.le.2)then648 if(ileg.le.2)then
643 N_p=1649 N_p=1
644 if(limit)then650 if(limit)then
645 xkern=(g**2/N_p)*4*vtf*(1-x)*((1-x)**2+x**2)/(s*x)651 xkern(1)=(g**2/N_p)*4*vtf*(1-x)*((1-x)**2+x**2)/(s*x)
652 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
646 elseif(non_limit)then653 elseif(non_limit)then
647 xfact=(1-yi)*(1-x)/x654 xfact=(1-yi)*(1-x)/x
648 prefact=4/(s*N_p)655 prefact=4/(s*N_p)
649 call AP_reduced(m_type,i_type,one,z(npartner),ap)656 call AP_reduced(m_type,i_type,one,z(npartner),ap)
650 ap=ap/(1-z(npartner))657 ap=ap/(1-z(npartner))
651 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)658 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
659 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
652 endif660 endif
653c661c
654 elseif(ileg.eq.4)then662 elseif(ileg.eq.4)then
655 N_p=2663 N_p=2
656 if(isspecial)N_p=1664 if(isspecial)N_p=1
657 if(limit)then665 if(limit)then
658 xkern=(g**2/N_p)*( 4*vtf*(1-x)*666 xkern(1)=(g**2/N_p)*( 4*vtf*(1-x)*
659 & (s**2*(1-2*(1-x)*x)-2*s*x*xm12+xm12**2) )/667 & (s**2*(1-2*(1-x)*x)-2*s*x*xm12+xm12**2) )/
660 & ( (s-xm12)**2*(s*x-xm12) )668 & ( (s-xm12)**2*(s*x-xm12) )
661 xkernazi=(g**2/N_p)*(16*vtf*s*(1-x)**2)/((s-xm12)**2)669 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
670 xkernazi(1)=(g**2/N_p)*(16*vtf*s*(1-x)**2)/((s-xm12)**2)
671 xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
662 elseif(non_limit)then672 elseif(non_limit)then
663 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)673 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
664 prefact=2/(s*N_p)674 prefact=2/(s*N_p)
665 call AP_reduced(j_type,i_type,one,z(npartner),ap)675 call AP_reduced(j_type,i_type,one,z(npartner),ap)
666 ap=ap/(1-z(npartner))676 ap=ap/(1-z(npartner))
667 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)677 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
678 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
668 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)679 call Qterms_reduced_timelike(j_type,i_type,one,z(npartner),Q)
669 Q=Q/(1-z(npartner))680 Q=Q/(1-z(npartner))
670 xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)681 xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
682 xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2*vca/vtf)
671 endif683 endif
672 endif684 endif
673 else685 else
@@ -679,21 +691,26 @@
679 & (ileg.le.2 .and. abs(j_type).eq.3) )then691 & (ileg.le.2 .and. abs(j_type).eq.3) )then
680 if(abs(i_type).eq.3)then692 if(abs(i_type).eq.3)then
681c q --> g q ( icode = 3 )693c q --> g q ( icode = 3 )
694c a --> a q
682 if(ileg.le.2)then695 if(ileg.le.2)then
683 N_p=2696 N_p=2
684 if(isspecial)N_p=1697 if(isspecial)N_p=1
685 if(limit)then698 if(limit)then
686 xkern=(g**2/N_p)*4*vcf*(1-x)*((1-x)**2+1)/(s*x**2)699 xkern(1)=(g**2/N_p)*4*vcf*(1-x)*((1-x)**2+1)/(s*x**2)
687 xkernazi=-(g**2/N_p)*16*vcf*(1-x)**2/(s*x**2)700 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
701 xkernazi(1)=-(g**2/N_p)*16*vcf*(1-x)**2/(s*x**2)
702 xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2/vcf)
688 elseif(non_limit)then703 elseif(non_limit)then
689 xfact=(1-yi)*(1-x)/x704 xfact=(1-yi)*(1-x)/x
690 prefact=4/(s*N_p)705 prefact=4/(s*N_p)
691 call AP_reduced(m_type,i_type,one,z(npartner),ap)706 call AP_reduced(m_type,i_type,one,z(npartner),ap)
692 ap=ap/(1-z(npartner))707 ap=ap/(1-z(npartner))
693 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)708 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
709 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
694 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)710 call Qterms_reduced_spacelike(m_type,i_type,one,z(npartner),Q)
695 Q=Q/(1-z(npartner))711 Q=Q/(1-z(npartner))
696 xkernazi=prefact*xfact*xjac(npartner)*Q/xi(npartner)712 xkernazi(1)=prefact*xfact*xjac(npartner)*Q/xi(npartner)
713 xkernazi(2)=xkernazi(1)*(g_ew**2/g**2)*(qi2/vcf)
697 endif714 endif
698c715c
699 elseif(ileg.eq.3)then716 elseif(ileg.eq.3)then
@@ -703,21 +720,24 @@
703 prefact=2/(s*N_p)720 prefact=2/(s*N_p)
704 call AP_reduced(j_type,i_type,one,z(npartner),ap)721 call AP_reduced(j_type,i_type,one,z(npartner),ap)
705 ap=ap/(1-z(npartner))722 ap=ap/(1-z(npartner))
706 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)723 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
724 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
707 endif725 endif
708c726c
709 elseif(ileg.eq.4)then727 elseif(ileg.eq.4)then
710 N_p=1728 N_p=1
711 if(limit)then729 if(limit)then
712 xkern=(g**2/N_p)*730 xkern(1)=(g**2/N_p)*
713 & ( 4*vcf*(1-x)*(s**2*(1-x)**2+(s-xm12)**2) )/731 & ( 4*vcf*(1-x)*(s**2*(1-x)**2+(s-xm12)**2) )/
714 & ( (s-xm12)*(s*x-xm12)**2 )732 & ( (s-xm12)*(s*x-xm12)**2 )
733 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
715 elseif(non_limit)then734 elseif(non_limit)then
716 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)735 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
717 prefact=2/(s*N_p)736 prefact=2/(s*N_p)
718 call AP_reduced(j_type,i_type,one,z(npartner),ap)737 call AP_reduced(j_type,i_type,one,z(npartner),ap)
719 ap=ap/(1-z(npartner))738 ap=ap/(1-z(npartner))
720 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)739 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
740 xkern(2)=xkern(1)*(g_ew**2/g**2)*(qi2/vcf)
721 endif741 endif
722 endif742 endif
723 elseif(i_type.eq.8)then743 elseif(i_type.eq.8)then
@@ -726,13 +746,13 @@
726 if(ileg.le.2)then746 if(ileg.le.2)then
727 N_p=1747 N_p=1
728 if(limit)then748 if(limit)then
729 xkern=(g**2/N_p)*4*vcf*(1+x**2)/(s*x)749 xkern(1)=(g**2/N_p)*4*vcf*(1+x**2)/(s*x)
730 elseif(non_limit)then750 elseif(non_limit)then
731 xfact=(1-yi)*(1-x)/x751 xfact=(1-yi)*(1-x)/x
732 prefact=4/(s*N_p)752 prefact=4/(s*N_p)
733 call AP_reduced(m_type,i_type,one,z(npartner),ap)753 call AP_reduced(m_type,i_type,one,z(npartner),ap)
734 ap=ap/(1-z(npartner))754 ap=ap/(1-z(npartner))
735 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)755 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
736 endif756 endif
737c757c
738 elseif(ileg.eq.3)then758 elseif(ileg.eq.3)then
@@ -750,13 +770,13 @@
750 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)770 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
751 endif771 endif
752 ap=ap/(1-z(npartner))772 ap=ap/(1-z(npartner))
753 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)773 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
754 endif774 endif
755c775c
756 elseif(ileg.eq.4)then776 elseif(ileg.eq.4)then
757 N_p=1777 N_p=1
758 if(limit)then778 if(limit)then
759 xkern=(g**2/N_p)*4*vcf*779 xkern(1)=(g**2/N_p)*4*vcf*
760 & ( s**2*(1+x**2)-2*xm12*(s*(1+x)-xm12) )/780 & ( s**2*(1+x**2)-2*xm12*(s*(1+x)-xm12) )/
761 & ( s*(s-xm12)*(s*x-xm12) )781 & ( s*(s-xm12)*(s*x-xm12) )
762 elseif(non_limit)then782 elseif(non_limit)then
@@ -764,7 +784,57 @@
764 prefact=2/(s*N_p)784 prefact=2/(s*N_p)
765 call AP_reduced(j_type,i_type,one,z(npartner),ap)785 call AP_reduced(j_type,i_type,one,z(npartner),ap)
766 ap=ap/(1-z(npartner))786 ap=ap/(1-z(npartner))
767 xkern=prefact*xfact*xjac(npartner)*ap/xi(npartner)787 xkern(1)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
788 endif
789 endif
790 elseif(i_type.eq.0)then
791c q --> q a ( icode = 4 )
792c sq --> sq a
793 if(ileg.le.2)then
794 N_p=1
795 if(limit)then
796 xkern(2)=(g_ew**2/N_p)*4*qj2*(1+x**2)/(s*x)
797 else
798 xfact=(1-yi)*(1-x)/x
799 prefact=4/(s*N_p)
800 call AP_reduced(m_type,i_type,one,z(npartner),ap)
801 ap=ap/(1-z(npartner))
802 xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
803 xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
804 endif
805c
806 elseif(ileg.eq.3)then
807 N_p=1
808 if(non_limit)then
809 xfact=(2-(1-x)*(1-(kn0/kn)*yj))/kn*knbar*(1-x)*(1-yj)
810 prefact=2/(s*N_p)
811 if(abs(PDG_type(j_fks)).le.6)then
812 if(shower_mc.ne.'HERWIGPP')
813 & call AP_reduced(j_type,i_type,one,z(npartner),ap)
814 if(shower_mc.eq.'HERWIGPP')
815 & call AP_reduced_massive(j_type,i_type,one,z(npartner),
816 & xi(npartner),xm12,ap)
817 else
818 call AP_reduced_SUSY(j_type,i_type,one,z(npartner),ap)
819 endif
820 ap=ap/(1-z(npartner))
821 xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
822 xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
823 endif
824c
825 elseif(ileg.eq.4)then
826 N_p=1
827 if(limit)then
828 xkern(2)=(g_ew**2/N_p)*4*qj2*
829 & ( s**2*(1+x**2)-2*xm12*(s*(1+x)-xm12) )/
830 & ( s*(s-xm12)*(s*x-xm12) )
831 else
832 xfact=(2-(1-x)*(1-yj))/xij*(1-xm12/s)*(1-x)*(1-yj)
833 prefact=2/(s*N_p)
834 call AP_reduced(j_type,i_type,one,z(npartner),ap)
835 ap=ap/(1-z(npartner))
836 xkern(2)=prefact*xfact*xjac(npartner)*ap/xi(npartner)
837 xkern(2)=xkern(2)*(g_ew**2/g**2)*(qj2/vcf)
768 endif838 endif
769 endif839 endif
770 else840 else
@@ -814,13 +884,16 @@
814884
815 born_red=0d0885 born_red=0d0
816 born_red_tilde=0d0886 born_red_tilde=0d0
817 xkern=xkern*gfactsf*wcc887 do i=1,2
818 xkernazi=xkernazi*gfactazi*gfactsf*wcc888 xkern(i)=xkern(i)*gfactsf*wcc
889 xkernazi(i)=xkernazi(i)*gfactazi*gfactsf*wcc
890 enddo
819 do cflows=1,colorflow(npartner,0)891 do cflows=1,colorflow(npartner,0)
820 born_red=born_red+bornbars(colorflow(npartner,cflows))892 born_red=born_red+bornbars(colorflow(npartner,cflows))
821 born_red_tilde=born_red_tilde+bornbarstilde(colorflow(npartner,cflows))893 born_red_tilde=born_red_tilde+bornbarstilde(colorflow(npartner,cflows))
822 enddo894 enddo
823 xmcxsec(npartner)=xkern*born_red+xkernazi*born_red_tilde895c Change here, to include also xkern(2)!
896 xmcxsec(npartner)=xkern(1)*born_red+xkernazi(1)*born_red_tilde
824 if(dampMCsubt)xmcxsec(npartner)=xmcxsec(npartner)*emscwgt(npartner)897 if(dampMCsubt)xmcxsec(npartner)=xmcxsec(npartner)*emscwgt(npartner)
825 wgt=wgt+xmcxsec(npartner)898 wgt=wgt+xmcxsec(npartner)
826899
@@ -2650,6 +2723,7 @@
2650 zm3=(1-sqrt(1-4*xi/mdip_g**2))/22723 zm3=(1-sqrt(1-4*xi/mdip_g**2))/2
26512724
2652c Dead zones2725c Dead zones
2726c IMPLEMENT QED DZ's!
2653 if(shower_mc.eq.'HERWIG6')then2727 if(shower_mc.eq.'HERWIG6')then
2654 lzone=.false.2728 lzone=.false.
2655 if(ileg.le.2.and.z**2.ge.xi)lzone=.true.2729 if(ileg.le.2.and.z**2.ge.xi)lzone=.true.
@@ -2713,3 +2787,38 @@
2713 lzone=.false.2787 lzone=.false.
2714 return2788 return
2715 end2789 end
2790
2791
2792
2793 function charge(ipdg)
2794c computes the electric charge given the pdg code
2795 implicit none
2796 integer ipdg
2797 double precision charge,tmp,dipdg
2798
2799 dipdg=dble(ipdg)
2800c quarks
2801 if(abs(dipdg).eq.1) tmp=-1d0/3d0*sign(1d0,dipdg)
2802 if(abs(dipdg).eq.2) tmp= 2d0/3d0*sign(1d0,dipdg)
2803 if(abs(dipdg).eq.3) tmp=-1d0/3d0*sign(1d0,dipdg)
2804 if(abs(dipdg).eq.4) tmp= 2d0/3d0*sign(1d0,dipdg)
2805 if(abs(dipdg).eq.5) tmp=-1d0/3d0*sign(1d0,dipdg)
2806 if(abs(dipdg).eq.6) tmp= 2d0/3d0*sign(1d0,dipdg)
2807c leptons
2808 if(abs(dipdg).eq.11)tmp=-1d0*sign(1d0,dipdg)
2809 if(abs(dipdg).eq.12)tmp= 0d0
2810 if(abs(dipdg).eq.13)tmp=-1d0*sign(1d0,dipdg)
2811 if(abs(dipdg).eq.14)tmp= 0d0
2812 if(abs(dipdg).eq.15)tmp=-1d0*sign(1d0,dipdg)
2813 if(abs(dipdg).eq.16)tmp= 0d0
2814c bosons
2815 if(dipdg.eq.21) tmp= 0d0
2816 if(dipdg.eq.22) tmp= 0d0
2817 if(dipdg.eq.23) tmp= 0d0
2818 if(abs(dipdg).eq.24)tmp= 1d0*sign(1d0,dipdg)
2819 if(dipdg.eq.25) tmp= 0d0
2820c
2821 charge=tmp
2822
2823 return
2824 end
27162825
=== modified file 'Template/NLO/SubProcesses/setcuts.f'
--- Template/NLO/SubProcesses/setcuts.f 2014-04-17 12:06:34 +0000
+++ Template/NLO/SubProcesses/setcuts.f 2014-08-26 07:56:12 +0000
@@ -409,7 +409,7 @@
409 if ( itree(1,i).eq.1 .or. itree(1,i).eq.2 ) t_channel=i409 if ( itree(1,i).eq.1 .or. itree(1,i).eq.2 ) t_channel=i
410 if (t_channel.ne.0) exit ! only s-channels410 if (t_channel.ne.0) exit ! only s-channels
411 mass_min(i)=mass_min(itree(1,i))+mass_min(itree(2,i))411 mass_min(i)=mass_min(itree(1,i))+mass_min(itree(2,i))
412 if (xm(i).lt.mass_min(i)) then412 if (xm(i).lt.mass_min(i)-vtiny) then
413 write (*,*)413 write (*,*)
414 $ 'ERROR in the determination of conflicting BW',i414 $ 'ERROR in the determination of conflicting BW',i
415 $ ,xm(i),mass_min(i)415 $ ,xm(i),mass_min(i)
416416
=== modified file 'Template/NLO/SubProcesses/sumres.py'
--- Template/NLO/SubProcesses/sumres.py 2013-12-12 13:33:17 +0000
+++ Template/NLO/SubProcesses/sumres.py 2014-08-26 07:56:12 +0000
@@ -65,8 +65,9 @@
65 tot+= proc['result']65 tot+= proc['result']
66 err+= math.pow(proc['error'],2)66 err+= math.pow(proc['error'],2)
67if dirs:67if dirs:
68 print "%d jobs did not terminate correctly " % len(dirs)68 print "%d jobs did not terminate correctly: " % len(dirs)
69 print '\n'.join(dirs)69 print '\n'.join(dirs)
70 print "The results are probably not correct. Please check the relevant log files corresponding to the above jobs for more information."
7071
71processes.sort(key = lambda proc: -proc['errorABS'])72processes.sort(key = lambda proc: -proc['errorABS'])
7273
7374
=== modified file 'Template/loop_material/Checks/StabilityCheckDriver.f'
--- Template/loop_material/Checks/StabilityCheckDriver.f 2012-11-09 19:55:19 +0000
+++ Template/loop_material/Checks/StabilityCheckDriver.f 2014-08-26 07:56:12 +0000
@@ -24,11 +24,23 @@
24! 24!
25 INTEGER I,J,K25 INTEGER I,J,K
26 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.26 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
27 REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy 27
28 INTEGER MATELEM_ARRAY_DIM
29 REAL*8 , allocatable :: MATELEM(:,:)
30
31 REAL*8 SQRTS,BORNELEM,AO2PI ! sqrt(s)= center of mass energy
28 REAL*8 PIN(0:3), POUT(0:3)32 REAL*8 PIN(0:3), POUT(0:3)
29 CHARACTER*120 BUFF(NEXTERNAL)33 CHARACTER*120 BUFF(NEXTERNAL)
30 CHARACTER*1 EX 34 CHARACTER*1 EX
31 INTEGER HELCHOICE35 INTEGER HELCHOICE
36 INTEGER SOCHOICE
37
38!
39! SAVED VARIABLES
40!
41 LOGICAL INIT
42 DATA INIT/.TRUE./
43 COMMON/INITCHECKSA/INIT
3244
33! 45!
34! EXTERNAL46! EXTERNAL
@@ -41,15 +53,22 @@
41!-----53!-----
42! 54!
43!--- INITIALIZATION CALLS55!--- INITIALIZATION CALLS
44! 56!
57 IF (INIT) THEN
58 INIT=.FALSE.
59 CALL %(proc_prefix)sGET_ANSWER_DIMENSION(MATELEM_ARRAY_DIM)
60 ALLOCATE(MATELEM(0:3,0:MATELEM_ARRAY_DIM))
61
62
45!--- Call to initialize the values of the couplings, masses and widths 63!--- Call to initialize the values of the couplings, masses and widths
46! used in the evaluation of the matrix element. The primary parameters of the64! used in the evaluation of the matrix element. The primary parameters of the
47! models are read from Cards/param_card.dat. The secondary parameters are calculated65! models are read from Cards/param_card.dat. The secondary parameters are calculated
48! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed66! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
49! in coupl.inc .67! in coupl.inc .
5068
51 call setpara('param_card.dat') !first call to setup the paramaters69 call setpara('param_card.dat') !first call to setup the paramaters
5270
71 ENDIF
53 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))72 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
5473
5574
@@ -79,28 +98,35 @@
79 if (MU_R.lt.0.0d0) then98 if (MU_R.lt.0.0d0) then
80 MU_R=SQRTS 99 MU_R=SQRTS
81 endif100 endif
82 write(*,*) "Enter Helicity tag, -1 = summed. For loops only."101 write(*,*) "Enter Helicity tag, -1 = summed."
83 read(*,*) HELCHOICE102 read(*,*) HELCHOICE
103 write(*,*) "Enter split_orders choice, -1 = all."
104 read(*,*) SOCHOICE
105 IF (SOCHOICE.NE.-1) THEN
106 CALL %(proc_prefix)sSET_COUPLINGORDERS_TARGET(SOCHOICE)
107 ENDIF
84!--- Update the couplings with the new MU_R108!--- Update the couplings with the new MU_R
85 CALL UPDATE_AS_PARAM()109 CALL UPDATE_AS_PARAM()
86! 110!
87! Now we can call the matrix element!111! Now we can call the matrix element!
88!112!
89 CALL SMATRIX(P,BORNELEM)
90 IF (HELCHOICE.EQ.-1) THEN113 IF (HELCHOICE.EQ.-1) THEN
91 CALL SLOOPMATRIX(P,MATELEM)114 CALL %(proc_prefix)sSLOOPMATRIX(P,MATELEM)
92 ELSE115 ELSE
93 CALL SLOOPMATRIXHEL(P,HELCHOICE,MATELEM)116 CALL %(proc_prefix)sSLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
94 ENDIF117 ENDIF
95 write(*,*) '##TAG#RESULT_START#TAG##'118 write(*,*) '##TAG#RESULT_START#TAG##'
96 do i=1,nexternal 119 do i=1,nexternal
97 write (*,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)120 write (*,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
98 enddo121 enddo
99 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)122 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
100 write (*,'(a4,1x,1e25.15)') 'BORN',BORNELEM123 write (*,'(a4,1x,1e25.15)') 'BORN',MATELEM(0,0)
101 write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)/BORNELEM/AO2PI124 write (*,'(a3,1x,1e25.15)') 'FIN',
102 write (*,'(a4,1x,1e25.15)') '1EPS',MATELEM(2)/BORNELEM/AO2PI125 &MATELEM(1,0)/MATELEM(0,0)/AO2PI
103 write (*,'(a4,1x,1e25.15)') '2EPS',MATELEM(3)/BORNELEM/AO2PI126 write (*,'(a4,1x,1e25.15)') '1EPS',
127 &MATELEM(2,0)/MATELEM(0,0)/AO2PI
128 write (*,'(a4,1x,1e25.15)') '2EPS',
129 &MATELEM(3,0)/MATELEM(0,0)/AO2PI
104 write (*,*) 'Export_Format Default'130 write (*,*) 'Export_Format Default'
105 write(*,*) '##TAG#RESULT_STOP#TAG##' 131 write(*,*) '##TAG#RESULT_STOP#TAG##'
106 enddo132 enddo
107133
=== modified file 'Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f'
--- Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f 2012-11-09 19:55:19 +0000
+++ Template/loop_material/Checks/StabilityCheckDriver_loop_induced.f 2014-08-26 07:56:12 +0000
@@ -24,11 +24,22 @@
24! 24!
25 INTEGER I,J,K25 INTEGER I,J,K
26 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.26 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
27 REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy 27
28 INTEGER MATELEM_ARRAY_DIM
29 REAL*8 , allocatable :: MATELEM(:,:)
30
31 REAL*8 SQRTS,BORNELEM,AO2PI ! sqrt(s)= center of mass energy
28 REAL*8 PIN(0:3), POUT(0:3)32 REAL*8 PIN(0:3), POUT(0:3)
29 CHARACTER*120 BUFF(NEXTERNAL)33 CHARACTER*120 BUFF(NEXTERNAL)
30 CHARACTER*1 EX 34 CHARACTER*1 EX
31 INTEGER HELCHOICE35 INTEGER HELCHOICE, SOCHOICE
36
37!
38! SAVED VARIABLES
39!
40 LOGICAL INIT
41 DATA INIT/.TRUE./
42 COMMON/INITCHECKSA/INIT
3243
33! 44!
34! EXTERNAL45! EXTERNAL
@@ -41,14 +52,22 @@
41!-----52!-----
42! 53!
43!--- INITIALIZATION CALLS54!--- INITIALIZATION CALLS
44! 55!
56
57 IF (INIT) THEN
58 INIT=.FALSE.
59 CALL %(proc_prefix)sGET_ANSWER_DIMENSION(MATELEM_ARRAY_DIM)
60 ALLOCATE(MATELEM(0:3,0:MATELEM_ARRAY_DIM))
61
45!--- Call to initialize the values of the couplings, masses and widths 62!--- Call to initialize the values of the couplings, masses and widths
46! used in the evaluation of the matrix element. The primary parameters of the63! used in the evaluation of the matrix element. The primary parameters of the
47! models are read from Cards/param_card.dat. The secondary parameters are calculated64! models are read from Cards/param_card.dat. The secondary parameters are calculated
48! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed65! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
49! in coupl.inc .66! in coupl.inc .
5067
51 call setpara('param_card.dat') !first call to setup the paramaters68 call setpara('param_card.dat') !first call to setup the paramaters
69
70 ENDIF
5271
53 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))72 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
5473
@@ -81,15 +100,20 @@
81 endif100 endif
82 write(*,*) "Enter Helicity tag, -1 = summed. For loops only."101 write(*,*) "Enter Helicity tag, -1 = summed. For loops only."
83 read(*,*) HELCHOICE102 read(*,*) HELCHOICE
103 write(*,*) "Enter split_orders choice, -1 = all."
104 read(*,*) SOCHOICE
105 IF (SOCHOICE.NE.-1) THEN
106 CALL %(proc_prefix)sSET_COUPLINGORDERS_TARGET(SOCHOICE)
107 ENDIF
84!--- Update the couplings with the new MU_R108!--- Update the couplings with the new MU_R
85 CALL UPDATE_AS_PARAM()109 CALL UPDATE_AS_PARAM()
86! 110!
87! Now we can call the matrix element!111! Now we can call the matrix element!
88!112!
89 IF (HELCHOICE.EQ.-1) THEN113 IF (HELCHOICE.EQ.-1) THEN
90 CALL SLOOPMATRIX(P,MATELEM)114 CALL %(proc_prefix)sSLOOPMATRIX(P,MATELEM)
91 ELSE115 ELSE
92 CALL SLOOPMATRIXHEL(P,HELCHOICE,MATELEM)116 CALL %(proc_prefix)sSLOOPMATRIXHEL(P,HELCHOICE,MATELEM)
93 ENDIF117 ENDIF
94 write(*,*) '##TAG#RESULT_START#TAG##'118 write(*,*) '##TAG#RESULT_START#TAG##'
95 do i=1,nexternal 119 do i=1,nexternal
@@ -97,7 +121,7 @@
97 enddo121 enddo
98 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)122 write (*,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
99 write (*,'(a4,1x,1e25.15)') 'BORN',0.0d0123 write (*,'(a4,1x,1e25.15)') 'BORN',0.0d0
100 write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)124 write (*,'(a3,1x,1e25.15)') 'FIN',MATELEM(1,0)
101 write (*,'(a4,1x,1e25.15)') '1EPS',0.0d0125 write (*,'(a4,1x,1e25.15)') '1EPS',0.0d0
102 write (*,'(a4,1x,1e25.15)') '2EPS',0.0d0126 write (*,'(a4,1x,1e25.15)') '2EPS',0.0d0
103 write (*,*) 'Export_Format LoopInduced'127 write (*,*) 'Export_Format LoopInduced'
104128
=== added directory 'Template/loop_material/StandAlone/Cards'
=== removed directory 'Template/loop_material/StandAlone/Cards'
=== renamed file 'Template/loop_material/StandAlone/Cards/MadLoopParams.dat' => 'Template/loop_material/StandAlone/Cards/MadLoopParams.dat'
--- Template/loop_material/StandAlone/Cards/MadLoopParams.dat 2013-05-01 16:26:01 +0000
+++ Template/loop_material/StandAlone/Cards/MadLoopParams.dat 2014-08-26 07:56:12 +0000
@@ -2,6 +2,37 @@
2! The name of the variable to define must start with the '#' sign and then2! The name of the variable to define must start with the '#' sign and then
3! the value should be put immediately on the next line.3! the value should be put immediately on the next line.
44
5!
6#MLReductionLib
71|4|3|2
8! Default :: 1|4|3|2
9! The tensor integral reduction library.The current choices are:
10! 1 | CutTools
11! 2 | PJFry++
12! 3 | IREGI
13! 4 | Golem95
14! One can use the combinations to reduce integral,e.g.
15! 1|2|3 means first use CutTools, if it is not stable, use PJFry++,
16! if it is still unstable, use IREGI. If it failed, use QP of CutTools.
17!
18
19! =================================================================================
20! The parameters below set the parameters for IREGI
21! =================================================================================
22
23#IREGIMODE
242
25! Default :: 2
26! IMODE=0, IBP reduction
27! IMODE=1, PaVe reduction
28! IMODE=2, PaVe reduction with stablility improved by IBP reduction
29
30#IREGIRECY
31.TRUE.
32! Default :: .TRUE.
33! Use RECYCLING OR NOT IN IREGI
34!
35
5! =================================================================================36! =================================================================================
6! The parameters below set the stability checks of MadLoop at run time37! The parameters below set the stability checks of MadLoop at run time
7! =================================================================================38! =================================================================================
@@ -78,9 +109,10 @@
78! The parameters below set two CutTools internal parameters accessible to the user. 109! The parameters below set two CutTools internal parameters accessible to the user.
79! =================================================================================110! =================================================================================
80111
81! Choose here what library to chose for CutTools to compute the scalar loops of the112! Choose here what library to chose for CutTools/TIR to compute the scalar loops of the
82! master integral basis. The choices are as follows:113! master integral basis. The choices are as follows:
83! 2 | AVH114! (Does not apply for Golem95, where OneLOop is always used)
115! 2 | OneLOop
84! 3 | QCDLoop116! 3 | QCDLoop
85#CTLoopLibrary117#CTLoopLibrary
8621182
@@ -131,6 +163,13 @@
1311.0d-91631.0d-9
132! Default :: 1.0d-9164! Default :: 1.0d-9
133165
166! Setting the on-shell threshold for deciding whether the invariant variables
167! of external momenta are on-shell or not. It will only be used in constructing
168! s-matrix in Golem95.
169#OSThres
1701.0d-8
171! Default :: 1.0d-8
172
134! The setting below is recommended to be on as it allows to systematically used the 173! The setting below is recommended to be on as it allows to systematically used the
135! first PS point thrown at ML5 to be used for making sure that the helicity filter174! first PS point thrown at ML5 to be used for making sure that the helicity filter
136! read from HelFilter.dat is consistent as it might be no longer up to date with175! read from HelFilter.dat is consistent as it might be no longer up to date with
@@ -139,6 +178,14 @@
139.TRUE.178.TRUE.
140! Default :: .TRUE.179! Default :: .TRUE.
141180
181! This decides whether to write out the helicity and loop filters to the files
182! HelFilters.dat and LoopFilters.dat to save them for future runs. It usually
183! preferable but sometimes not desired because of the need of threadlocks in the
184! context of mpi parallelization. So it can be turned off here in such cases.
185#WriteOutFilters
186.TRUE.
187! Default :: .TRUE.
188
142! Some loop contributions may be zero for some helicities which are however189! Some loop contributions may be zero for some helicities which are however
143! contributing. In order to save their computing time, you can chose here to try190! contributing. In order to save their computing time, you can chose here to try
144! to filter them out. The gain is typically minimal, so it is turned off by default.191! to filter them out. The gain is typically minimal, so it is turned off by default.
@@ -146,7 +193,7 @@
146.FALSE.193.FALSE.
147! Default :: .FALSE.194! Default :: .FALSE.
148195
149! This decides wether consecutive consistency for the loop filtering setup is also 196! This decides whether consecutive consistency for the loop filtering setup is also
150! required.197! required.
151#LoopInitStartOver198#LoopInitStartOver
152.FALSE.199.FALSE.
153200
=== added directory 'Template/loop_material/StandAlone/SubProcesses/MadLoop5_resources'
=== added file 'Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f'
--- Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f 1970-01-01 00:00:00 +0000
+++ Template/loop_material/StandAlone/SubProcesses/MadLoopCommons.f 2014-08-26 07:56:12 +0000
@@ -0,0 +1,341 @@
1 subroutine joinPath(str1,str2,path)
2
3 character*(*) str1
4 character*(*) str2
5 character*(*) path
6
7 integer i,j,k
8
9 i =1
10 do while (i.le.LEN(str1))
11 if(str1(i:i).eq.' ') goto 800
12 path(i:i) = str1(i:i)
13 i=i+1
14 enddo
15800 continue
16 j=1
17 do while (j.le.LEN(str2))
18 if(str2(j:j).eq.' ') goto 801
19 path(i-1+j:i-1+j) = str2(j:j)
20 j=j+1
21 enddo
22801 continue
23 k=i+j-1
24 do while (k.le.LEN(path))
25 path(k:k) = ' '
26 k=k+1
27 enddo
28
29 return
30
31 end
32
33 subroutine setMadLoopPath(path)
34
35 character(512) path
36 character(512) dummy
37
38 character(512) prefix,fpath
39 character(17) nameToCheck
40 parameter (nameToCheck='MadLoopParams.dat')
41
42 LOGICAL ML_INIT
43 DATA ML_INIT/.TRUE./
44 common/ML_INIT/ML_INIT
45
46 LOGICAL CTINIT,TIRINIT,GOLEMINIT
47 DATA CTINIT,TIRINIT,GOLEMINIT/.TRUE.,.TRUE.,.TRUE./
48 COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT, GOLEMINIT
49
50 character(512) MLPath
51 data MLPath/'[[NA]]'/
52 common/MLPATH/MLPath
53
54 integer i
55
56C Just a dummy call for LD to pick up this function
57C when creating the BLHA2 dynamic library
58 dummy = ' '
59 CALL SETPARA2(dummy)
60
61 if (LEN(path).ge.4 .and. path(1:4).eq.'auto') then
62 if (MLPath(1:6).eq.'[[NA]]') then
63C Try to automatically find the path
64 prefix='./'
65 call joinPath(prefix,nameToCheck,fpath)
66 OPEN(1, FILE=fpath, ERR=1, STATUS='OLD',
67 $ ACTION='READ')
68 MLPath=prefix
69 goto 10
701 continue
71 close(1)
72 prefix='./MadLoop5_resources/'
73 call joinPath(prefix,nameToCheck,fpath)
74 OPEN(1, FILE=fpath, ERR=2, STATUS='OLD',
75 $ ACTION='READ')
76 MLPath=prefix
77 goto 10
782 continue
79 close(1)
80 prefix='../MadLoop5_resources/'
81 call joinPath(prefix,nameToCheck,fpath)
82 OPEN(1, FILE=fpath, ERR=66, STATUS='OLD',
83 $ ACTION='READ')
84 MLPath=prefix
85 goto 10
8666 continue
87 close(1)
88c We could not automatically find the auxiliary files
89 write(*,*) '==='
90 write(*,*) 'ERROR: MadLoop5 could not automatically find',
91 $ ' the file MadLoopParams.dat.'
92 write(*,*) '==='
93 write(*,*) '(Try using <CALL setMadLoopPath(/my/path)>',
94 $ ' (before your first call to MadLoop) in order to',
95 $ ' set the directory where this file is located as well as',
96 $ ' other auxiliary files, such as <xxx>_ColorNumFactors.dat',
97 $ ', <xxx>_ColorDenomFactors.dat, etc..)'
98 stop
9910 continue
100 close(1)
101 return
102 endif
103 else
104C Use the one specified by the user
105C Make sure there is a separator added
106 i =1
107 do while (i.le.LEN(path) .and. path(i:i).ne.' ')
108 i=i+1
109 enddo
110 if (path(i-1:i-1).ne.'/') then
111 path(i:i) = '/'
112 endif
113 MLpath=path
114 endif
115
116C Check that the FilePath set is correct
117 call joinPath(MLPath,nameToCheck,fpath)
118 OPEN(1, FILE=fpath, ERR=3, STATUS='OLD',
119 $ACTION='READ')
120 goto 11
1213 continue
122 close(1)
123 write(*,*) '==='
124 write(*,*) 'ERROR: The MadLoop5 auxiliary files could not',
125 $' be found in ',MLPath
126 write(*,*) '==='
127 stop
12811 continue
129 close(1)
130
131 end
132
133 INTEGER FUNCTION SET_RET_CODE_U(MLRed,DOING_QP,STABLE)
134C
135C This functions returns the value of U
136C
137C
138C U == 0
139C Not stable.
140C U == 1
141C Stable with CutTools in double precision.
142C U == 2
143C Stable with PJFry++.
144C U == 3
145C Stable with IREGI.
146C U == 4
147C Stable with Golem95
148C U == 9
149C Stable with CutTools in quadruple precision.
150C
151 IMPLICIT NONE
152C
153C CONSTANTS
154C
155C
156C ARGUMENTS
157C
158 INTEGER MLRed
159 LOGICAL DOING_QP,STABLE
160C
161C LOCAL VARIABLES
162C
163C
164C FUNCTION
165C
166C
167C BEGIN CODE
168C
169 IF(.NOT.STABLE)THEN
170 SET_RET_CODE_U=0
171 RETURN
172 ENDIF
173 IF(DOING_QP)THEN
174 IF(MLRed.EQ.1)THEN
175 SET_RET_CODE_U=9
176 RETURN
177 ELSE
178 STOP 'Only CutTools can use quardruple precision'
179 ENDIF
180 ENDIF
181 IF(MLRed.GE.1.AND.MLRed.LE.4)THEN
182 SET_RET_CODE_U=MLRed
183 ELSE
184 STOP 'Only CutTools,PJFry++,IREGI,Golem95 are available'
185 ENDIF
186 END
187
188 SUBROUTINE DETECT_LOOPLIB(LIBNUM,NLOOPLINE,RANK,complex_mass,
189 $ LPASS)
190C
191C DETECT WHICH LOOP LIB PASSED
192C
193 IMPLICIT NONE
194C
195C CONSTANTS
196C
197C
198C ARGUMENTS
199C
200 INTEGER LIBNUM,NLOOPLINE,RANK
201 LOGICAL complex_mass,LPASS
202C
203C LOCAL VARIABLES
204C
205C
206C GLOBAL VARIABLES
207C
208C ----------
209C BEGIN CODE
210C ----------
211 IF(LIBNUM.EQ.1)THEN
212C CutTools
213 CALL DETECT_CUTTOOLS(NLOOPLINE,RANK,complex_mass,LPASS)
214 ELSEIF(LIBNUM.EQ.2)THEN
215C PJFry++
216 CALL DETECT_PJFRY(NLOOPLINE,RANK,complex_mass,LPASS)
217 ELSEIF(LIBNUM.EQ.3)THEN
218C IREGI
219 CALL DETECT_IREGI(NLOOPLINE,RANK,complex_mass,LPASS)
220 ELSEIF(LIBNUM.EQ.4)THEN
221C Golem95
222 CALL DETECT_GOLEM(NLOOPLINE,RANK,complex_mass,LPASS)
223 ELSE
224 STOP 'ONLY CUTTOOLS,PJFry++,IREGI,Golem95 are provided'
225 ENDIF
226 RETURN
227 END
228
229 SUBROUTINE DETECT_CUTTOOLS(NLOOPLINE,RANK,complex_mass,LPASS)
230C
231C DETECT THE CUTTOOLS CAN BE USED OR NOT
232C
233 IMPLICIT NONE
234C
235C CONSTANTS
236C
237C
238C ARGUMENTS
239C
240 INTEGER NLOOPLINE,RANK
241 LOGICAL complex_mass,LPASS
242C
243C LOCAL VARIABLES
244C
245C
246C GLOBAL VARIABLES
247C
248C ----------
249C BEGIN CODE
250C ----------
251 LPASS=.TRUE.
252 IF(NLOOPLINE+1.LT.RANK)LPASS=.FALSE.
253 RETURN
254 END
255
256 SUBROUTINE DETECT_PJFRY(NLOOPLINE,RANK,complex_mass,LPASS)
257C
258C DETECT THE PJFRY++ CAN BE USED OR NOT
259C
260 IMPLICIT NONE
261C
262C CONSTANTS
263C
264C
265C ARGUMENTS
266C
267 INTEGER NLOOPLINE,RANK
268 LOGICAL complex_mass,LPASS
269C
270C LOCAL VARIABLES
271C
272C
273C GLOBAL VARIABLES
274C
275C ----------
276C BEGIN CODE
277C ----------
278 LPASS=.TRUE.
279 IF(NLOOPLINE.LT.RANK.OR.RANK.GT.5
280 $.OR.NLOOPLINE.GT.5.OR.complex_mass.OR.NLOOPLINE.eq.1) THEN
281 LPASS=.FALSE.
282 ENDIF
283 RETURN
284 END
285
286 SUBROUTINE DETECT_IREGI(NLOOPLINE,RANK,complex_mass,LPASS)
287C
288C DETECT THE IREGI CAN BE USED OR NOT
289C
290 IMPLICIT NONE
291C
292C CONSTANTS
293C
294C
295C ARGUMENTS
296C
297 INTEGER NLOOPLINE,RANK
298 LOGICAL complex_mass,LPASS
299C
300C LOCAL VARIABLES
301C
302C
303C GLOBAL VARIABLES
304C
305C ----------
306C BEGIN CODE
307C ----------
308 LPASS=.TRUE.
309 IF(NLOOPLINE.GE.7.OR.RANK.GE.7)LPASS=.FALSE.
310 RETURN
311 END
312
313 SUBROUTINE DETECT_GOLEM(NLOOPLINE,RANK,complex_mass,LPASS)
314C
315C DETECT THE Golem95 CAN BE USED OR NOT
316C
317 IMPLICIT NONE
318C
319C CONSTANTS
320C
321C
322C ARGUMENTS
323C
324 INTEGER NLOOPLINE,RANK
325 LOGICAL complex_mass,LPASS
326C
327C LOCAL VARIABLES
328C
329C
330C GLOBAL VARIABLES
331C
332C ----------
333C BEGIN CODE
334C ----------
335
336 LPASS=.TRUE.
337 IF(NLOOPLINE.GE.7.OR.RANK.GE.7.OR.NLOOPLINE.LE.1)LPASS=.FALSE.
338 IF(NLOOPLINE.LE.5.AND.RANK.GT.NLOOPLINE+1)LPASS=.FALSE.
339 IF(NLOOPLINE.EQ.6.AND.RANK.GT.NLOOPLINE)LPASS=.FALSE.
340 RETURN
341 END
0342
=== modified file 'Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f'
--- Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f 2013-05-01 16:26:01 +0000
+++ Template/loop_material/StandAlone/SubProcesses/MadLoopParamReader.f 2014-08-26 07:56:12 +0000
@@ -2,10 +2,14 @@
22
3 implicit none3 implicit none
44
5 CHARACTER*64 fileName, buff, buff2, mode5 CHARACTER(512) fileName, buff, buff2, mode
6 CHARACTER*10 MLReductionLib_str,MLReductionLib_str_save
7 CHARACTER*2 MLReductionLib_char
8 INTEGER MLRed,i,j,k
9
6 include "MadLoopParams.inc"10 include "MadLoopParams.inc"
711
8 logical printParam, couldRead, paramPrinted12 logical printParam, couldRead, paramPrinted, find
9 data paramPrinted/.FALSE./13 data paramPrinted/.FALSE./
10 couldRead=.False.14 couldRead=.False.
11! Default parameters15! Default parameters
@@ -68,6 +72,12 @@
68 stop 'ZeroThres must be > 0'72 stop 'ZeroThres must be > 0'
69 endif73 endif
7074
75 else if (buff .eq. '#OSThres') then
76 read(666,*,end=999) OSThres
77 if (OSThres.le.0.0d0) then
78 stop 'OSThres must be > 0'
79 endif
80
71 else if (buff .eq. '#CheckCycle') then81 else if (buff .eq. '#CheckCycle') then
72 read(666,*,end=999) CheckCycle82 read(666,*,end=999) CheckCycle
73 if (CheckCycle.lt.1) then83 if (CheckCycle.lt.1) then
@@ -92,13 +102,65 @@
92 else if (buff .eq. '#HelInitStartOver') then102 else if (buff .eq. '#HelInitStartOver') then
93 read(666,*,end=999) HelInitStartOver103 read(666,*,end=999) HelInitStartOver
94104
105 else if (buff .eq. '#WriteOutFilters') then
106 read(666,*,end=999) WriteOutFilters
107
95 else if (buff .eq. '#ImprovePSPoint') then108 else if (buff .eq. '#ImprovePSPoint') then
96 read(666,*,end=999) ImprovePSPoint109 read(666,*,end=999) ImprovePSPoint
97 if (ImprovePSPoint .lt. -1 .or.110 if (ImprovePSPoint .lt. -1 .or.
98 & ImprovePSPoint .gt. 2 ) then111 & ImprovePSPoint .gt. 2 ) then
99 stop 'ImprovePSPoint must be >= -1 and <=2.'112 stop 'ImprovePSPoint must be >= -1 and <=2.'
100 endif113 endif
101114 else if (buff .eq. '#MLReductionLib') then
115 read(666,*,end=999) MLReductionLib_str
116 MLReductionLib(1:5)=0
117 MLReductionLib_str_save=MLReductionLib_str
118 j=0
119 DO
120 i=index(MLReductionLib_str,'|')
121 IF(i.EQ.0)THEN
122 MLReductionLib_char=MLReductionLib_str
123 ELSE
124 MLReductionLib_char=MLReductionLib_str(:i-1)
125 ENDIF
126 IF(MLReductionLib_char.EQ.'1 ')THEN
127 MLRed=1
128 ELSEIF(MLReductionLib_char.EQ.'2 ')THEN
129 MLRed=2
130 ELSEIF(MLReductionLib_char.EQ.'3 ')THEN
131 MLRed=3
132 ELSEIF(MLReductionLib_char.EQ.'4 ')THEN
133 MLRed=4
134 ELSE
135 PRINT *, 'MLReductionLib is wrong: '//
136 $ TRIM(MLReductionLib_str_save)
137 STOP
138 ENDIF
139 find=.FALSE.
140 DO k=1,j
141 IF(MLReductionLib(k).EQ.MLRed)THEN
142 find=.TRUE.
143 EXIT
144 ENDIF
145 ENDDO
146 IF(.NOT.find)THEN
147 j=j+1
148 MLReductionLib(j)=MLRed
149 ENDIF
150 IF(i.EQ.0)THEN
151 EXIT
152 ELSE
153 MLReductionLib_str=MLReductionLib_str(i+1:)
154 ENDIF
155 ENDDO
156 else if (buff .eq. '#IREGIRECY') then
157 read(666,*,end=999) IREGIRECY
158 else if (buff .eq. '#IREGIMODE') then
159 read(666,*,end=999) IREGIMODE
160 if (IREGIMODE .lt. 0 .or.
161 & IREGIMODE .gt.2) then
162 stop 'IREGIMODE must be >=0 and <=2.'
163 endif
102 else164 else
103 write(*,*) 'The parameter name ',buff(2:),165 write(*,*) 'The parameter name ',buff(2:),
104 &' is not reckognized.'166 &' is not reckognized.'
@@ -136,6 +198,10 @@
136 endif198 endif
137 write(*,*)199 write(*,*)
138 & '==============================================================='200 & '==============================================================='
201 write(*,*) ' > MLReductionLib = '
202 $ //TRIM(MLReductionLib_str_save)
203 write(*,*) ' > IREGIMODE = ',IREGIMODE
204 write(*,*) ' > IREGIRECY = ',IREGIRECY
139 write(*,*) ' > CTModeRun = ',CTModeRun205 write(*,*) ' > CTModeRun = ',CTModeRun
140 write(*,*) ' > MLStabThres = ',MLStabThres206 write(*,*) ' > MLStabThres = ',MLStabThres
141 write(*,*) ' > NRotations_DP = ',NRotations_DP207 write(*,*) ' > NRotations_DP = ',NRotations_DP
@@ -152,6 +218,8 @@
152 write(*,*) ' > LoopInitStartOver = ',LoopInitStartOver218 write(*,*) ' > LoopInitStartOver = ',LoopInitStartOver
153 write(*,*) ' > HelInitStartOver = ',HelInitStartOver219 write(*,*) ' > HelInitStartOver = ',HelInitStartOver
154 write(*,*) ' > ZeroThres = ',ZeroThres220 write(*,*) ' > ZeroThres = ',ZeroThres
221 write(*,*) ' > OSThres = ',OSThres
222 write(*,*) ' > WriteOutFilters = ',WriteOutFilters
155 write(*,*)223 write(*,*)
156 & '==============================================================='224 & '==============================================================='
157 paramPrinted=.TRUE.225 paramPrinted=.TRUE.
@@ -167,6 +235,10 @@
167 235
168 include "MadLoopParams.inc"236 include "MadLoopParams.inc"
169237
238 MLReductionLib(1)=1
239 MLReductionLib(2:5)=0
240 IREGIMODE=2
241 IREGIRECY=.TRUE.
170 CTModeInit=0242 CTModeInit=0
171 CTModeRun=-1243 CTModeRun=-1
172 NRotations_DP=1244 NRotations_DP=1
@@ -180,7 +252,9 @@
180 DoubleCheckHelicityFilter=.True.252 DoubleCheckHelicityFilter=.True.
181 LoopInitStartOver=.False.253 LoopInitStartOver=.False.
182 HelInitStartOver=.False.254 HelInitStartOver=.False.
255 WriteOutFilters=.True.
183 ZeroThres=1.0d-9256 ZeroThres=1.0d-9
257 OSThres=1.0d-13
184 ImprovePSPoint=2258 ImprovePSPoint=2
185259
186 end260 end
187261
=== modified file 'Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc'
--- Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc 2013-05-01 16:26:01 +0000
+++ Template/loop_material/StandAlone/SubProcesses/MadLoopParams.inc 2014-08-26 07:56:12 +0000
@@ -6,14 +6,16 @@
6!====================================================================6!====================================================================
7!7!
8 integer CTModeInit,CTModeRun,CheckCycle,MaxAttempts,8 integer CTModeInit,CTModeRun,CheckCycle,MaxAttempts,
9 &CTLoopLibrary,NRotations_DP,NRotations_QP,ImprovePSPoint9 &CTLoopLibrary,NRotations_DP,NRotations_QP,ImprovePSPoint,
10 &MLReductionLib(5),IREGIMODE
1011
11 real*8 MLStabThres,CTStabThres,ZeroThres12 real*8 MLStabThres,CTStabThres,ZeroThres,OSThres
1213
13 logical UseLoopFilter,LoopInitStartOver,DoubleCheckHelicityFilter14 logical UseLoopFilter,LoopInitStartOver,DoubleCheckHelicityFilter
14 logical HelInitStartOver15 logical HelInitStartOver,IREGIRECY,WriteOutFilters
1516
16 common /MADLOOP/CTModeInit,CTModeRun,NRotations_DP,NRotations_QP,17 common /MADLOOP/CTModeInit,CTModeRun,NRotations_DP,NRotations_QP,
17 &ImprovePSPoint,CheckCycle, MaxAttempts,UseLoopFilter,MLStabThres,18 &ImprovePSPoint,CheckCycle, MaxAttempts,UseLoopFilter,MLStabThres,
18 &CTStabThres,CTLoopLibrary,LoopInitStartOver,19 &CTStabThres,CTLoopLibrary,LoopInitStartOver,
19 &DoubleCheckHelicityFilter,ZeroThres,HelInitStartOver20 &DoubleCheckHelicityFilter,ZeroThres,OSThres,HelInitStartOver,
21 &MLReductionLib,IREGIMODE,IREGIRECY,WriteOutFilters
2022
=== removed file 'Template/loop_material/StandAlone/SubProcesses/check_sa.f'
--- Template/loop_material/StandAlone/SubProcesses/check_sa.f 2013-12-13 07:04:16 +0000
+++ Template/loop_material/StandAlone/SubProcesses/check_sa.f 1970-01-01 00:00:00 +0000
@@ -1,583 +0,0 @@
1 PROGRAM DRIVER
2!**************************************************************************
3! THIS IS THE DRIVER FOR CHECKING THE STANDALONE MATRIX ELEMENT.
4! IT USES A SIMPLE PHASE SPACE GENERATOR
5! Fabio Maltoni - 3rd Febraury 2007
6!**************************************************************************
7 IMPLICIT NONE
8!
9! CONSTANTS
10!
11 REAL*8 ZERO
12 PARAMETER (ZERO=0D0)
13
14 LOGICAL READPS
15 PARAMETER (READPS = .FALSE.)
16
17 INTEGER NPSPOINTS
18 PARAMETER (NPSPOINTS = 4)
19
20!
21! INCLUDE FILES
22!
23!--- the include file with the values of the parameters and masses
24 INCLUDE "coupl.inc"
25!--- integer nexternal ! number particles (incoming+outgoing) in the me
26 INCLUDE "nexternal.inc"
27!--- particle masses
28 REAL*8 PMASS(NEXTERNAL)
29!--- integer n_max_cg
30 INCLUDE "ngraphs.inc" !how many diagrams (could be useful to know...)
31
32!
33! LOCAL
34!
35 INTEGER I,J,K
36 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
37 REAL*8 SQRTS,MATELEM(3),BORNELEM,AO2PI ! sqrt(s)= center of mass energy
38 REAL*8 PIN(0:3), POUT(0:3)
39 CHARACTER*120 BUFF(NEXTERNAL)
40 REAL*8 PREC_FOUND
41 INTEGER RETURNCODE, HUNDREDS, TENS, UNITS
42!
43! EXTERNAL
44!
45 REAL*8 DOT
46 EXTERNAL DOT
47
48!-----
49! BEGIN CODE
50!-----
51!
52!--- INITIALIZATION CALLS
53!
54!--- Call to initialize the values of the couplings, masses and widths
55! used in the evaluation of the matrix element. The primary parameters of the
56! models are read from Cards/param_card.dat. The secondary parameters are calculated
57! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
58! in coupl.inc .
59
60 call setpara('param_card.dat') !first call to setup the paramaters
61 include "pmass.inc" !set up masses
62
63 AO2PI=G**2/(8.D0*(3.14159265358979323846d0**2))
64
65 write(*,*) 'AO2PI=',AO2PI
66!--- Now use a simple multipurpose PS generator (RAMBO) just to get a
67! RANDOM set of four momenta of given masses pmass(i) to be used to evaluate
68! the madgraph matrix-element.
69! Alternatevely, here the user can call or set the four momenta at his will, see below.
70!
71 IF(nincoming.EQ.1) THEN
72 SQRTS=PMASS(1)
73 ELSE
74 SQRTS=1000d0 !CMS energy in GEV
75 ENDIF
76
77 call printout()
78
79 do K=1,NPSPOINTS
80
81 if(READPS) then
82 open(967, file="PS.input", err=976, status='OLD', action='READ')
83 do i=1,NExternal
84 read(967,*,end=978) P(0,i),P(1,i),P(2,i),P(3,i)
85 enddo
86 goto 978
87 976 continue
88 stop 'Could not read the PS.input phase-space point.'
89 978 continue
90 close(967)
91 else
92 if ((nincoming.eq.2).and.((nexternal - nincoming .eq.1))) then
93 if (pmass(3).eq.0.0d0) then
94 stop 'Cannot generate 2>1 kin. config. with m3=0.0d0'
95 else
96 ! deal with the case of only one particle in the final
97 ! state
98 p(0,1) = pmass(3)/2d0
99 p(1,1) = 0d0
100 p(2,1) = 0d0
101 p(3,1) = pmass(3)/2d0
102 if (pmass(1).GT.0d0) then
103 p(3,1) = dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
104 endif
105 p(0,2) = pmass(3)/2d0
106 p(1,2) = 0d0
107 p(2,2) = 0d0
108 p(3,2) = -pmass(3)/2d0
109 if (pmass(2) > 0d0) then
110 p(3,2) = -dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
111 endif
112 p(0,3) = pmass(3)
113 p(1,3) = 0d0
114 p(2,3) = 0d0
115 p(3,3) = 0d0
116 endif
117 else
118 CALL GET_MOMENTA(SQRTS,PMASS,P)
119 endif
120 endif
121
122 do i=0,3
123 PIN(i)=0.0d0
124 do j=1,nincoming
125 PIN(i)=PIN(i)+p(i,j)
126 enddo
127 enddo
128
129!--- In standalone mode, always use sqrt_s as the renormalization
130! scale.
131 SQRTS=dsqrt(dabs(DOT(PIN(0),PIN(0))))
132 MU_R=SQRTS
133
134!--- Update the couplings with the new MU_R
135 CALL UPDATE_AS_PARAM()
136
137!-- Possible tweaks to the run
138! CALL FORCE_STABILITY_CHECK(.TRUE.)
139
140!
141! Now we can call the matrix element!
142!
143 CALL SMATRIX(P,BORNELEM)
144 CALL SLOOPMATRIX_THRES(P,MATELEM,
145 &-1.0d0,PREC_FOUND,RETURNCODE)
146!
147! write the information on the four momenta
148!
149 if (K.eq.NPSPOINTS) then
150 write (*,*)
151 write (*,*) " Phase space point:"
152 write (*,*) "--------------------------------------------------",
153 &"---------------------------"
154 write (*,*) "n E px py ",
155 &"pz m "
156 do i=1,nexternal
157 write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
158 .dsqrt(dabs(DOT(p(0,i),p(0,i))))
159 enddo
160 write (*,*) "--------------------------------------------------",
161 &"---------------------------"
162 UNITS=MOD(RETURNCODE,10)
163 TENS=(MOD(RETURNCODE,100)-UNITS)/10
164 HUNDREDS=(RETURNCODE-TENS*10-UNITS)/100
165 if (HUNDREDS.eq.1) then
166 if (TENS.eq.3.or.TENS.eq.4) then
167 write(*,*) 'Unknown numerical stability because ',
168 &' MadLoop is in the initialization stage.'
169 else
170 write(*,*) 'Unknown numerical stability, check ',
171 &'CTModeRun value in MadLoopParams.dat.'
172 endif
173 elseif (HUNDREDS.eq.2) then
174 write(*,*) 'Stable kinematic configuration (SPS).'
175 elseif (HUNDREDS.eq.3) then
176 write(*,*) 'Unstable kinematic configuration (UPS).'
177 write(*,*) 'Quadruple precision rescue successful.'
178 elseif (HUNDREDS.eq.4) then
179 write(*,*) 'Exceptional kinematic configuration (EPS).'
180 write(*,*) 'Both double an quadruple precision computations',
181 %' are unstable.'
182 endif
183 if (TENS.eq.2.or.TENS.eq.4) then
184 write(*,*) 'Quadruple precision computation used.'
185 endif
186 if (HUNDREDS.ne.1) then
187 if (PREC_FOUND.gt.0.0d0) then
188 write(*,'(1x,a23,1x,1e10.2)') 'Relative accuracy =',
189 &PREC_FOUND
190 elseif (PREC_FOUND.eq.0.0d0) then
191 write(*,'(1x,a23,1x,1e10.2,1x,a30)') 'Relative accuracy ='
192 &,PREC_FOUND,'(i.e. beyond double precision)'
193 else
194 write(*,*) 'Estimated accuracy could not be',
195 &' computed for an unknown reason.'
196 endif
197 endif
198 write (*,*) "---------------------------------------------------",
199 &"--------------------------"
200 write (*,*) "Matrix element born = ", BORNELEM, " GeV^",
201 &-(2*nexternal-8)
202 write (*,*) "Matrix element finite = ", MATELEM(1), " GeV^",
203 &-(2*nexternal-8)
204 write (*,*) "Matrix element 1eps = ", MATELEM(2), " GeV^",
205 &-(2*nexternal-8)
206 write (*,*) "Matrix element 2eps = ", MATELEM(3), " GeV^",
207 &-(2*nexternal-8)
208 write (*,*) "---------------------------------------------------",
209 &"--------------------------"
210 write (*,*) "finite / (born*ao2pi) = ", MATELEM(1)/BORNELEM/AO2PI
211 write (*,*) "1eps / (born*ao2pi) = ", MATELEM(2)/BORNELEM/AO2PI
212 write (*,*) "2eps / (born*ao2pi) = ", MATELEM(3)/BORNELEM/AO2PI
213 write (*,*) "---------------------------------------------------",
214 &"--------------------------"
215
216 open(69, file="result.dat", err=976, action='WRITE')
217 do i=1,nexternal
218 write (69,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
219 enddo
220 write (69,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
221 write (69,'(a4,1x,1e25.15)') 'BORN',BORNELEM
222 write (69,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)/BORNELEM/AO2PI
223 write (69,'(a4,1x,1e25.15)') '1EPS',MATELEM(2)/BORNELEM/AO2PI
224 write (69,'(a4,1x,1e25.15)') '2EPS',MATELEM(3)/BORNELEM/AO2PI
225 write (69,'(a3,1x,1e10.2)') 'ACC',PREC_FOUND
226 write (69,'(a7,1x,i3)') 'RETCODE',RETURNCODE
227 write (69,*) 'Export_Format Default'
228 close(69)
229 else
230 write (*,*) "PS Point #",K," done."
231 endif
232 enddo
233
234!!
235!! Copy down here (or read in) the four momenta as a string.
236!!
237!!
238! buff(1)=" 1 0.5630480E+04 0.0000000E+00 0.0000000E+00 0.5630480E+04"
239! buff(2)=" 2 0.5630480E+04 0.0000000E+00 0.0000000E+00 -0.5630480E+04"
240! buff(3)=" 3 0.5466073E+04 0.4443190E+03 0.2446331E+04 -0.4864732E+04"
241! buff(4)=" 4 0.8785819E+03 -0.2533886E+03 0.2741971E+03 0.7759741E+03"
242! buff(5)=" 5 0.4916306E+04 -0.1909305E+03 -0.2720528E+04 0.4088757E+04"
243!!
244!! Here the k,E,px,py,pz are read from the string into the momenta array.
245!! k=1,2 : incoming
246!! k=3,nexternal : outgoing
247!!
248! do i=1,nexternal
249! read (buff(i),*) k, P(0,i),P(1,i),P(2,i),P(3,i)
250! enddo
251!
252!!- print the momenta out
253!
254! do i=1,nexternal
255! write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
256! .dsqrt(dabs(DOT(p(0,i),p(0,i))))
257! enddo
258!
259! CALL SLOOPMATRIX(P,MATELEM)
260!
261! write (*,*) "-------------------------------------------------"
262! write (*,*) "Matrix element = ", MATELEM(1), " GeV^",
263! &-(2*nexternal-8)
264! write (*,*) "-------------------------------------------------"
265
266 end
267
268
269
270
271 double precision function dot(p1,p2)
272C****************************************************************************
273C 4-Vector Dot product
274C****************************************************************************
275 implicit none
276 double precision p1(0:3),p2(0:3)
277 dot=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
278 end
279
280
281 SUBROUTINE GET_MOMENTA(ENERGY,PMASS,P)
282C---- auxiliary function to change convention between madgraph and rambo
283c---- four momenta.
284 IMPLICIT NONE
285 INCLUDE "nexternal.inc"
286C ARGUMENTS
287 REAL*8 ENERGY,PMASS(NEXTERNAL),P(0:3,NEXTERNAL),PRAMBO(4,10),WGT
288C LOCAL
289 INTEGER I
290 REAL*8 etot2,mom,m1,m2,e1,e2
291
292 ETOT2=energy**2
293 m1=pmass(1)
294 m2=pmass(2)
295 mom=(Etot2**2 - 2*Etot2*m1**2 + m1**4 -
296 - 2*Etot2*m2**2 - 2*m1**2*m2**2 + m2**4)/(4.*Etot2)
297 mom=dsqrt(mom)
298 e1=DSQRT(mom**2+m1**2)
299 e2=DSQRT(mom**2+m2**2)
300c write (*,*) e1+e2,mom
301
302 if(nincoming.eq.2) then
303
304 P(0,1)=e1
305 P(1,1)=0d0
306 P(2,1)=0d0
307 P(3,1)=mom
308
309 P(0,2)=e2
310 P(1,2)=0d0
311 P(2,2)=0d0
312 P(3,2)=-mom
313
314 call rambo(nexternal-2,energy,pmass(3),prambo,WGT)
315 DO I=3, NEXTERNAL
316 P(0,I)=PRAMBO(4,I-2)
317 P(1,I)=PRAMBO(1,I-2)
318 P(2,I)=PRAMBO(2,I-2)
319 P(3,I)=PRAMBO(3,I-2)
320 ENDDO
321
322 elseif(nincoming.eq.1) then
323
324 P(0,1)=energy
325 P(1,1)=0d0
326 P(2,1)=0d0
327 P(3,1)=0d0
328
329 call rambo(nexternal-1,energy,pmass(2),prambo,WGT)
330 DO I=2, NEXTERNAL
331 P(0,I)=PRAMBO(4,I-1)
332 P(1,I)=PRAMBO(1,I-1)
333 P(2,I)=PRAMBO(2,I-1)
334 P(3,I)=PRAMBO(3,I-1)
335 ENDDO
336 endif
337
338 RETURN
339 END
340
341
342 SUBROUTINE RAMBO(N,ET,XM,P,WT)
343***********************************************************************
344* RAMBO *
345* RA(NDOM) M(OMENTA) B(EAUTIFULLY) O(RGANIZED) *
346* *
347* A DEMOCRATIC MULTI-PARTICLE PHASE SPACE GENERATOR *
348* AUTHORS: S.D. ELLIS, R. KLEISS, W.J. STIRLING *
349* THIS IS VERSION 1.0 - WRITTEN BY R. KLEISS *
350* -- ADJUSTED BY HANS KUIJF, WEIGHTS ARE LOGARITHMIC (20-08-90) *
351* *
352* N = NUMBER OF PARTICLES *
353* ET = TOTAL CENTRE-OF-MASS ENERGY *
354* XM = PARTICLE MASSES ( DIM=NEXTERNAL-nincoming ) *
355* P = PARTICLE MOMENTA ( DIM=(4,NEXTERNAL-nincoming) ) *
356* WT = WEIGHT OF THE EVENT *
357***********************************************************************
358 IMPLICIT REAL*8(A-H,O-Z)
359 INCLUDE "nexternal.inc"
360 DIMENSION XM(NEXTERNAL-NINCOMING),P(4,NEXTERNAL-NINCOMING)
361 DIMENSION Q(4,NEXTERNAL-NINCOMING),Z(NEXTERNAL-NINCOMING),R(4),
362 . B(3),P2(NEXTERNAL-NINCOMING),XM2(NEXTERNAL-NINCOMING),
363 . E(NEXTERNAL-NINCOMING),V(NEXTERNAL-NINCOMING),IWARN(5)
364 SAVE ACC,ITMAX,IBEGIN,IWARN
365 DATA ACC/1.D-14/,ITMAX/6/,IBEGIN/0/,IWARN/5*0/
366*
367* INITIALIZATION STEP: FACTORIALS FOR THE PHASE SPACE WEIGHT
368 IF(IBEGIN.NE.0) GOTO 103
369 IBEGIN=1
370 TWOPI=8.*DATAN(1.D0)
371 PO2LOG=LOG(TWOPI/4.)
372 Z(2)=PO2LOG
373 DO 101 K=3,(NEXTERNAL-NINCOMING-1)
374 101 Z(K)=Z(K-1)+PO2LOG-2.*LOG(DFLOAT(K-2))
375 DO 102 K=3,(NEXTERNAL-NINCOMING-1)
376 102 Z(K)=(Z(K)-LOG(DFLOAT(K-1)))
377*
378* CHECK ON THE NUMBER OF PARTICLES
379 103 IF(N.GT.1.AND.N.LT.101) GOTO 104
380 PRINT 1001,N
381 STOP
382*
383* CHECK WHETHER TOTAL ENERGY IS SUFFICIENT; COUNT NONZERO MASSES
384 104 XMT=0.
385 NM=0
386 DO 105 I=1,N
387 IF(XM(I).NE.0.D0) NM=NM+1
388 105 XMT=XMT+ABS(XM(I))
389 IF(XMT.LE.ET) GOTO 201
390 PRINT 1002,XMT,ET
391 STOP
392*
393* THE PARAMETER VALUES ARE NOW ACCEPTED
394*
395* GENERATE N MASSLESS MOMENTA IN INFINITE PHASE SPACE
396 201 DO 202 I=1,N
397 r1=rn(1)
398 C=2.*r1-1.
399 S=SQRT(1.-C*C)
400 F=TWOPI*RN(2)
401 r1=rn(3)
402 r2=rn(4)
403 Q(4,I)=-LOG(r1*r2)
404 Q(3,I)=Q(4,I)*C
405 Q(2,I)=Q(4,I)*S*COS(F)
406 202 Q(1,I)=Q(4,I)*S*SIN(F)
407*
408* CALCULATE THE PARAMETERS OF THE CONFORMAL TRANSFORMATION
409 DO 203 I=1,4
410 203 R(I)=0.
411 DO 204 I=1,N
412 DO 204 K=1,4
413 204 R(K)=R(K)+Q(K,I)
414 RMAS=SQRT(R(4)**2-R(3)**2-R(2)**2-R(1)**2)
415 DO 205 K=1,3
416 205 B(K)=-R(K)/RMAS
417 G=R(4)/RMAS
418 A=1./(1.+G)
419 X=ET/RMAS
420*
421* TRANSFORM THE Q'S CONFORMALLY INTO THE P'S
422 DO 207 I=1,N
423 BQ=B(1)*Q(1,I)+B(2)*Q(2,I)+B(3)*Q(3,I)
424 DO 206 K=1,3
425 206 P(K,I)=X*(Q(K,I)+B(K)*(Q(4,I)+A*BQ))
426 207 P(4,I)=X*(G*Q(4,I)+BQ)
427*
428* CALCULATE WEIGHT AND POSSIBLE WARNINGS
429 WT=PO2LOG
430 IF(N.NE.2) WT=(2.*N-4.)*LOG(ET)+Z(N)
431 IF(WT.GE.-180.D0) GOTO 208
432 IF(IWARN(1).LE.5) PRINT 1004,WT
433 IWARN(1)=IWARN(1)+1
434 208 IF(WT.LE. 174.D0) GOTO 209
435 IF(IWARN(2).LE.5) PRINT 1005,WT
436 IWARN(2)=IWARN(2)+1
437*
438* RETURN FOR WEIGHTED MASSLESS MOMENTA
439 209 IF(NM.NE.0) GOTO 210
440* RETURN LOG OF WEIGHT
441 WT=WT
442 RETURN
443*
444* MASSIVE PARTICLES: RESCALE THE MOMENTA BY A FACTOR X
445 210 XMAX=SQRT(1.-(XMT/ET)**2)
446 DO 301 I=1,N
447 XM2(I)=XM(I)**2
448 301 P2(I)=P(4,I)**2
449 ITER=0
450 X=XMAX
451 ACCU=ET*ACC
452 302 F0=-ET
453 G0=0.
454 X2=X*X
455 DO 303 I=1,N
456 E(I)=SQRT(XM2(I)+X2*P2(I))
457 F0=F0+E(I)
458 303 G0=G0+P2(I)/E(I)
459 IF(ABS(F0).LE.ACCU) GOTO 305
460 ITER=ITER+1
461 IF(ITER.LE.ITMAX) GOTO 304
462 PRINT 1006,ITMAX
463 GOTO 305
464 304 X=X-F0/(X*G0)
465 GOTO 302
466 305 DO 307 I=1,N
467 V(I)=X*P(4,I)
468 DO 306 K=1,3
469 306 P(K,I)=X*P(K,I)
470 307 P(4,I)=E(I)
471*
472* CALCULATE THE MASS-EFFECT WEIGHT FACTOR
473 WT2=1.
474 WT3=0.
475 DO 308 I=1,N
476 WT2=WT2*V(I)/E(I)
477 308 WT3=WT3+V(I)**2/E(I)
478 WTM=(2.*N-3.)*LOG(X)+LOG(WT2/WT3*ET)
479*
480* RETURN FOR WEIGHTED MASSIVE MOMENTA
481 WT=WT+WTM
482 IF(WT.GE.-180.D0) GOTO 309
483 IF(IWARN(3).LE.5) PRINT 1004,WT
484 IWARN(3)=IWARN(3)+1
485 309 IF(WT.LE. 174.D0) GOTO 310
486 IF(IWARN(4).LE.5) PRINT 1005,WT
487 IWARN(4)=IWARN(4)+1
488* RETURN LOG OF WEIGHT
489 310 WT=WT
490 RETURN
491*
492 1001 FORMAT(' RAMBO FAILS: # OF PARTICLES =',I5,' IS NOT ALLOWED')
493 1002 FORMAT(' RAMBO FAILS: TOTAL MASS =',D15.6,' IS NOT',
494 . ' SMALLER THAN TOTAL ENERGY =',D15.6)
495 1004 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY UNDERFLOW')
496 1005 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY OVERFLOW')
497 1006 FORMAT(' RAMBO WARNS:',I3,' ITERATIONS DID NOT GIVE THE',
498 . ' DESIRED ACCURACY =',D15.6)
499 END
500
501 FUNCTION RN(IDUMMY)
502 REAL*8 RN,RAN
503 SAVE INIT
504 DATA INIT /1/
505 IF (INIT.EQ.1) THEN
506 INIT=0
507 CALL RMARIN(1802,9373)
508 END IF
509*
510 10 CALL RANMAR(RAN)
511 IF (RAN.LT.1D-16) GOTO 10
512 RN=RAN
513*
514 END
515
516
517
518 SUBROUTINE RANMAR(RVEC)
519* -----------------
520* Universal random number generator proposed by Marsaglia and Zaman
521* in report FSU-SCRI-87-50
522* In this version RVEC is a double precision variable.
523 IMPLICIT REAL*8(A-H,O-Z)
524 COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
525 COMMON/ RASET2 / IRANMR,JRANMR
526 SAVE /RASET1/,/RASET2/
527 UNI = RANU(IRANMR) - RANU(JRANMR)
528 IF(UNI .LT. 0D0) UNI = UNI + 1D0
529 RANU(IRANMR) = UNI
530 IRANMR = IRANMR - 1
531 JRANMR = JRANMR - 1
532 IF(IRANMR .EQ. 0) IRANMR = 97
533 IF(JRANMR .EQ. 0) JRANMR = 97
534 RANC = RANC - RANCD
535 IF(RANC .LT. 0D0) RANC = RANC + RANCM
536 UNI = UNI - RANC
537 IF(UNI .LT. 0D0) UNI = UNI + 1D0
538 RVEC = UNI
539 END
540
541 SUBROUTINE RMARIN(IJ,KL)
542* -----------------
543* Initializing routine for RANMAR, must be called before generating
544* any pseudorandom numbers with RANMAR. The input values should be in
545* the ranges 0<=ij<=31328 ; 0<=kl<=30081
546 IMPLICIT REAL*8(A-H,O-Z)
547 COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
548 COMMON/ RASET2 / IRANMR,JRANMR
549 SAVE /RASET1/,/RASET2/
550* This shows correspondence between the simplified input seeds IJ, KL
551* and the original Marsaglia-Zaman seeds I,J,K,L.
552* To get the standard values in the Marsaglia-Zaman paper (i=12,j=34
553* k=56,l=78) put ij=1802, kl=9373
554 I = MOD( IJ/177 , 177 ) + 2
555 J = MOD( IJ , 177 ) + 2
556 K = MOD( KL/169 , 178 ) + 1
557 L = MOD( KL , 169 )
558 DO 300 II = 1 , 97
559 S = 0D0
560 T = .5D0
561 DO 200 JJ = 1 , 24
562 M = MOD( MOD(I*J,179)*K , 179 )
563 I = J
564 J = K
565 K = M
566 L = MOD( 53*L+1 , 169 )
567 IF(MOD(L*M,64) .GE. 32) S = S + T
568 T = .5D0*T
569 200 CONTINUE
570 RANU(II) = S
571 300 CONTINUE
572 RANC = 362436D0 / 16777216D0
573 RANCD = 7654321D0 / 16777216D0
574 RANCM = 16777213D0 / 16777216D0
575 IRANMR = 97
576 JRANMR = 33
577 END
578
579
580
581
582
583
5840
=== removed file 'Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f'
--- Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f 2013-12-13 07:04:16 +0000
+++ Template/loop_material/StandAlone/SubProcesses/check_sa_loop_induced.f 1970-01-01 00:00:00 +0000
@@ -1,574 +0,0 @@
1 PROGRAM DRIVER
2!**************************************************************************
3! THIS IS THE DRIVER FOR CHECKING THE STANDALONE MATRIX ELEMENT.
4! IT USES A SIMPLE PHASE SPACE GENERATOR
5! Fabio Maltoni - 3rd Febraury 2007
6!**************************************************************************
7 IMPLICIT NONE
8!
9! CONSTANTS
10!
11 REAL*8 ZERO
12 PARAMETER (ZERO=0D0)
13
14 LOGICAL READPS
15 PARAMETER (READPS = .FALSE.)
16
17 INTEGER NPSPOINTS
18 PARAMETER (NPSPOINTS = 4)
19
20!
21! INCLUDE FILES
22!
23!--- the include file with the values of the parameters and masses
24 INCLUDE "coupl.inc"
25!--- integer nexternal ! number particles (incoming+outgoing) in the me
26 INCLUDE "nexternal.inc"
27!--- particle masses
28 REAL*8 PMASS(NEXTERNAL)
29!--- integer n_max_cg
30 INCLUDE "ngraphs.inc" !how many diagrams (could be useful to know...)
31
32!
33! LOCAL
34!
35 INTEGER I,J,K
36 REAL*8 P(0:3,NEXTERNAL) ! four momenta. Energy is the zeroth component.
37 REAL*8 SQRTS,MATELEM(3) ! sqrt(s)= center of mass energy
38 REAL*8 PIN(0:3), POUT(0:3)
39 CHARACTER*120 BUFF(NEXTERNAL)
40 REAL*8 PREC_FOUND
41 INTEGER RETURNCODE, HUNDREDS, TENS, UNITS
42!
43! EXTERNAL
44!
45 REAL*8 DOT
46 EXTERNAL DOT
47
48!-----
49! BEGIN CODE
50!-----
51!
52!--- INITIALIZATION CALLS
53!
54!--- Call to initialize the values of the couplings, masses and widths
55! used in the evaluation of the matrix element. The primary parameters of the
56! models are read from Cards/param_card.dat. The secondary parameters are calculated
57! in Source/MODEL/couplings.f. The values are stored in common blocks that are listed
58! in coupl.inc .
59
60 call setpara('param_card.dat') !first call to setup the paramaters
61 include "pmass.inc" !set up masses
62
63!--- Now use a simple multipurpose PS generator (RAMBO) just to get a
64! RANDOM set of four momenta of given masses pmass(i) to be used to evaluate
65! the madgraph matrix-element.
66! Alternatevely, here the user can call or set the four momenta at his will, see below.
67!
68 IF(nincoming.EQ.1) THEN
69 SQRTS=PMASS(1)
70 ELSE
71 SQRTS=1000d0 !CMS energy in GEV
72 ENDIF
73
74 call printout()
75
76 do K=1,NPSPOINTS
77
78 if(READPS) then
79 open(967, file="PS.input", err=976, status='OLD', action='READ')
80 do i=1,NExternal
81 read(967,*,end=978) P(0,i),P(1,i),P(2,i),P(3,i)
82 enddo
83 goto 978
84 976 continue
85 stop 'Could not read the PS.input phase-space point.'
86 978 continue
87 close(967)
88 else
89 if ((nincoming.eq.2).and.((nexternal - nincoming .eq.1))) then
90 if (pmass(3).eq.0.0d0) then
91 stop 'Cannot generate 2>1 kin. config. with m3=0.0d0'
92 else
93 ! deal with the case of only one particle in the final
94 ! state
95 p(0,1) = pmass(3)/2d0
96 p(1,1) = 0d0
97 p(2,1) = 0d0
98 p(3,1) = pmass(3)/2d0
99 if (pmass(1).GT.0d0) then
100 p(3,1) = dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
101 endif
102 p(0,2) = pmass(3)/2d0
103 p(1,2) = 0d0
104 p(2,2) = 0d0
105 p(3,2) = -pmass(3)/2d0
106 if (pmass(2) > 0d0) then
107 p(3,2) = -dsqrt(pmass(3)**2/4d0 - pmass(1)**2)
108 endif
109 p(0,3) = pmass(3)
110 p(1,3) = 0d0
111 p(2,3) = 0d0
112 p(3,3) = 0d0
113 endif
114 else
115 CALL GET_MOMENTA(SQRTS,PMASS,P)
116 endif
117 endif
118
119 do i=0,3
120 PIN(i)=0.0d0
121 do j=1,nincoming
122 PIN(i)=PIN(i)+p(i,j)
123 enddo
124 enddo
125
126!--- In standalone mode, always use sqrt_s as the renormalization
127! scale.
128 SQRTS=dsqrt(dabs(DOT(PIN(0),PIN(0))))
129
130 MU_R=SQRTS
131
132!--- Update the couplings with the new MU_R
133 CALL UPDATE_AS_PARAM()
134
135!-- Possible tweaks to the run
136! CALL FORCE_STABILITY_CHECK(.TRUE.)
137
138!
139! Now we can call the matrix element!
140!
141 CALL SLOOPMATRIX_THRES(P,MATELEM,-1.0d0,
142 &PREC_FOUND,RETURNCODE)
143!
144! write the information on the four momenta
145!
146 if (K.eq.NPSPOINTS) then
147 write (*,*)
148 write (*,*) " Phase space point:"
149 write (*,*) "--------------------------------------------------",
150 &"---------------------------"
151 write (*,*) "n E px py ",
152 &"pz m "
153 do i=1,nexternal
154 write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
155 .dsqrt(dabs(DOT(p(0,i),p(0,i))))
156 enddo
157 write (*,*) "--------------------------------------------------",
158 &"---------------------------"
159 UNITS=MOD(RETURNCODE,10)
160 TENS=(MOD(RETURNCODE,100)-UNITS)/10
161 HUNDREDS=(RETURNCODE-TENS*10-UNITS)/100
162 if (HUNDREDS.eq.1) then
163 if (TENS.eq.3.or.TENS.eq.4) then
164 write(*,*) 'Unknown numerical stability because ',
165 &' MadLoop is in the initialization stage.'
166 else
167 write(*,*) 'Unknown numerical stability, due to ',
168 &'the value of CTModeRun set in MadLoopParams.dat.'
169 endif
170 elseif (HUNDREDS.eq.2) then
171 write(*,*) 'Stable kinematic configuration (SPS).'
172 elseif (HUNDREDS.eq.3) then
173 write(*,*) 'Unstable kinematic configuration (UPS).'
174 write(*,*) 'Quadruple precision rescue successful.'
175 elseif (HUNDREDS.eq.4) then
176 write(*,*) 'Exceptional kinematic configuration (EPS).'
177 write(*,*) 'Both double an quadruple precision computations',
178 %' are unstable.'
179 endif
180 if (TENS.eq.2.or.TENS.eq.4) then
181 write(*,*) 'Quadruple precision computation used.'
182 endif
183 if (HUNDREDS.ne.1) then
184 if (PREC_FOUND.ge.0.0d0) then
185 write(*,'(1x,a23,1x,1e10.2)') 'Relative accuracy =',
186 &PREC_FOUND
187 elseif (PREC_FOUND.eq.0.0d0) then
188 write(*,'(1x,a23,1x,1e10.2,1x,a30)') 'Relative accuracy ='
189 &,PREC_FOUND,'(i.e. beyond double precision)'
190 else
191 write(*,*) 'Estimated accuracy could not be',
192 &' computed for an unknown reason.'
193 endif
194 endif
195 write (*,*) "This is a loop induced process, so only the ",
196 &"unnormalized finite part is output"
197 write (*,*) " here. Be aware that all loops",
198 &" are expected to be UV-finite as no "
199 write (*,*) " renormalization prescription is considered. "
200 write (*,*) "---------------------------------------------------",
201 &"--------------------------"
202 write (*,*) "Matrix element finite = ", MATELEM(1), " GeV^",
203 &-(2*nexternal-8)
204 write (*,*) "---------------------------------------------------",
205 &"--------------------------"
206
207 open(69, file="result.dat", err=976, action='WRITE')
208 do i=1,nexternal
209 write (69,'(a2,1x,5e25.15)') 'PS',P(0,i),P(1,i),P(2,i),P(3,i)
210 enddo
211 write (69,'(a3,1x,i2)') 'EXP',-(2*nexternal-8)
212 write (69,'(a4,1x,1e25.15)') 'BORN',0.0d0
213 write (69,'(a3,1x,1e25.15)') 'FIN',MATELEM(1)
214 write (69,'(a4,1x,1e25.15)') '1EPS',0.0d0
215 write (69,'(a4,1x,1e25.15)') '2EPS',0.0d0
216 write (69,'(a3,1x,1e10.2)') 'ACC',PREC_FOUND
217 write (69,'(a7,1x,i3)') 'RETCODE',RETURNCODE
218 write (69,*) 'Export_Format LoopInduced'
219 close(69)
220 else
221 write (*,*) "PS Point #",K," done."
222 endif
223 enddo
224
225!!
226!! Copy down here (or read in) the four momenta as a string.
227!!
228!!
229! buff(1)=" 1 0.5630480E+04 0.0000000E+00 0.0000000E+00 0.5630480E+04"
230! buff(2)=" 2 0.5630480E+04 0.0000000E+00 0.0000000E+00 -0.5630480E+04"
231! buff(3)=" 3 0.5466073E+04 0.4443190E+03 0.2446331E+04 -0.4864732E+04"
232! buff(4)=" 4 0.8785819E+03 -0.2533886E+03 0.2741971E+03 0.7759741E+03"
233! buff(5)=" 5 0.4916306E+04 -0.1909305E+03 -0.2720528E+04 0.4088757E+04"
234!!
235!! Here the k,E,px,py,pz are read from the string into the momenta array.
236!! k=1,2 : incoming
237!! k=3,nexternal : outgoing
238!!
239! do i=1,nexternal
240! read (buff(i),*) k, P(0,i),P(1,i),P(2,i),P(3,i)
241! enddo
242!
243!!- print the momenta out
244!
245! do i=1,nexternal
246! write (*,'(i2,1x,5e15.7)') i, P(0,i),P(1,i),P(2,i),P(3,i),
247! .dsqrt(dabs(DOT(p(0,i),p(0,i))))
248! enddo
249!
250! CALL SLOOPMATRIX(P,MATELEM)
251!
252! write (*,*) "-------------------------------------------------"
253! write (*,*) "Matrix element = ", MATELEM(1), " GeV^",
254! &-(2*nexternal-8)
255! write (*,*) "-------------------------------------------------"
256
257 end
258
259
260
261
262 double precision function dot(p1,p2)
263C****************************************************************************
264C 4-Vector Dot product
265C****************************************************************************
266 implicit none
267 double precision p1(0:3),p2(0:3)
268 dot=p1(0)*p2(0)-p1(1)*p2(1)-p1(2)*p2(2)-p1(3)*p2(3)
269 end
270
271
272 SUBROUTINE GET_MOMENTA(ENERGY,PMASS,P)
273C---- auxiliary function to change convention between madgraph and rambo
274c---- four momenta.
275 IMPLICIT NONE
276 INCLUDE "nexternal.inc"
277C ARGUMENTS
278 REAL*8 ENERGY,PMASS(NEXTERNAL),P(0:3,NEXTERNAL),PRAMBO(4,10),WGT
279C LOCAL
280 INTEGER I
281 REAL*8 etot2,mom,m1,m2,e1,e2
282
283 ETOT2=energy**2
284 m1=pmass(1)
285 m2=pmass(2)
286 mom=(Etot2**2 - 2*Etot2*m1**2 + m1**4 -
287 - 2*Etot2*m2**2 - 2*m1**2*m2**2 + m2**4)/(4.*Etot2)
288 mom=dsqrt(mom)
289 e1=DSQRT(mom**2+m1**2)
290 e2=DSQRT(mom**2+m2**2)
291c write (*,*) e1+e2,mom
292
293 if(nincoming.eq.2) then
294
295 P(0,1)=e1
296 P(1,1)=0d0
297 P(2,1)=0d0
298 P(3,1)=mom
299
300 P(0,2)=e2
301 P(1,2)=0d0
302 P(2,2)=0d0
303 P(3,2)=-mom
304
305 call rambo(nexternal-2,energy,pmass(3),prambo,WGT)
306 DO I=3, NEXTERNAL
307 P(0,I)=PRAMBO(4,I-2)
308 P(1,I)=PRAMBO(1,I-2)
309 P(2,I)=PRAMBO(2,I-2)
310 P(3,I)=PRAMBO(3,I-2)
311 ENDDO
312
313 elseif(nincoming.eq.1) then
314
315 P(0,1)=energy
316 P(1,1)=0d0
317 P(2,1)=0d0
318 P(3,1)=0d0
319
320 call rambo(nexternal-1,energy,pmass(2),prambo,WGT)
321 DO I=2, NEXTERNAL
322 P(0,I)=PRAMBO(4,I-1)
323 P(1,I)=PRAMBO(1,I-1)
324 P(2,I)=PRAMBO(2,I-1)
325 P(3,I)=PRAMBO(3,I-1)
326 ENDDO
327 endif
328
329 RETURN
330 END
331
332
333 SUBROUTINE RAMBO(N,ET,XM,P,WT)
334***********************************************************************
335* RAMBO *
336* RA(NDOM) M(OMENTA) B(EAUTIFULLY) O(RGANIZED) *
337* *
338* A DEMOCRATIC MULTI-PARTICLE PHASE SPACE GENERATOR *
339* AUTHORS: S.D. ELLIS, R. KLEISS, W.J. STIRLING *
340* THIS IS VERSION 1.0 - WRITTEN BY R. KLEISS *
341* -- ADJUSTED BY HANS KUIJF, WEIGHTS ARE LOGARITHMIC (20-08-90) *
342* *
343* N = NUMBER OF PARTICLES *
344* ET = TOTAL CENTRE-OF-MASS ENERGY *
345* XM = PARTICLE MASSES ( DIM=NEXTERNAL-nincoming ) *
346* P = PARTICLE MOMENTA ( DIM=(4,NEXTERNAL-nincoming) ) *
347* WT = WEIGHT OF THE EVENT *
348***********************************************************************
349 IMPLICIT REAL*8(A-H,O-Z)
350 INCLUDE "nexternal.inc"
351 DIMENSION XM(NEXTERNAL-NINCOMING),P(4,NEXTERNAL-NINCOMING)
352 DIMENSION Q(4,NEXTERNAL-NINCOMING),Z(NEXTERNAL-NINCOMING),R(4),
353 . B(3),P2(NEXTERNAL-NINCOMING),XM2(NEXTERNAL-NINCOMING),
354 . E(NEXTERNAL-NINCOMING),V(NEXTERNAL-NINCOMING),IWARN(5)
355 SAVE ACC,ITMAX,IBEGIN,IWARN
356 DATA ACC/1.D-14/,ITMAX/6/,IBEGIN/0/,IWARN/5*0/
357*
358* INITIALIZATION STEP: FACTORIALS FOR THE PHASE SPACE WEIGHT
359 IF(IBEGIN.NE.0) GOTO 103
360 IBEGIN=1
361 TWOPI=8.*DATAN(1.D0)
362 PO2LOG=LOG(TWOPI/4.)
363 Z(2)=PO2LOG
364 DO 101 K=3,(NEXTERNAL-NINCOMING-1)
365 101 Z(K)=Z(K-1)+PO2LOG-2.*LOG(DFLOAT(K-2))
366 DO 102 K=3,(NEXTERNAL-NINCOMING-1)
367 102 Z(K)=(Z(K)-LOG(DFLOAT(K-1)))
368*
369* CHECK ON THE NUMBER OF PARTICLES
370 103 IF(N.GT.1.AND.N.LT.101) GOTO 104
371 PRINT 1001,N
372 STOP
373*
374* CHECK WHETHER TOTAL ENERGY IS SUFFICIENT; COUNT NONZERO MASSES
375 104 XMT=0.
376 NM=0
377 DO 105 I=1,N
378 IF(XM(I).NE.0.D0) NM=NM+1
379 105 XMT=XMT+ABS(XM(I))
380 IF(XMT.LE.ET) GOTO 201
381 PRINT 1002,XMT,ET
382 STOP
383*
384* THE PARAMETER VALUES ARE NOW ACCEPTED
385*
386* GENERATE N MASSLESS MOMENTA IN INFINITE PHASE SPACE
387 201 DO 202 I=1,N
388 r1=rn(1)
389 C=2.*r1-1.
390 S=SQRT(1.-C*C)
391 F=TWOPI*RN(2)
392 r1=rn(3)
393 r2=rn(4)
394 Q(4,I)=-LOG(r1*r2)
395 Q(3,I)=Q(4,I)*C
396 Q(2,I)=Q(4,I)*S*COS(F)
397 202 Q(1,I)=Q(4,I)*S*SIN(F)
398*
399* CALCULATE THE PARAMETERS OF THE CONFORMAL TRANSFORMATION
400 DO 203 I=1,4
401 203 R(I)=0.
402 DO 204 I=1,N
403 DO 204 K=1,4
404 204 R(K)=R(K)+Q(K,I)
405 RMAS=SQRT(R(4)**2-R(3)**2-R(2)**2-R(1)**2)
406 DO 205 K=1,3
407 205 B(K)=-R(K)/RMAS
408 G=R(4)/RMAS
409 A=1./(1.+G)
410 X=ET/RMAS
411*
412* TRANSFORM THE Q'S CONFORMALLY INTO THE P'S
413 DO 207 I=1,N
414 BQ=B(1)*Q(1,I)+B(2)*Q(2,I)+B(3)*Q(3,I)
415 DO 206 K=1,3
416 206 P(K,I)=X*(Q(K,I)+B(K)*(Q(4,I)+A*BQ))
417 207 P(4,I)=X*(G*Q(4,I)+BQ)
418*
419* CALCULATE WEIGHT AND POSSIBLE WARNINGS
420 WT=PO2LOG
421 IF(N.NE.2) WT=(2.*N-4.)*LOG(ET)+Z(N)
422 IF(WT.GE.-180.D0) GOTO 208
423 IF(IWARN(1).LE.5) PRINT 1004,WT
424 IWARN(1)=IWARN(1)+1
425 208 IF(WT.LE. 174.D0) GOTO 209
426 IF(IWARN(2).LE.5) PRINT 1005,WT
427 IWARN(2)=IWARN(2)+1
428*
429* RETURN FOR WEIGHTED MASSLESS MOMENTA
430 209 IF(NM.NE.0) GOTO 210
431* RETURN LOG OF WEIGHT
432 WT=WT
433 RETURN
434*
435* MASSIVE PARTICLES: RESCALE THE MOMENTA BY A FACTOR X
436 210 XMAX=SQRT(1.-(XMT/ET)**2)
437 DO 301 I=1,N
438 XM2(I)=XM(I)**2
439 301 P2(I)=P(4,I)**2
440 ITER=0
441 X=XMAX
442 ACCU=ET*ACC
443 302 F0=-ET
444 G0=0.
445 X2=X*X
446 DO 303 I=1,N
447 E(I)=SQRT(XM2(I)+X2*P2(I))
448 F0=F0+E(I)
449 303 G0=G0+P2(I)/E(I)
450 IF(ABS(F0).LE.ACCU) GOTO 305
451 ITER=ITER+1
452 IF(ITER.LE.ITMAX) GOTO 304
453 PRINT 1006,ITMAX
454 GOTO 305
455 304 X=X-F0/(X*G0)
456 GOTO 302
457 305 DO 307 I=1,N
458 V(I)=X*P(4,I)
459 DO 306 K=1,3
460 306 P(K,I)=X*P(K,I)
461 307 P(4,I)=E(I)
462*
463* CALCULATE THE MASS-EFFECT WEIGHT FACTOR
464 WT2=1.
465 WT3=0.
466 DO 308 I=1,N
467 WT2=WT2*V(I)/E(I)
468 308 WT3=WT3+V(I)**2/E(I)
469 WTM=(2.*N-3.)*LOG(X)+LOG(WT2/WT3*ET)
470*
471* RETURN FOR WEIGHTED MASSIVE MOMENTA
472 WT=WT+WTM
473 IF(WT.GE.-180.D0) GOTO 309
474 IF(IWARN(3).LE.5) PRINT 1004,WT
475 IWARN(3)=IWARN(3)+1
476 309 IF(WT.LE. 174.D0) GOTO 310
477 IF(IWARN(4).LE.5) PRINT 1005,WT
478 IWARN(4)=IWARN(4)+1
479* RETURN LOG OF WEIGHT
480 310 WT=WT
481 RETURN
482*
483 1001 FORMAT(' RAMBO FAILS: # OF PARTICLES =',I5,' IS NOT ALLOWED')
484 1002 FORMAT(' RAMBO FAILS: TOTAL MASS =',D15.6,' IS NOT',
485 . ' SMALLER THAN TOTAL ENERGY =',D15.6)
486 1004 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY UNDERFLOW')
487 1005 FORMAT(' RAMBO WARNS: WEIGHT = EXP(',F20.9,') MAY OVERFLOW')
488 1006 FORMAT(' RAMBO WARNS:',I3,' ITERATIONS DID NOT GIVE THE',
489 . ' DESIRED ACCURACY =',D15.6)
490 END
491
492 FUNCTION RN(IDUMMY)
493 REAL*8 RN,RAN
494 SAVE INIT
495 DATA INIT /1/
496 IF (INIT.EQ.1) THEN
497 INIT=0
498 CALL RMARIN(1802,9373)
499 END IF
500*
501 10 CALL RANMAR(RAN)
502 IF (RAN.LT.1D-16) GOTO 10
503 RN=RAN
504*
505 END
506
507
508
509 SUBROUTINE RANMAR(RVEC)
510* -----------------
511* Universal random number generator proposed by Marsaglia and Zaman
512* in report FSU-SCRI-87-50
513* In this version RVEC is a double precision variable.
514 IMPLICIT REAL*8(A-H,O-Z)
515 COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
516 COMMON/ RASET2 / IRANMR,JRANMR
517 SAVE /RASET1/,/RASET2/
518 UNI = RANU(IRANMR) - RANU(JRANMR)
519 IF(UNI .LT. 0D0) UNI = UNI + 1D0
520 RANU(IRANMR) = UNI
521 IRANMR = IRANMR - 1
522 JRANMR = JRANMR - 1
523 IF(IRANMR .EQ. 0) IRANMR = 97
524 IF(JRANMR .EQ. 0) JRANMR = 97
525 RANC = RANC - RANCD
526 IF(RANC .LT. 0D0) RANC = RANC + RANCM
527 UNI = UNI - RANC
528 IF(UNI .LT. 0D0) UNI = UNI + 1D0
529 RVEC = UNI
530 END
531
532 SUBROUTINE RMARIN(IJ,KL)
533* -----------------
534* Initializing routine for RANMAR, must be called before generating
535* any pseudorandom numbers with RANMAR. The input values should be in
536* the ranges 0<=ij<=31328 ; 0<=kl<=30081
537 IMPLICIT REAL*8(A-H,O-Z)
538 COMMON/ RASET1 / RANU(97),RANC,RANCD,RANCM
539 COMMON/ RASET2 / IRANMR,JRANMR
540 SAVE /RASET1/,/RASET2/
541* This shows correspondence between the simplified input seeds IJ, KL
542* and the original Marsaglia-Zaman seeds I,J,K,L.
543* To get the standard values in the Marsaglia-Zaman paper (i=12,j=34
544* k=56,l=78) put ij=1802, kl=9373
545 I = MOD( IJ/177 , 177 ) + 2
546 J = MOD( IJ , 177 ) + 2
547 K = MOD( KL/169 , 178 ) + 1
548 L = MOD( KL , 169 )
549 DO 300 II = 1 , 97
550 S = 0D0
551 T = .5D0
552 DO 200 JJ = 1 , 24
553 M = MOD( MOD(I*J,179)*K , 179 )
554 I = J
555 J = K
556 K = M
557 L = MOD( 53*L+1 , 169 )
558 IF(MOD(L*M,64) .GE. 32) S = S + T
559 T = .5D0*T
560 200 CONTINUE
561 RANU(II) = S
562 300 CONTINUE
563 RANC = 362436D0 / 16777216D0
564 RANCD = 7654321D0 / 16777216D0
565 RANCM = 16777213D0 / 16777216D0
566 IRANMR = 97
567 JRANMR = 33
568 END
569
570
571
572
573
574
5750
=== removed file 'Template/loop_material/StandAlone/SubProcesses/makefile'
--- Template/loop_material/StandAlone/SubProcesses/makefile 2012-11-09 17:13:53 +0000
+++ Template/loop_material/StandAlone/SubProcesses/makefile 1970-01-01 00:00:00 +0000
@@ -1,29 +0,0 @@
1include ../../Source/make_opts
2
3LIBDIR = ../../lib/
4PROG = check
5STABCHECKDRIVER = StabilityCheckDriver
6LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel
7LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext)
8PROCESS= loop_matrix.o improve_ps.o\
9 $(patsubst %.f,%.o,$(wildcard born_matrix.f)) \
10 loop_num.o CT_interface.o \
11 $(patsubst %.f,%.o,$(wildcard polynomial.f)) \
12 $(patsubst %.f,%.o,$(wildcard MadLoopParamReader.f)) \
13 $(patsubst %.f,%.o,$(wildcard helas_calls*.f)) \
14 $(patsubst %.f,%.o,$(wildcard jamp?_calls_*.f)) \
15 $(patsubst %.f,%.o,$(wildcard mp_born_amps_and_wfs.f)) \
16 $(patsubst %.f,%.o,$(wildcard mp_compute_loop_coefs.f)) \
17 $(patsubst %.f,%.o,$(wildcard mp_helas_calls*.f)) \
18 $(patsubst %.f,%.o,$(wildcard coef_construction_*.f)) \
19 $(patsubst %.f,%.o,$(wildcard loop_CT_calls_*.f)) \
20 $(patsubst %.f,%.o,$(wildcard mp_coef_construction_*.f))
21
22$(PROG): check_sa.o $(PROCESS) makefile $(LIBS)
23 $(FC) $(FFLAGS) -o $(PROG) check_sa.o $(PROCESS) $(LINKLIBS)
24
25$(STABCHECKDRIVER): StabilityCheckDriver.o $(PROCESS) makefile $(LIBS)
26 $(FC) $(FFLAGS) -o $(STABCHECKDRIVER) StabilityCheckDriver.o $(PROCESS) $(LINKLIBS)
27
28clean:
29 @rm -f *.o
300
=== added file 'Template/loop_material/StandAlone/SubProcesses/makefile.inc'
--- Template/loop_material/StandAlone/SubProcesses/makefile.inc 1970-01-01 00:00:00 +0000
+++ Template/loop_material/StandAlone/SubProcesses/makefile.inc 2014-08-26 07:56:12 +0000
@@ -0,0 +1,74 @@
1ifeq ($(wildcard ../../Source/make_opts),)
2 ROOT = ..
3else
4 ROOT = ../..
5endif
6
7
8if [ -a ../../Source/make_opts]; then ROOT = ../..; fi;
9
10if [ -a ../Source/make_opts]; then ROOT = ../; fi;
11
12include $(ROOT)/Source/make_opts
13LIBDIR = $(ROOT)/lib/
14
15PROG = check
16OLP = OLP
17STABCHECKDRIVER = StabilityCheckDriver
18CHECK_SA_BORN_SPLITORDERS = check_sa_born_splitOrders
19LINKLIBS = -L$(LIBDIR) -lcts -ldhelas -lmodel %(link_tir_libs)s
20LIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext) %(tir_libs)s
21PROCESS= MadLoopParamReader.o MadLoopCommons.o \
22 $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_matrix.f)) \
23 $(patsubst %(dotf)s,%(doto)s,$(wildcard improve_ps.f)) \
24 $(patsubst %(dotf)s,%(doto)s,$(wildcard born_matrix.f)) \
25 $(patsubst %(dotf)s,%(doto)s,$(wildcard CT_interface.f)) \
26 $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_num.f)) \
27 $(patsubst %(dotf)s,%(doto)s,$(wildcard polynomial.f)) \
28 $(patsubst %(dotf)s,%(doto)s,$(wildcard helas_calls*.f)) \
29 $(patsubst %(dotf)s,%(doto)s,$(wildcard jamp?_calls_*.f)) \
30 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_born_amps_and_wfs.f)) \
31 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_compute_loop_coefs.f)) \
32 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_helas_calls*.f)) \
33 $(patsubst %(dotf)s,%(doto)s,$(wildcard coef_construction_*.f)) \
34 $(patsubst %(dotf)s,%(doto)s,$(wildcard loop_CT_calls_*.f)) \
35 $(patsubst %(dotf)s,%(doto)s,$(wildcard mp_coef_construction_*.f)) \
36 $(patsubst %(dotf)s,%(doto)s,$(wildcard TIR_interface.f)) \
37 $(patsubst %(dotf)s,%(doto)s,$(wildcard GOLEM_interface.f))
38
39OLP_PROCESS= MadLoopParamReader.o MadLoopCommons.o \
40 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_matrix.f)) \
41 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/improve_ps.f)) \
42 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/born_matrix.f)) \
43 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/CT_interface.f)) \
44 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_num.f)) \
45 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/polynomial.f)) \
46 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/helas_calls*.f)) \
47 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/jamp?_calls_*.f)) \
48 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_born_amps_and_wfs.f)) \
49 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_compute_loop_coefs.f)) \
50 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_helas_calls*.f)) \
51 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/coef_construction_*.f)) \
52 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/loop_CT_calls_*.f)) \
53 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/mp_coef_construction_*.f)) \
54 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/TIR_interface.f)) \
55 $(patsubst %(dotf)s,%(doto)s,$(wildcard P*/GOLEM_interface.f))
56
57$(PROG): check_sa.o $(PROCESS) makefile $(LIBS)
58 $(FC) $(FFLAGS) -o $(PROG) check_sa.o $(PROCESS) $(LINKLIBS)
59
60$(STABCHECKDRIVER): StabilityCheckDriver.o $(PROCESS) makefile $(LIBS)
61 $(FC) $(FFLAGS) -o $(STABCHECKDRIVER) StabilityCheckDriver.o $(PROCESS) $(LINKLIBS)
62
63# The program below is not essential but just an helpful one to run the born only
64$(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)
65 $(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
66
67%(doto)s : %(dotf)s
68 $(FC) $(FFLAGS) -c $< -o $@ %(tir_include)s
69
70$(OLP): $(OLP_PROCESS) $(LIBS)
71 $(FC) -shared $(OLP_PROCESS) -o libMadLoop.$(dylibext) $(LINKLIBS)
72
73clean:
74 @rm -f *.o
075
=== modified file 'UpdateNotes.txt'
--- UpdateNotes.txt 2014-08-06 16:48:15 +0000
+++ UpdateNotes.txt 2014-08-26 07:56:12 +0000
@@ -1,5 +1,6 @@
1Update notes for MadGraph5_aMC@NLO (in reverse time order)1Update notes for MadGraph5_aMC@NLO (in reverse time order)
22
3<<<<<<< TREE
32.1.3()XX/XX/XX)OM: Fix various compatibility problem created by the LHEFv3 version (Thanks to S. Brochet)42.1.3()XX/XX/XX)OM: Fix various compatibility problem created by the LHEFv3 version (Thanks to S. Brochet)
4 OM: Fix a bug for MadSpin in gridpack mode5 OM: Fix a bug for MadSpin in gridpack mode
5 OM: Add a routine to check the validity of LHE file (check_event command)6 OM: Add a routine to check the validity of LHE file (check_event command)
@@ -8,6 +9,26 @@
8 OM: Change colorflow information of LHE file in presence of two epsilon_ijk9 OM: Change colorflow information of LHE file in presence of two epsilon_ijk
9 since PY8 was not able to handle such flow in that format.10 since PY8 was not able to handle such flow in that format.
1011
12=======
132.2.0(21/07/14) VH: General mixed order corrections in MadLoop (only), including QCD/EW/QED and
14 the UFO@NLO model 'loop_qcd_qed_sm'.
15 VH: Re-design of both the tree and MadLoop matrix elements output to compute
16 contributions of different coupling order combinations independently from one another.
17 VH+HS: Tensor integral reduction as implemented in PJFry and IREGI readily available and
18 interfaced to MadLoop's output.
19 VH: Re-structuring of MadLoop's standalone output so as to easily create a single dynamic
20 library including many processes at once. Useful for interfacing MadLoop to other MC's
21 and already working with Sherpa.
22 VH+HS: This branch contains all the fixes for proper treatment of the latest BSM@NLO models
23 produced by FeynRules@NLO. In particular, the fixed related to the presence of majorana
24 particles in loop ME's.
25
26 PT: Redesigned shower_card.dat and eliminated modbos options for Herwig6
27 RF: Change the SPINUP information in the NLO LHEF from 0 to 9 (i.e. sum over helicities)
28 RF: Fixed a bug in the check on the determination of the conflicting BWs.
29 MZ: enabled LHAPDF6 interface
30
31>>>>>>> MERGE-SOURCE
112.1.2(03/07/14) OM: Fix a bug in ALOHA in presence of customized propagator (Thanks Saurabh)322.1.2(03/07/14) OM: Fix a bug in ALOHA in presence of customized propagator (Thanks Saurabh)
12 OM: Fixing some compilation issue with MadWeight (Thanks A. Pin)33 OM: Fixing some compilation issue with MadWeight (Thanks A. Pin)
13 OM: Fixing a bug preventing MadWidth to run due to the model prefixing (depending34 OM: Fixing a bug preventing MadWidth to run due to the model prefixing (depending
1435
=== removed symlink 'VERSION'
=== target was u'madgraph/VERSION'
=== modified file 'aloha/aloha_lib.py'
--- aloha/aloha_lib.py 2014-01-08 20:14:42 +0000
+++ aloha/aloha_lib.py 2014-08-26 07:56:12 +0000
@@ -938,6 +938,7 @@
938 if not veto or not scalar.contains(veto):938 if not veto or not scalar.contains(veto):
939 scalar = scalar.simplify()939 scalar = scalar.simplify()
940 prefactor = 1940 prefactor = 1
941
941 if hasattr(scalar, 'vartype') and scalar.prefactor not in [1,-1]:942 if hasattr(scalar, 'vartype') and scalar.prefactor not in [1,-1]:
942 prefactor = scalar.prefactor943 prefactor = scalar.prefactor
943 scalar.prefactor = 1944 scalar.prefactor = 1
@@ -1048,7 +1049,16 @@
1048 else:1049 else:
1049 raise self.LorentzObjectRepresentationError("There is no key of (0,) in representation.") 1050 raise self.LorentzObjectRepresentationError("There is no key of (0,) in representation.")
1050 else:1051 else:
1051 self[(0,)] = representation1052 if isinstance(representation,dict):
1053 try:
1054 self[(0,)] = representation[(0,)]
1055 except Exception:
1056 if representation:
1057 raise LorentzObjectRepresentation.LorentzObjectRepresentationError("There is no key of (0,) in representation.")
1058 else:
1059 self[(0,)] = 0
1060 else:
1061 self[(0,)] = representation
10521062
1053 def __str__(self):1063 def __str__(self):
1054 """ string representation """1064 """ string representation """
10551065
=== modified file 'aloha/aloha_writers.py'
--- aloha/aloha_writers.py 2014-08-04 14:56:54 +0000
+++ aloha/aloha_writers.py 2014-08-26 07:56:12 +0000
@@ -33,7 +33,6 @@
3333
34 34
35 def __init__(self, abstract_routine, dirpath):35 def __init__(self, abstract_routine, dirpath):
36
37 if aloha.loop_mode:36 if aloha.loop_mode:
38 self.momentum_size = 437 self.momentum_size = 4
39 else:38 else:
@@ -53,21 +52,19 @@
53 self.routine = abstract_routine52 self.routine = abstract_routine
54 self.tag = self.routine.tag53 self.tag = self.routine.tag
55 self.name = name54 self.name = name
55
56 self.particles = [self.type_to_variable[spin] for spin in \56 self.particles = [self.type_to_variable[spin] for spin in \
57 abstract_routine.spins]57 abstract_routine.spins]
58 58
59 self.offshell = abstract_routine.outgoing # position of the outgoing in particle list 59 self.offshell = abstract_routine.outgoing # position of the outgoing in particle list
60 self.outgoing = self.offshell # expected position for the argument list60 self.outgoing = self.offshell # expected position for the argument list
61 if 'C%s' %((self.outgoing + 1) // 2) in self.tag:61 if 'C%s' %((self.outgoing + 1) // 2) in self.tag:
62 #flip the outgoing tag if in conjugate62 #flip the outgoing tag if in conjugate
63 self.outgoing = self.outgoing + self.outgoing % 2 - (self.outgoing +1) % 263 self.outgoing = self.outgoing + self.outgoing % 2 - (self.outgoing +1) % 2
64
65 self.outname = '%s%s' % (self.particles[self.outgoing -1], \64 self.outname = '%s%s' % (self.particles[self.outgoing -1], \
66 self.outgoing)65 self.outgoing)
67
68 #initialize global helper routine66 #initialize global helper routine
69 self.declaration = Declaration_list()67 self.declaration = Declaration_list()
70
71 68
72 69
73 def pass_to_HELAS(self, indices, start=0):70 def pass_to_HELAS(self, indices, start=0):
@@ -200,7 +197,8 @@
200 # couplings197 # couplings
201 if couplings is None:198 if couplings is None:
202 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]199 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]
203 detected_couplings.sort()200 coup_sort = lambda x,y: int(x[4:])-int(y[4:])
201 detected_couplings.sort(coup_sort)
204 if detected_couplings:202 if detected_couplings:
205 couplings = detected_couplings203 couplings = detected_couplings
206 else:204 else:
@@ -449,7 +447,7 @@
449 'im': 'imag(%s)',447 'im': 'imag(%s)',
450 'cmath.sqrt':'sqrt(dble(%s))', 448 'cmath.sqrt':'sqrt(dble(%s))',
451 'sqrt': 'sqrt(dble(%s))',449 'sqrt': 'sqrt(dble(%s))',
452 'complexconjugate': 'conjg(%s)',450 'complexconjugate': 'conjg(dcmplx(%s))',
453 '/' : '{0}/(%s)'.format(one),451 '/' : '{0}/(%s)'.format(one),
454 'pow': '(%s)**(%s)',452 'pow': '(%s)**(%s)',
455 'log': 'log(dble(%s))',453 'log': 'log(dble(%s))',
@@ -689,7 +687,7 @@
689 if number.imag == 1:687 if number.imag == 1:
690 out = 'CI'688 out = 'CI'
691 elif number.imag == -1:689 elif number.imag == -1:
692 out = '-CI'690 out = '-CI'
693 else: 691 else:
694 out = '%s * CI' % self.change_number_format(number.imag)692 out = '%s * CI' % self.change_number_format(number.imag)
695 else:693 else:
@@ -728,8 +726,9 @@
728 keys.sort(sort_fct)726 keys.sort(sort_fct)
729 for name in keys:727 for name in keys:
730 fct, objs = self.routine.fct[name]728 fct, objs = self.routine.fct[name]
731 format = ' %s = %s\n' % (name, self.get_fct_format(fct))729
732 try:730 format = ' %s = %s\n' % (name, self.get_fct_format(fct))
731 try:
733 text = format % ','.join([self.write_obj(obj) for obj in objs])732 text = format % ','.join([self.write_obj(obj) for obj in objs])
734 except TypeError:733 except TypeError:
735 text = format % tuple([self.write_obj(obj) for obj in objs])734 text = format % tuple([self.write_obj(obj) for obj in objs])
@@ -909,10 +908,10 @@
909 # position of the outgoing in particle list 908 # position of the outgoing in particle list
910 self.l_id = [int(c[1:]) for c in abstract_routine.tag if c[0] == 'L'][0] 909 self.l_id = [int(c[1:]) for c in abstract_routine.tag if c[0] == 'L'][0]
911 self.l_helas_id = self.l_id # expected position for the argument list910 self.l_helas_id = self.l_id # expected position for the argument list
912 if 'C%s' %((self.outgoing + 1) // 2) in abstract_routine.tag:911 if 'C%s' %((self.l_id + 1) // 2) in abstract_routine.tag:
913 #flip the outgoing tag if in conjugate912 #flip the outgoing tag if in conjugate
914 self.l_helas_id += self.l_id % 2 - (self.l_id +1) % 2 913 self.l_helas_id += self.l_id % 2 - (self.l_id +1) % 2
915 914
916915
917 def define_expression(self):916 def define_expression(self):
918 """Define the functions in a 100% way """917 """Define the functions in a 100% way """
@@ -1015,30 +1014,25 @@
1015 """define a list with the string of object required as incoming argument"""1014 """define a list with the string of object required as incoming argument"""
10161015
1017 conjugate = [2*(int(c[1:])-1) for c in self.tag if c[0] == 'C']1016 conjugate = [2*(int(c[1:])-1) for c in self.tag if c[0] == 'C']
1018 call_arg = [('list_complex', 'P%s'% self.l_helas_id)] #incoming argument of the routine1017 call_arg = []
1018 #incoming argument of the routine
1019 call_arg.append( ('list_complex', 'P%s'% self.l_helas_id) )
1020
1019 self.declaration.add(call_arg[0])1021 self.declaration.add(call_arg[0])
1020 1022
1021 for index,spin in enumerate(self.particles):1023 for index,spin in enumerate(self.particles):
1022 if self.offshell == index + 1:1024 if self.outgoing == index + 1:
1023 continue1025 continue
1024 if self.l_helas_id == index + 1:1026 if self.l_helas_id == index + 1:
1025 continue1027 continue
1026 1028 call_arg.append(('complex','%s%d' % (spin, index +1)))
1027 if index in conjugate:
1028 index2, spin2 = index+1, self.particles[index+1]
1029 call_arg.append(('complex','%s%d' % (spin2, index2 +1)))
1030 #call_arg.append('%s%d' % (spin, index +1))
1031 elif index-1 in conjugate:
1032 index2, spin2 = index-1, self.particles[index-1]
1033 call_arg.append(('complex','%s%d' % (spin2, index2 +1)))
1034 else:
1035 call_arg.append(('complex','%s%d' % (spin, index +1)))
1036 self.declaration.add(('list_complex', call_arg[-1][-1])) 1029 self.declaration.add(('list_complex', call_arg[-1][-1]))
1037 1030
1038 # couplings1031 # couplings
1039 if couplings is None:1032 if couplings is None:
1040 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]1033 detected_couplings = [name for type, name in self.declaration if name.startswith('COUP')]
1041 detected_couplings.sort()1034 coup_sort = lambda x,y: int(x[4:])-int(y[4:])
1035 detected_couplings.sort(coup_sort)
1042 if detected_couplings:1036 if detected_couplings:
1043 couplings = detected_couplings1037 couplings = detected_couplings
1044 else:1038 else:
@@ -1059,7 +1053,7 @@
1059 self.declaration.add(('double','W%s' % self.outgoing))1053 self.declaration.add(('double','W%s' % self.outgoing))
1060 1054
1061 self.call_arg = call_arg1055 self.call_arg = call_arg
1062 1056
1063 return call_arg1057 return call_arg
10641058
1065 def get_momenta_txt(self):1059 def get_momenta_txt(self):
@@ -1315,9 +1309,9 @@
1315 'im': 'imag(%s)',1309 'im': 'imag(%s)',
1316 'cmath.sqrt':'sqrt(%s)', 1310 'cmath.sqrt':'sqrt(%s)',
1317 'sqrt': 'sqrt(%s)',1311 'sqrt': 'sqrt(%s)',
1318 'complexconjugate': 'conj(%s)',1312 'complexconjugate': 'conj(dcmplx(%s))',
1319 '/' : '{0}/%s'.format(one),1313 '/' : '{0}/%s'.format(one),
1320 'abs': 'abs(%s)' 1314 'abs': 'abs(%s)'
1321 }1315 }
1322 1316
1323 if fct in self.fct_format:1317 if fct in self.fct_format:
@@ -2098,7 +2092,6 @@
2098class WriterFactory(object):2092class WriterFactory(object):
2099 2093
2100 def __new__(cls, data, language, outputdir, tags):2094 def __new__(cls, data, language, outputdir, tags):
2101
2102 language = language.lower()2095 language = language.lower()
2103 if isinstance(data.expr, aloha_lib.SplitCoefficient):2096 if isinstance(data.expr, aloha_lib.SplitCoefficient):
2104 assert language == 'fortran'2097 assert language == 'fortran'
@@ -2106,7 +2099,6 @@
2106 return ALOHAWriterForFortranLoopQP(data, outputdir)2099 return ALOHAWriterForFortranLoopQP(data, outputdir)
2107 else:2100 else:
2108 return ALOHAWriterForFortranLoop(data, outputdir)2101 return ALOHAWriterForFortranLoop(data, outputdir)
2109
2110 if language == 'fortran':2102 if language == 'fortran':
2111 if 'MP' in tags:2103 if 'MP' in tags:
2112 return ALOHAWriterForFortranQP(data, outputdir)2104 return ALOHAWriterForFortranQP(data, outputdir)
21132105
=== modified file 'aloha/create_aloha.py'
--- aloha/create_aloha.py 2014-08-04 14:56:54 +0000
+++ aloha/create_aloha.py 2014-08-26 07:56:12 +0000
@@ -85,7 +85,6 @@
85 85
86 def write(self, output_dir, language='Fortran', mode='self', combine=True,**opt):86 def write(self, output_dir, language='Fortran', mode='self', combine=True,**opt):
87 """ write the content of the object """87 """ write the content of the object """
88
89 writer = aloha_writers.WriterFactory(self, language, output_dir, self.tag)88 writer = aloha_writers.WriterFactory(self, language, output_dir, self.tag)
90 text = writer.write(mode=mode, **opt)89 text = writer.write(mode=mode, **opt)
91 if combine:90 if combine:
@@ -94,8 +93,7 @@
94 text = tuple([old.__add__(new) for old, new in zip(text, 93 text = tuple([old.__add__(new) for old, new in zip(text,
95 writer.write_combined(grouped, mode=mode+'no_include', **opt))])94 writer.write_combined(grouped, mode=mode+'no_include', **opt))])
96 else:95 else:
97 text += writer.write_combined(grouped, mode=mode+'no_include', **opt)96 text += writer.write_combined(grouped, mode=mode+'no_include', **opt)
98
99 if aloha.mp_precision and 'MP' not in self.tag:97 if aloha.mp_precision and 'MP' not in self.tag:
100 self.tag.append('MP')98 self.tag.append('MP')
101 text += self.write(output_dir, language, mode, **opt)99 text += self.write(output_dir, language, mode, **opt)
@@ -288,7 +286,7 @@
288 aloha_lib.KERNEL.use_tag = set(self.kernel_tag) 286 aloha_lib.KERNEL.use_tag = set(self.kernel_tag)
289 else:287 else:
290 lorentz = copy.copy(self.routine_kernel)288 lorentz = copy.copy(self.routine_kernel)
291 aloha_lib.KERNEL.use_tag = set(self.kernel_tag) 289 aloha_lib.KERNEL.use_tag = set(self.kernel_tag)
292 for (i, spin ) in enumerate(self.spins): 290 for (i, spin ) in enumerate(self.spins):
293 id = i + 1291 id = i + 1
294 #Check if this is the outgoing particle292 #Check if this is the outgoing particle
@@ -478,8 +476,11 @@
478 476
479 def compute_loop_coefficient(self, lorentz, outgoing):477 def compute_loop_coefficient(self, lorentz, outgoing):
480 478
481 479
482 l_in = [int(tag[1:]) for tag in self.tag][0]480 l_in = [int(tag[1:]) for tag in self.tag if tag.startswith('L')][0]
481 if (l_in + 1) // 2 in self.conjg:
482 #flip the outgoing tag if in conjugate
483 l_in = l_in + l_in % 2 - (l_in +1) % 2
483 assert l_in != outgoing, 'incoming Open Loop can not be the outcoming one'484 assert l_in != outgoing, 'incoming Open Loop can not be the outcoming one'
484 485
485 # modify the expression for the momenta486 # modify the expression for the momenta
@@ -820,12 +821,10 @@
820 self[(realname, outgoing)].add_combine(m)821 self[(realname, outgoing)].add_combine(m)
821 except Exception,error:822 except Exception,error:
822 self[(realname, self.symmetries[lorentz.name][outgoing])].add_combine(m) 823 self[(realname, self.symmetries[lorentz.name][outgoing])].add_combine(m)
823 824
824
825 if save:825 if save:
826 self.save()826 self.save()
827 827
828
829 def add_Lorentz_object(self, lorentzlist):828 def add_Lorentz_object(self, lorentzlist):
830 """add a series of Lorentz structure created dynamically"""829 """add a series of Lorentz structure created dynamically"""
831 830
@@ -844,12 +843,15 @@
844 self.look_for_symmetries()843 self.look_for_symmetries()
845 # reorganize the data (in order to use optimization for a given lorentz844 # reorganize the data (in order to use optimization for a given lorentz
846 #structure845 #structure
846 aloha.loop_mode = False
847 # self.explicit_combine = False
847 request = {}848 request = {}
848849
849 for list_l_name, tag, outgoing in data:850 for list_l_name, tag, outgoing in data:
850 #allow tag to have integer for retro-compatibility851 #allow tag to have integer for retro-compatibility
851 all_tag = tag[:]852 all_tag = tag[:]
852 conjugate = [i for i in tag if isinstance(i, int)]853 conjugate = [i for i in tag if isinstance(i, int)]
854
853 tag = [i for i in tag if isinstance(i, str) and not i.startswith('P')]855 tag = [i for i in tag if isinstance(i, str) and not i.startswith('P')]
854 tag = tag + ['C%s'%i for i in conjugate] 856 tag = tag + ['C%s'%i for i in conjugate]
855 tag = tag + [i for i in all_tag if isinstance(i, str) and i.startswith('P')] 857 tag = tag + [i for i in all_tag if isinstance(i, str) and i.startswith('P')]
@@ -859,7 +861,7 @@
859 if loop:861 if loop:
860 aloha.loop_mode = True862 aloha.loop_mode = True
861 self.explicit_combine = True863 self.explicit_combine = True
862864
863 for l_name in list_l_name:865 for l_name in list_l_name:
864 try:866 try:
865 request[l_name][conjugate].append((outgoing,tag))867 request[l_name][conjugate].append((outgoing,tag))
@@ -868,7 +870,7 @@
868 request[l_name][conjugate] = [(outgoing,tag)]870 request[l_name][conjugate] = [(outgoing,tag)]
869 except Exception:871 except Exception:
870 request[l_name] = {conjugate: [(outgoing,tag)]}872 request[l_name] = {conjugate: [(outgoing,tag)]}
871 873
872 # Loop on the structure to build exactly what is request874 # Loop on the structure to build exactly what is request
873 for l_name in request:875 for l_name in request:
874 lorentz = eval('self.model.lorentz.%s' % l_name)876 lorentz = eval('self.model.lorentz.%s' % l_name)
@@ -898,7 +900,8 @@
898 conjg_builder = builder.define_conjugate_builder(conjg)900 conjg_builder = builder.define_conjugate_builder(conjg)
899 # Compute routines901 # Compute routines
900 self.compute_aloha(conjg_builder, symmetry=lorentz.name,902 self.compute_aloha(conjg_builder, symmetry=lorentz.name,
901 routines=routines)903 routines=routines)
904
902 905
903 # Build mutiple lorentz call906 # Build mutiple lorentz call
904 for list_l_name, tag, outgoing in data:907 for list_l_name, tag, outgoing in data:
@@ -940,8 +943,10 @@
940 conjg_builder = builder.define_conjugate_builder(conjg)943 conjg_builder = builder.define_conjugate_builder(conjg)
941 # Compute routines944 # Compute routines
942 self.compute_aloha(conjg_builder, symmetry=lorentz.name,945 self.compute_aloha(conjg_builder, symmetry=lorentz.name,
943 routines=routines) 946 routines=routines)
944 947
948
949
945 def compute_aloha(self, builder, symmetry=None, routines=None, tag=[]):950 def compute_aloha(self, builder, symmetry=None, routines=None, tag=[]):
946 """ define all the AbstractRoutine linked to a given lorentz structure951 """ define all the AbstractRoutine linked to a given lorentz structure
947 symmetry authorizes to use the symmetry of anoter lorentz structure.952 symmetry authorizes to use the symmetry of anoter lorentz structure.
@@ -971,7 +976,7 @@
971 wavefunction = builder.compute_routine(outgoing, tag)976 wavefunction = builder.compute_routine(outgoing, tag)
972 #Store the information977 #Store the information
973 self.set(realname, outgoing, wavefunction)978 self.set(realname, outgoing, wavefunction)
974 979
975980
976 def compute_aloha_without_kernel(self, builder, symmetry=None, routines=None):981 def compute_aloha_without_kernel(self, builder, symmetry=None, routines=None):
977 """define all the AbstractRoutine linked to a given lorentz structure982 """define all the AbstractRoutine linked to a given lorentz structure
@@ -992,10 +997,9 @@
992997
993 def write(self, output_dir, language):998 def write(self, output_dir, language):
994 """ write the full set of Helicity Routine in output_dir"""999 """ write the full set of Helicity Routine in output_dir"""
995
996 for abstract_routine in self.values():1000 for abstract_routine in self.values():
997 abstract_routine.write(output_dir, language)1001 abstract_routine.write(output_dir, language)
998 1002
999 for routine in self.external_routines:1003 for routine in self.external_routines:
1000 self.locate_external(routine, language, output_dir)1004 self.locate_external(routine, language, output_dir)
10011005
10021006
=== modified file 'input/.mg5_configuration_default.txt'
--- input/.mg5_configuration_default.txt 2014-06-30 11:59:30 +0000
+++ input/.mg5_configuration_default.txt 2014-08-26 07:56:12 +0000
@@ -90,7 +90,7 @@
90# run_mode = 290# run_mode = 2
9191
92#! Cluster Type [pbs|sge|condor|lsf|ge|slurm] Use for cluster run only92#! Cluster Type [pbs|sge|condor|lsf|ge|slurm] Use for cluster run only
93#! And cluster queue93#! And cluster queue (or partition for slurm)
94# cluster_type = condor94# cluster_type = condor
95# cluster_queue = madgraph95# cluster_queue = madgraph
9696
@@ -151,6 +151,20 @@
151#! Set what OLP to use for the loop ME generation151#! Set what OLP to use for the loop ME generation
152# OLP = MadLoop152# OLP = MadLoop
153153
154#! Set the PJFry++ lib libpjfry.a directory
155#! if auto: try to find it automatically on the system (default)
156#! if '' or None: not use PJFry++
157#! if pjfry=/PATH/TO/pjfry/lib: use that specific installation path for PJFry++
158# pjfry = auto
159
160#! Set the Golem95 lib libgolem.a directory
161#! It only supports version higher than 1.3.0
162#! if auto: try to find it automatically on the system (default)
163#! if '' or None: not use Golem95
164#! if golem=/PATH/TO/golem/lib: use that speficif installation path for Golem95
165# golem = auto
166
167
154#! Set how MadLoop dependencies (such as CutTools) should be handled168#! Set how MadLoop dependencies (such as CutTools) should be handled
155#! > external : ML5 places a link to the MG5_aMC-wide libraries169#! > external : ML5 places a link to the MG5_aMC-wide libraries
156#! > internal : ML5 copies all dependencies in the output so that it is independent170#! > internal : ML5 copies all dependencies in the output so that it is independent
@@ -163,3 +177,4 @@
163# syscalc_path = ./SysCalc177# syscalc_path = ./SysCalc
164178
165179
180
166181
=== removed file 'input/proc_card_default.dat'
--- input/proc_card_default.dat 2013-12-09 01:31:26 +0000
+++ input/proc_card_default.dat 1970-01-01 00:00:00 +0000
@@ -1,40 +0,0 @@
1#************************************************************
2#* MadGraph 5 *
3#* *
4#* * * *
5#* * * * * *
6#* * * * * 5 * * * * *
7#* * * * * *
8#* * * *
9#* *
10#* *
11#* The MadGraph Development Team - Please visit us at *
12#* https://server06.fynu.ucl.ac.be/projects/madgraph *
13#* *
14#************************************************************
15#* *
16#* Command File for MadGraph 5 *
17#* *
18#* run as ./bin/mg5 filename *
19#* *
20#************************************************************
21import model sm
22# Define multiparticle labels
23define p = g u c d s u~ c~ d~ s~
24define j = g u c d s u~ c~ d~ s~
25define l+ = e+ mu+
26define l- = e- mu-
27define vl = ve vm vt
28define vl~ = ve~ vm~ vt~
29# Specify process(es) to run
30generate p p > e- ve~ @1
31add process p p > e- ve~ j @2
32add process p p > t t~ @3
33# Output processes to MadEvent directory
34output
35# This will create a directory PROC_$MODELNAME_$X
36# If you want to specify the path/name of the directory use
37# output PATH
38
39# To generate events, you can go to the created directory and
40# run ./bin/generate_events
41\ No newline at end of file0\ No newline at end of file
421
=== modified file 'madgraph/VERSION'
--- madgraph/VERSION 2014-07-03 13:37:06 +0000
+++ madgraph/VERSION 2014-08-26 07:56:12 +0000
@@ -1,5 +1,5 @@
1version = 2.1.21version = 2.2.0
2date = 2014-07-032date = 2014-07-21
33
44
55
66
=== modified file 'madgraph/core/base_objects.py'
--- madgraph/core/base_objects.py 2014-06-29 15:15:00 +0000
+++ madgraph/core/base_objects.py 2014-08-26 07:56:12 +0000
@@ -94,7 +94,6 @@
94 """Set the value of the property name. First check if value94 """Set the value of the property name. First check if value
95 is a valid value for the considered property. Return True if the95 is a valid value for the considered property. Return True if the
96 value has been correctly set, False otherwise."""96 value has been correctly set, False otherwise."""
97
98 if not __debug__ or force:97 if not __debug__ or force:
99 self[name] = value98 self[name] = value
100 return True99 return True
@@ -345,6 +344,16 @@
345 in argument given the model specified. It is very fast for usual models"""344 in argument given the model specified. It is very fast for usual models"""
346 345
347 for int in model['interactions'].get_type('base'):346 for int in model['interactions'].get_type('base'):
347 # We discard the interactions with more than one type of orders
348 # contributing because it then doesn't necessarly mean that this
349 # particle (self) is charged under the group corresponding to the
350 # coupling order 'order'. The typical example is in SUSY which
351 # features a ' photon-gluon-squark-antisquark ' interaction which
352 # has coupling orders QED=1, QCD=1 and would induce the photon
353 # to be considered as a valid particle to circulate in a loop of
354 # type "QCD".
355 if len(int.get('orders'))>1:
356 continue
348 if order in int.get('orders').keys() and self.get('pdg_code') in \357 if order in int.get('orders').keys() and self.get('pdg_code') in \
349 [part.get('pdg_code') for part in int.get('particles')]:358 [part.get('pdg_code') for part in int.get('particles')]:
350 return True359 return True
@@ -385,7 +394,24 @@
385 return - self['color']394 return - self['color']
386 else:395 else:
387 return self['color']396 return self['color']
388397
398 def get_charge(self):
399 """Return the charge code with a correct minus sign"""
400
401 if not self['is_part']:
402 return - self['charge']
403 else:
404 return self['charge']
405
406 def get_anti_charge(self):
407 """Return the charge code of the antiparticle with a correct minus sign
408 """
409
410 if self['is_part']:
411 return - self['charge']
412 else:
413 return self['charge']
414
389 def get_name(self):415 def get_name(self):
390 """Return the name if particle, antiname if antiparticle"""416 """Return the name if particle, antiname if antiparticle"""
391417
@@ -453,10 +479,28 @@
453 corresponding particle (first one in the list), with the 479 corresponding particle (first one in the list), with the
454 is_part flag set accordingly. None otherwise."""480 is_part flag set accordingly. None otherwise."""
455 481
482 assert isinstance(name, str)
483
456 part = self.find_name(name)484 part = self.find_name(name)
457 if not part:485 if not part:
486 # Then try to look for a particle with that PDG
487 try:
488 pdg = int(name)
489 except ValueError:
490 return None
491
492 for p in self:
493 if p.get_pdg_code()==pdg:
494 part = copy.copy(p)
495 part.set('is_part', True)
496 return part
497 elif p.get_anti_pdg_code()==pdg:
498 part = copy.copy(p)
499 part.set('is_part', False)
500 return part
501
458 return None502 return None
459 part = copy.copy(part) 503 part = copy.copy(part)
460 504
461 if part.get('name') == name:505 if part.get('name') == name:
462 part.set('is_part', True)506 part.set('is_part', True)
@@ -1930,6 +1974,13 @@
1930 res.append(leg.get('id'))1974 res.append(leg.get('id'))
19311975
1932 return res1976 return res
1977
1978 def sort(self,*args, **opts):
1979 """Match with FKSLegList"""
1980 Opts=copy.copy(opts)
1981 if 'pert' in Opts.keys():
1982 del Opts['pert']
1983 return super(LegList,self).sort(*args, **Opts)
19331984
19341985
1935#===============================================================================1986#===============================================================================
@@ -2159,6 +2210,25 @@
2159 coupling_orders['WEIGHTED'] = weight2210 coupling_orders['WEIGHTED'] = weight
2160 self.set('orders', coupling_orders)2211 self.set('orders', coupling_orders)
21612212
2213 def pass_squared_order_constraints(self, diag_multiplier, squared_orders,
2214 sq_orders_types):
2215 """ Returns wether the contributiong consisting in the current diagram
2216 multiplied by diag_multiplier passes the *positive* squared_orders
2217 specified ( a dictionary ) of types sq_order_types (a dictionary whose
2218 values are the relational operator used to define the constraint of the
2219 order in key)."""
2220
2221 for order, value in squared_orders.items():
2222 if value<0:
2223 continue
2224 combined_order = self.get_order(order) + \
2225 diag_multiplier.get_order(order)
2226 if ( sq_orders_types[order]=='==' and combined_order != value ) or \
2227 ( sq_orders_types[order] in ['=', '<='] and combined_order > value) or \
2228 ( sq_orders_types[order]=='>' and combined_order <= value) :
2229 return False
2230 return True
2231
2162 def get_order(self, order):2232 def get_order(self, order):
2163 """Return the order of this diagram. It returns 0 if it is not present."""2233 """Return the order of this diagram. It returns 0 if it is not present."""
21642234
@@ -2299,6 +2369,40 @@
22992369
2300 return max_order2370 return max_order
23012371
2372 def apply_negative_sq_order(self, ref_diag_list, order, value, order_type):
2373 """ This function returns a fitlered version of the diagram list self
2374 which satisfy the negative squared_order constraint 'order' with negative
2375 value 'value' and of type 'order_type', assuming that the diagram_list
2376 it must be squared against is 'reg_diag_list'. It also returns the
2377 new postive target squared order which correspond to this negative order
2378 constraint. Example: u u~ > d d~ QED^2<=-2 means that one wants to
2379 pick terms only up to the the next-to-leading order contributiong in QED,
2380 which is QED=2 in this case, so that target_order=4 is returned."""
2381
2382 # First we must compute all contributions to that order
2383 target_order = min(ref_diag_list.get_order_values(order))+\
2384 min(self.get_order_values(order))+2*(-value-1)
2385
2386 new_list = self.apply_positive_sq_orders(ref_diag_list,
2387 {order:target_order}, {order:order_type})
2388
2389 return new_list, target_order
2390
2391 def apply_positive_sq_orders(self, ref_diag_list, sq_orders, sq_order_types):
2392 """ This function returns a filtered version of self which contain
2393 only the diagram which satisfy the positive squared order constraints
2394 sq_orders of type sq_order_types and assuming that the diagrams are
2395 multiplied with those of the reference diagram list ref_diag_list."""
2396
2397 new_diag_list = DiagramList()
2398 for tested_diag in self:
2399 for ref_diag in ref_diag_list:
2400 if tested_diag.pass_squared_order_constraints(ref_diag,
2401 sq_orders,sq_order_types):
2402 new_diag_list.append(tested_diag)
2403 break
2404 return new_diag_list
2405
2302 def get_min_order(self,order):2406 def get_min_order(self,order):
2303 """ Return the order of the diagram in the list with the mimimum coupling2407 """ Return the order of the diagram in the list with the mimimum coupling
2304 order for the coupling specified """2408 order for the coupling specified """
@@ -2312,6 +2416,19 @@
23122416
2313 return min_order2417 return min_order
23142418
2419 def get_order_values(self, order):
2420 """ Return the list of possible values appearing in the diagrams of this
2421 list for the order given in argument """
2422
2423 values=set([])
2424 for diag in self:
2425 if order in diag['orders'].keys():
2426 values.add(diag['orders'][order])
2427 else:
2428 values.add(0)
2429
2430 return list(values)
2431
2315#===============================================================================2432#===============================================================================
2316# Process2433# Process
2317#===============================================================================2434#===============================================================================
@@ -2353,10 +2470,25 @@
2353 # gives the upper bound for the total weighted order of the2470 # gives the upper bound for the total weighted order of the
2354 # squared amplitude.2471 # squared amplitude.
2355 self['squared_orders'] = {}2472 self['squared_orders'] = {}
2473 # The squared order (sqorders) constraints above can either be upper
2474 # bound (<=) or exact match (==) depending on how they were specified
2475 # in the user input. This choice is stored in the dictionary below.
2476 # Notice that the upper bound is the default
2477 self['sqorders_types'] = {}
2356 self['has_born'] = True2478 self['has_born'] = True
2357 # The NLO_mode is always None for a tree-level process and can be2479 # The NLO_mode is always None for a tree-level process and can be
2358 # 'all', 'real', 'virt' for a loop process.2480 # 'all', 'real', 'virt' for a loop process.
2359 self['NLO_mode'] = 'tree'2481 self['NLO_mode'] = 'tree'
2482 # The user might want to have the individual matrix element evaluations
2483 # for specific values of the coupling orders. The list below specifies
2484 # what are the coupling names which need be individually treated.
2485 # For example, for the process p p > j j [] QED=2 (QED=2 is
2486 # then a squared order constraint), then QED will appear in the
2487 # 'split_orders' list so that the subroutine in matrix.f return the
2488 # evaluation of the matrix element individually for the pure QCD
2489 # contribution 'QCD=4 QED=0', the pure interference 'QCD=2 QED=2' and
2490 # the pure QED contribution of order 'QCD=0 QED=4'.
2491 self['split_orders'] = []
23602492
2361 def filter(self, name, value):2493 def filter(self, name, value):
2362 """Filter for valid process property values."""2494 """Filter for valid process property values."""
@@ -2369,6 +2501,24 @@
2369 if name in ['orders', 'overall_orders','squared_orders']:2501 if name in ['orders', 'overall_orders','squared_orders']:
2370 Interaction.filter(Interaction(), 'orders', value)2502 Interaction.filter(Interaction(), 'orders', value)
23712503
2504 if name == 'sqorders_types':
2505 if not isinstance(value, dict):
2506 raise self.PhysicsObjectError, \
2507 "%s is not a valid dictionary" % str(value)
2508 for order in value.keys()+value.values():
2509 if not isinstance(order, str):
2510 raise self.PhysicsObjectError, \
2511 "%s is not a valid string" % str(value)
2512
2513 if name == 'split_orders':
2514 if not isinstance(value, list):
2515 raise self.PhysicsObjectError, \
2516 "%s is not a valid list" % str(value)
2517 for order in value:
2518 if not isinstance(order, str):
2519 raise self.PhysicsObjectError, \
2520 "%s is not a valid string" % str(value)
2521
2372 if name == 'model':2522 if name == 'model':
2373 if not isinstance(value, Model):2523 if not isinstance(value, Model):
2374 raise self.PhysicsObjectError, \2524 raise self.PhysicsObjectError, \
@@ -2471,12 +2621,29 @@
24712621
2472 return super(Process, self).set(name, value) # call the mother routine2622 return super(Process, self).set(name, value) # call the mother routine
24732623
2624 def get_squared_order_type(self, order):
2625 """ Return what kind of squared order constraint was specified for the
2626 order 'order'."""
2627
2628 if order in self['sqorders_types'].keys():
2629 return self['sqorders_types'][order]
2630 else:
2631 # Default behavior '=' is interpreted as upper bound '<='
2632 return '='
2633
2474 def get(self, name):2634 def get(self, name):
2475 """Special get for legs_with_decays"""2635 """Special get for legs_with_decays"""
2476 2636
2477 if name == 'legs_with_decays':2637 if name == 'legs_with_decays':
2478 self.get_legs_with_decays()2638 self.get_legs_with_decays()
24792639
2640 if name == 'sqorders_types':
2641 # We must make sure that there is a type for each sqorder defined
2642 for order in self['squared_orders'].keys():
2643 if order not in self['sqorders_types']:
2644 # Then assign its type to the default '='
2645 self['sqorders_types'][order]='='
2646
2480 return super(Process, self).get(name) # call the mother routine2647 return super(Process, self).get(name) # call the mother routine
24812648
2482 def get_sorted_keys(self):2649 def get_sorted_keys(self):
@@ -2486,8 +2653,8 @@
2486 'model', 'id', 'required_s_channels', 2653 'model', 'id', 'required_s_channels',
2487 'forbidden_onsh_s_channels', 'forbidden_s_channels',2654 'forbidden_onsh_s_channels', 'forbidden_s_channels',
2488 'forbidden_particles', 'is_decay_chain', 'decay_chains',2655 'forbidden_particles', 'is_decay_chain', 'decay_chains',
2489 'legs_with_decays',2656 'legs_with_decays', 'perturbation_couplings', 'has_born',
2490 'perturbation_couplings', 'has_born', 'NLO_mode']2657 'NLO_mode','split_orders']
24912658
2492 def nice_string(self, indent=0, print_weighted = True):2659 def nice_string(self, indent=0, print_weighted = True):
2493 """Returns a nicely formated string about current process2660 """Returns a nicely formated string about current process
@@ -2519,7 +2686,8 @@
2519 # Add orders2686 # Add orders
2520 if self['orders']:2687 if self['orders']:
2521 mystr = mystr + " ".join([key + '=' + repr(self['orders'][key]) \2688 mystr = mystr + " ".join([key + '=' + repr(self['orders'][key]) \
2522 for key in self['orders'] if print_weighted or key!='WEIGHTED']) + ' '2689 for key in self['orders'] if (print_weighted or key!='WEIGHTED') \
2690 and not key in self['squared_orders'].keys()]) + ' '
25232691
2524 # Add perturbation_couplings2692 # Add perturbation_couplings
2525 if self['perturbation_couplings']:2693 if self['perturbation_couplings']:
@@ -2531,9 +2699,11 @@
2531 mystr = mystr + '] '2699 mystr = mystr + '] '
25322700
2533 # Add squared orders2701 # Add squared orders
2534 if self['perturbation_couplings'] and self['squared_orders']:2702 if self['squared_orders']:
2535 mystr = mystr + " ".join([key + '=' + repr(self['squared_orders'][key]) \2703 mystr = mystr + " ".join([key + '^2%s%d'%\
2536 for key in self['squared_orders'] if print_weighted or key!='WEIGHTED']) + ' ' 2704 (self.get_squared_order_type(key),self['squared_orders'][key]) \
2705 for key in self['squared_orders'].keys() \
2706 if print_weighted or key!='WEIGHTED']) + ' '
25372707
2538 # Add forbidden s-channels2708 # Add forbidden s-channels
2539 if self['forbidden_onsh_s_channels']:2709 if self['forbidden_onsh_s_channels']:
@@ -2786,6 +2956,20 @@
27862956
2787 # Helper functions2957 # Helper functions
27882958
2959 def are_negative_orders_present(self):
2960 """ Check iteratively that no coupling order constraint include negative
2961 values."""
2962
2963 if any(val<0 for val in self.get('orders').values()+\
2964 self.get('squared_orders').values()):
2965 return True
2966
2967 for procdef in self['decay_chains']:
2968 if procdef.are_negative_orders_present():
2969 return True
2970
2971 return False
2972
2789 def are_decays_perturbed(self):2973 def are_decays_perturbed(self):
2790 """ Check iteratively that the decayed processes are not perturbed """2974 """ Check iteratively that the decayed processes are not perturbed """
2791 2975
@@ -2794,6 +2978,14 @@
2794 return True2978 return True
2795 return False2979 return False
2796 2980
2981 def decays_have_squared_orders(self):
2982 """ Check iteratively that the decayed processes are not perturbed """
2983
2984 for procdef in self['decay_chains']:
2985 if procdef['squared_orders']!={} or procdef.decays_have_squared_orders():
2986 return True
2987 return False
2988
2797 def get_ninitial(self):2989 def get_ninitial(self):
2798 """Gives number of initial state particles"""2990 """Gives number of initial state particles"""
27992991
@@ -2945,12 +3137,23 @@
2945 # Ensure that expansion orders are taken into account3137 # Ensure that expansion orders are taken into account
2946 expansion_orders = self.get('model').get('expansion_order')3138 expansion_orders = self.get('model').get('expansion_order')
2947 orders = self.get('orders')3139 orders = self.get('orders')
3140 sq_orders = self.get('squared_orders')
2948 3141
2949 tmp = [(k,v) for (k,v) in expansion_orders.items() if 0 < v < 99]3142 tmp = [(k,v) for (k,v) in expansion_orders.items() if 0 < v < 99]
2950 for (k,v) in tmp: 3143 for (k,v) in tmp:
2951 if k in orders:3144 if k in orders:
2952 if v < orders[k]:3145 if v < orders[k]:
2953 logger.warning('''The coupling order (%s=%s) specified is larger than the one allowed 3146 if k in sq_orders.keys() and \
3147 (sq_orders[k]>v or sq_orders[k]<0):
3148 logger.warning(
3149'''The process with the squared coupling order (%s^2%s%s) specified can potentially
3150recieve contributions with powers of the coupling %s larger than the maximal
3151value allowed by the model builder (%s). Hence, MG5_aMC sets the amplitude order
3152for that coupling to be this maximal one. '''%(k,self.get('sqorders_types')[k],
3153 self.get('squared_orders')[k],k,v))
3154 else:
3155 logger.warning(
3156'''The coupling order (%s=%s) specified is larger than the one allowed
2954 by the model builder. The maximal value allowed is %s. 3157 by the model builder. The maximal value allowed is %s.
2955 We set the %s order to this value''' % (k,orders[k],v,k))3158 We set the %s order to this value''' % (k,orders[k],v,k))
2956 orders[k] = v3159 orders[k] = v
@@ -3113,7 +3316,7 @@
31133316
3114 return max_order_now, particles, hierarchy3317 return max_order_now, particles, hierarchy
31153318
3116 def nice_string(self, indent=0):3319 def nice_string(self, indent=0, print_weighted=False):
3117 """Returns a nicely formated string about current process3320 """Returns a nicely formated string about current process
3118 content"""3321 content"""
31193322
@@ -3174,6 +3377,12 @@
3174 mystr = mystr + order + ' '3377 mystr = mystr + order + ' '
3175 mystr = mystr + '] '3378 mystr = mystr + '] '
31763379
3380 if self['squared_orders']:
3381 mystr = mystr + " ".join([key + '^2%s%d'%\
3382 (self.get_squared_order_type(key),self['squared_orders'][key]) \
3383 for key in self['squared_orders'].keys() \
3384 if print_weighted or key!='WEIGHTED']) + ' '
3385
3177 # Remove last space3386 # Remove last space
3178 mystr = mystr[:-1]3387 mystr = mystr[:-1]
31793388
@@ -3192,6 +3401,30 @@
31923401
3193 return mystr3402 return mystr
31943403
3404 def get_process_with_legs(self, LegList):
3405 """ Return a Process object which has the same properties of this
3406 ProcessDefinition but with the specified LegList as legs attribute.
3407 """
3408
3409 return Process({\
3410 'legs': LegList,
3411 'model':self.get('model'),
3412 'id': self.get('id'),
3413 'orders': self.get('orders'),
3414 'sqorders_types': self.get('sqorders_types'),
3415 'squared_orders': self.get('squared_orders'),
3416 'has_born': self.get('has_born'),
3417 'required_s_channels': self.get('required_s_channels'),
3418 'forbidden_onsh_s_channels': self.get('forbidden_onsh_s_channels'),
3419 'forbidden_s_channels': self.get('forbidden_s_channels'),
3420 'forbidden_particles': self.get('forbidden_particles'),
3421 'perturbation_couplings': self.get('perturbation_couplings'),
3422 'is_decay_chain': self.get('is_decay_chain'),
3423 'overall_orders': self.get('overall_orders'),
3424 'split_orders': self.get('split_orders'),
3425 'NLO_mode': self.get('NLO_mode')
3426 })
3427
3195 def get_process(self, initial_state_ids, final_state_ids):3428 def get_process(self, initial_state_ids, final_state_ids):
3196 """ Return a Process object which has the same properties of this 3429 """ Return a Process object which has the same properties of this
3197 ProcessDefinition but with the specified given leg ids. """3430 ProcessDefinition but with the specified given leg ids. """
@@ -3207,19 +3440,9 @@
3207 for i, fs_id in enumerate(final_state_ids):3440 for i, fs_id in enumerate(final_state_ids):
3208 assert fs_id in my_fsids[i]3441 assert fs_id in my_fsids[i]
3209 3442
3210 return Process({\3443 return self.get_process_with_legs(LegList(\
3211 'legs': LegList(\
3212 [Leg({'id': id, 'state':False}) for id in initial_state_ids] + \3444 [Leg({'id': id, 'state':False}) for id in initial_state_ids] + \
3213 [Leg({'id': id, 'state':True}) for id in final_state_ids]),3445 [Leg({'id': id, 'state':True}) for id in final_state_ids]))
3214 'model':self.get('model'),
3215 'id': self.get('id'),
3216 'orders': self.get('orders'),
3217 'required_s_channels': self.get('required_s_channels'),
3218 'forbidden_s_channels': self.get('forbidden_s_channels'),
3219 'forbidden_particles': self.get('forbidden_particles'),
3220 'perturbation_couplings': self.get('perturbation_couplings'),
3221 'is_decay_chain': self.get('is_decay_chain'),
3222 'overall_orders': self.get('overall_orders')})
32233446
3224 def __eq__(self, other):3447 def __eq__(self, other):
3225 """Overloading the equality operator, so that only comparison3448 """Overloading the equality operator, so that only comparison
32263449
=== modified file 'madgraph/core/color_algebra.py'
--- madgraph/core/color_algebra.py 2013-11-12 23:52:05 +0000
+++ madgraph/core/color_algebra.py 2014-08-26 07:56:12 +0000
@@ -165,6 +165,36 @@
165 return None165 return None
166166
167#===============================================================================167#===============================================================================
168# ColorOne
169#===============================================================================
170class ColorOne(ColorObject):
171 """The one of the color object"""
172
173 def __init__(self, *args):
174 """Check for no index"""
175
176 assert len(args) == 0 , "ColorOne objects must have no index!"
177
178 super(ColorOne, self).__init__()
179
180 def simplify(self):
181 """"""
182 assert len(self)==0, "There is argument(s) in color object ColorOne."
183 col_str = ColorString()
184 col_str.coeff = fractions.Fraction(1, 1)
185 return ColorFactor([col_str])
186
187
188 def pair_simplify(self, col_obj):
189 """Implement ColorOne product simplification"""
190
191 if any(isinstance(col_obj, c_type) for c_type in [Tr,T,f,d,ColorOne]):
192 col_str = ColorString([col_obj])
193 return ColorFactor([col_str])
194 return None
195
196
197#===============================================================================
168# T198# T
169#===============================================================================199#===============================================================================
170class T(ColorObject):200class T(ColorObject):
@@ -705,6 +735,10 @@
705735
706 ret_list = [(col_obj.__class__.__name__, tuple(col_obj)) \736 ret_list = [(col_obj.__class__.__name__, tuple(col_obj)) \
707 for col_obj in self]737 for col_obj in self]
738
739 if not ret_list and self.coeff:
740 ret_list=[("ColorOne",tuple([]))]
741
708 ret_list.sort()742 ret_list.sort()
709 self.immutable = tuple(ret_list)743 self.immutable = tuple(ret_list)
710744
711745
=== modified file 'madgraph/core/color_amp.py'
--- madgraph/core/color_amp.py 2013-11-12 23:52:05 +0000
+++ madgraph/core/color_amp.py 2014-08-26 07:56:12 +0000
@@ -67,10 +67,12 @@
67 min_index, res_dict = self.add_vertex(vertex, diagram, model,67 min_index, res_dict = self.add_vertex(vertex, diagram, model,
68 repl_dict, res_dict, min_index)68 repl_dict, res_dict, min_index)
6969
70 # Return an empty list if all entries are empty70 # if the process has no QCD particles
71 if all([cs == color_algebra.ColorString() \71 # Return a list filled with ColorOne if all entries are empty ColorString()
72 for cs in res_dict.values()]):72 empty_colorstring = color_algebra.ColorString()
73 res_dict = {}73 if all(cs == empty_colorstring for cs in res_dict.values()):
74 res_dict = dict((key, color_algebra.ColorString(
75 [color_algebra.ColorOne()])) for key in res_dict)
74 76
75 return res_dict77 return res_dict
7678
@@ -369,7 +371,6 @@
369 indices) associated to my_color_string. Take a list of the external leg371 indices) associated to my_color_string. Take a list of the external leg
370 color octet state indices as an input. Returns only the leading N 372 color octet state indices as an input. Returns only the leading N
371 contribution!"""373 contribution!"""
372
373 # Create a new color factor to allow for simplification374 # Create a new color factor to allow for simplification
374 my_cf = color_algebra.ColorFactor([my_color_string])375 my_cf = color_algebra.ColorFactor([my_color_string])
375376
@@ -453,7 +454,6 @@
453 # Rebuild a color string from a CB entry454 # Rebuild a color string from a CB entry
454 col_str = color_algebra.ColorString()455 col_str = color_algebra.ColorString()
455 col_str.from_immutable(col_basis_entry)456 col_str.from_immutable(col_basis_entry)
456
457 for (leg_num, leg_repr) in repr_dict.items():457 for (leg_num, leg_repr) in repr_dict.items():
458 # By default, assign a (0,0) color flow458 # By default, assign a (0,0) color flow
459 res_dict[leg_num] = [0, 0]459 res_dict[leg_num] = [0, 0]
@@ -548,7 +548,7 @@
548548
549 self.col_matrix_fixed_Nc = {}549 self.col_matrix_fixed_Nc = {}
550 self.inverted_col_matrix = {}550 self.inverted_col_matrix = {}
551551
552 self._col_basis1 = col_basis552 self._col_basis1 = col_basis
553 if col_basis2:553 if col_basis2:
554 self._col_basis2 = col_basis2554 self._col_basis2 = col_basis2
@@ -574,7 +574,6 @@
574 enumerate(sorted(self._col_basis1.keys())):574 enumerate(sorted(self._col_basis1.keys())):
575 for i2, struct2 in \575 for i2, struct2 in \
576 enumerate(sorted(self._col_basis2.keys())):576 enumerate(sorted(self._col_basis2.keys())):
577
578 # Only scan upper right triangle if symmetric577 # Only scan upper right triangle if symmetric
579 if is_symmetric and i2 < i1:578 if is_symmetric and i2 < i1:
580 continue579 continue
@@ -699,13 +698,18 @@
699 appearing in struct1. Assumes internal summed indices are negative."""698 appearing in struct1. Assumes internal summed indices are negative."""
700699
701 # First, determines what is the smallest index appearing in struct1700 # First, determines what is the smallest index appearing in struct1
702 min_index = min(reduce(operator.add,701 #list2 = reduce(operator.add,[list(elem[1]) for elem in struct1])
703 [list(elem[1]) for elem in struct1])) - 1702 list2 = sum((list(elem[1]) for elem in struct1),[])
703 if not list2:
704 min_index = -1
705 else:
706 min_index = min(list2) - 1
707
704 # Second, determines the summed indices in struct2 and create a 708 # Second, determines the summed indices in struct2 and create a
705 # replacement dictionary709 # replacement dictionary
706 repl_dict = {}710 repl_dict = {}
707 list2 = reduce(operator.add,711 #list2 = reduce(operator.add,
708 [list(elem[1]) for elem in struct1])712 # [list(elem[1]) for elem in struct1])
709 for summed_index in list(set([i for i in list2 \713 for summed_index in list(set([i for i in list2 \
710 if list2.count(i) == 2])):714 if list2.count(i) == 2])):
711 repl_dict[summed_index] = min_index715 repl_dict[summed_index] = min_index
@@ -732,5 +736,8 @@
732 @staticmethod736 @staticmethod
733 def lcmm(*args):737 def lcmm(*args):
734 """Return lcm of args."""738 """Return lcm of args."""
735 return reduce(ColorMatrix.lcm, args)739 if args:
740 return reduce(ColorMatrix.lcm, args)
741 else:
742 return 1
736743
737744
=== modified file 'madgraph/core/diagram_generation.py'
--- madgraph/core/diagram_generation.py 2014-06-29 15:15:00 +0000
+++ madgraph/core/diagram_generation.py 2014-08-26 07:56:12 +0000
@@ -387,7 +387,6 @@
387387
388 def __init__(self, argument=None):388 def __init__(self, argument=None):
389 """Allow initialization with Process"""389 """Allow initialization with Process"""
390
391 if isinstance(argument, base_objects.Process):390 if isinstance(argument, base_objects.Process):
392 super(Amplitude, self).__init__()391 super(Amplitude, self).__init__()
393 self.set('process', argument)392 self.set('process', argument)
@@ -507,7 +506,6 @@
507 DiagramList by the function. This is controlled by the argument506 DiagramList by the function. This is controlled by the argument
508 returndiag.507 returndiag.
509 """508 """
510
511 process = self.get('process')509 process = self.get('process')
512 model = process.get('model')510 model = process.get('model')
513 legs = process.get('legs')511 legs = process.get('legs')
@@ -744,13 +742,20 @@
744 newleg = copy.copy(vert.get('legs').pop(-1))742 newleg = copy.copy(vert.get('legs').pop(-1))
745 newleg.set('onshell', False)743 newleg.set('onshell', False)
746 vert.get('legs').append(newleg)744 vert.get('legs').append(newleg)
747
748 # Set diagrams to res
749 self['diagrams'] = res
750745
751 # Set actual coupling orders for each diagram746 # Set actual coupling orders for each diagram
752 for diagram in res:747 for diagram in res:
753 diagram.calculate_orders(model)748 diagram.calculate_orders(model)
749
750 # Filter the diagrams according to the squared coupling order
751 # constraints and possible the negative one. Remember that OrderName=-n
752 # means that the user wants to include everything up to the N^(n+1)LO
753 # contribution in that order and at most one order can be restricted
754 # in this way. We shall do this only if the diagrams are not asked to
755 # be returned, as it is the case for NLO because it this case the
756 # interference are not necessarily among the diagrams generated here only.
757 if not returndiag and len(res)>0:
758 res = self.apply_squared_order_constraints(res)
754759
755 # Replace final id=0 vertex if necessary760 # Replace final id=0 vertex if necessary
756 if not process.get('is_decay_chain'):761 if not process.get('is_decay_chain'):
@@ -784,7 +789,10 @@
784 self.trim_diagrams(diaglist=res)789 self.trim_diagrams(diaglist=res)
785790
786 # Sort process legs according to leg number791 # Sort process legs according to leg number
787 self.get('process').get('legs').sort()792 pertur = 'QCD'
793 if self.get('process')['perturbation_couplings']:
794 pertur = sorted(self.get('process')['perturbation_couplings'])[0]
795 self.get('process').get('legs').sort(pert=pertur)
788796
789 # Set diagrams to res if not asked to be returned797 # Set diagrams to res if not asked to be returned
790 if not returndiag:798 if not returndiag:
@@ -793,6 +801,47 @@
793 else:801 else:
794 return not failed_crossing, res802 return not failed_crossing, res
795803
804 def apply_squared_order_constraints(self, diag_list):
805 """Applies the user specified squared order constraints on the diagram
806 list in argument."""
807
808 res = copy.copy(diag_list)
809
810 # Iterate the filtering since the applying the constraint on one
811 # type of coupling order can impact what the filtering on a previous
812 # one (relevant for the '==' type of constraint).
813 while True:
814 new_res = res.apply_positive_sq_orders(res,
815 self['process'].get('squared_orders'),
816 self['process']['sqorders_types'])
817 # Exit condition
818 if len(res)==len(new_res):
819 break
820 elif (len(new_res)>len(res)):
821 raise MadGraph5Error(
822 'Inconsistency in function apply_squared_order_constraints().')
823 # Actualizing the list of diagram for the next iteration
824 res = new_res
825
826 # Now treat the negative squared order constraint (at most one)
827 neg_orders = [(order, value) for order, value in \
828 self['process'].get('squared_orders').items() if value<0]
829 if len(neg_orders)==1:
830 neg_order, neg_value = neg_orders[0]
831 # Now check any negative order constraint
832 res, target_order = res.apply_negative_sq_order(res, neg_order,\
833 neg_value, self['process']['sqorders_types'][neg_order])
834 # Substitute the negative value to this positive one so that
835 # the resulting computed constraints appears in the print out
836 # and at the output stage we no longer have to deal with
837 # negative valued target orders
838 self['process']['squared_orders'][neg_order]=target_order
839 elif len(neg_orders)>1:
840 raise InvalidCmd('At most one negative squared order constraint'+\
841 ' can be specified, not %s.'%str(neg_orders))
842
843 return res
844
796 def create_diagram(self, vertexlist):845 def create_diagram(self, vertexlist):
797 """ Return a Diagram created from the vertex list. This function can be846 """ Return a Diagram created from the vertex list. This function can be
798 overloaded by daughter classes."""847 overloaded by daughter classes."""
@@ -908,7 +957,9 @@
908 orders subtracted. If coupling_orders is not given, return957 orders subtracted. If coupling_orders is not given, return
909 None (which counts as success).958 None (which counts as success).
910 WEIGHTED is a special order, which corresponds to the sum of959 WEIGHTED is a special order, which corresponds to the sum of
911 order hierarchys for the couplings."""960 order hierarchies for the couplings.
961 We ignore negative constraints as these cannot be taken into
962 account on the fly but only after generation."""
912963
913 if not coupling_orders:964 if not coupling_orders:
914 return None965 return None
@@ -922,7 +973,8 @@
922 for coupling in inter.get('orders').keys():973 for coupling in inter.get('orders').keys():
923 # Note that we don't consider a missing coupling as a974 # Note that we don't consider a missing coupling as a
924 # constraint975 # constraint
925 if coupling in present_couplings:976 if coupling in present_couplings and \
977 present_couplings[coupling]>=0:
926 # Reduce the number of couplings that are left978 # Reduce the number of couplings that are left
927 present_couplings[coupling] -= \979 present_couplings[coupling] -= \
928 inter.get('orders')[coupling]980 inter.get('orders')[coupling]
@@ -930,7 +982,8 @@
930 # We have too many couplings of this type982 # We have too many couplings of this type
931 return False983 return False
932 # Now check for WEIGHTED, i.e. the sum of coupling hierarchy values984 # Now check for WEIGHTED, i.e. the sum of coupling hierarchy values
933 if 'WEIGHTED' in present_couplings:985 if 'WEIGHTED' in present_couplings and \
986 present_couplings['WEIGHTED']>=0:
934 weight = sum([model.get('order_hierarchy')[c]*n for \987 weight = sum([model.get('order_hierarchy')[c]*n for \
935 (c,n) in inter.get('orders').items()])988 (c,n) in inter.get('orders').items()])
936 present_couplings['WEIGHTED'] -= weight989 present_couplings['WEIGHTED'] -= weight
@@ -1124,7 +1177,7 @@
1124 def trim_diagrams(self, decay_ids=[], diaglist=None):1177 def trim_diagrams(self, decay_ids=[], diaglist=None):
1125 """Reduce the number of legs and vertices used in memory.1178 """Reduce the number of legs and vertices used in memory.
1126 When called by a diagram generation initiated by LoopAmplitude, 1179 When called by a diagram generation initiated by LoopAmplitude,
1127 this function should no trim the diagrams in the attribute 'diagrams'1180 this function should not trim the diagrams in the attribute 'diagrams'
1128 but rather a given list in the 'diaglist' argument."""1181 but rather a given list in the 'diaglist' argument."""
11291182
1130 legs = []1183 legs = []
@@ -1164,7 +1217,6 @@
1164 diagram.get('vertices')[ivx] = vertices[index]1217 diagram.get('vertices')[ivx] = vertices[index]
1165 except ValueError:1218 except ValueError:
1166 vertices.append(vertex)1219 vertices.append(vertex)
1167
11681220
1169#===============================================================================1221#===============================================================================
1170# AmplitudeList1222# AmplitudeList
@@ -1627,10 +1679,14 @@
1627 process_definition.get('perturbation_couplings'),1679 process_definition.get('perturbation_couplings'),
1628 'squared_orders': \1680 'squared_orders': \
1629 process_definition.get('squared_orders'),1681 process_definition.get('squared_orders'),
1682 'sqorders_types': \
1683 process_definition.get('sqorders_types'),
1630 'overall_orders': \1684 'overall_orders': \
1631 process_definition.get('overall_orders'),1685 process_definition.get('overall_orders'),
1632 'has_born': \1686 'has_born': \
1633 process_definition.get('has_born')1687 process_definition.get('has_born'),
1688 'split_orders': \
1689 process_definition.get('split_orders')
1634 })1690 })
1635 fast_proc = \1691 fast_proc = \
1636 array.array('i',[leg.get('id') for leg in legs])1692 array.array('i',[leg.get('id') for leg in legs])
@@ -1854,6 +1910,12 @@
1854 process_definition.get('required_s_channels'),1910 process_definition.get('required_s_channels'),
1855 'forbidden_onsh_s_channels': \1911 'forbidden_onsh_s_channels': \
1856 process_definition.get('forbidden_onsh_s_channels'),1912 process_definition.get('forbidden_onsh_s_channels'),
1913 'sqorders_types': \
1914 process_definition.get('sqorders_types'),
1915 'squared_orders': \
1916 process_definition.get('squared_orders'),
1917 'split_orders': \
1918 process_definition.get('split_orders'),
1857 'forbidden_s_channels': \1919 'forbidden_s_channels': \
1858 process_definition.get('forbidden_s_channels'),1920 process_definition.get('forbidden_s_channels'),
1859 'forbidden_particles': \1921 'forbidden_particles': \
@@ -1861,7 +1923,9 @@
1861 'is_decay_chain': \1923 'is_decay_chain': \
1862 process_definition.get('is_decay_chain'),1924 process_definition.get('is_decay_chain'),
1863 'overall_orders': \1925 'overall_orders': \
1864 process_definition.get('overall_orders')})1926 process_definition.get('overall_orders'),
1927 'split_orders': \
1928 process_definition.get('split_orders')})
18651929
1866 # Check for couplings with given expansion orders1930 # Check for couplings with given expansion orders
1867 process.check_expansion_orders()1931 process.check_expansion_orders()
18681932
=== modified file 'madgraph/core/drawing.py'
--- madgraph/core/drawing.py 2013-11-13 02:21:10 +0000
+++ madgraph/core/drawing.py 2014-08-26 07:56:12 +0000
@@ -92,8 +92,6 @@
92 assert isinstance(vertex, VertexPoint), 'The begin point should be a ' + \92 assert isinstance(vertex, VertexPoint), 'The begin point should be a ' + \
93 'Vertex_Point object'93 'Vertex_Point object'
9494
95 assert vertex is not self.end
96
97 self.begin = vertex95 self.begin = vertex
98 vertex.add_line(self)96 vertex.add_line(self)
99 return97 return
@@ -104,8 +102,6 @@
104 assert isinstance(vertex, VertexPoint), 'The end point should be a ' + \102 assert isinstance(vertex, VertexPoint), 'The end point should be a ' + \
105 'Vertex_Point object'103 'Vertex_Point object'
106104
107 assert vertex is not self.begin
108
109 self.end = vertex105 self.end = vertex
110 vertex.add_line(self)106 vertex.add_line(self)
111 return107 return
@@ -1797,6 +1793,8 @@
17971793
1798 # check if we need curved loop particles1794 # check if we need curved loop particles
1799 curved_for_loop = False1795 curved_for_loop = False
1796 circled_for_loop = False
1797
1800 if isinstance(diagram, LoopFeynmanDiagram):1798 if isinstance(diagram, LoopFeynmanDiagram):
1801 # If only 2 particle in the loop require that those lines are1799 # If only 2 particle in the loop require that those lines are
1802 # curved1800 # curved
@@ -1804,10 +1802,17 @@
1804 curved_for_loop = True1802 curved_for_loop = True
1805 self.curved_part_start = (0, 0)1803 self.curved_part_start = (0, 0)
1806 1804
1805 # for tadpole DOES NOT CRASH BUT STILL NEED FIXING
1806 elif len([l for l in diagram.lineList if l.loop_line]) == 1:
1807 circled_for_loop = True
1808 self.curved_part_start = (0, 0)
1809
1807 # drawing the particles1810 # drawing the particles
1808 for line in diagram.lineList: 1811 for line in diagram.lineList:
1809 if not curved_for_loop or not line.loop_line:1812 if (not curved_for_loop and not circled_for_loop) or not line.loop_line:
1810 self.draw_line(line)1813 self.draw_line(line)
1814 elif circled_for_loop:
1815 self.draw_circled_line(line)
1811 else:1816 else:
1812 self.draw_curved_line(line)1817 self.draw_curved_line(line)
1813 1818
@@ -1856,6 +1861,34 @@
1856 number = line.number1861 number = line.number
1857 self.associate_number(line, number)1862 self.associate_number(line, number)
18581863
1864 # To draw tadpole
1865 def draw_circled_line(self, line):
1866 """Draw the line information.
1867 First, call the method associate the line type [draw_circled_XXXXXX]
1868 Then finalize line representation by adding his name."""
1869
1870 # if 4 point (or more interaction at the beginning/end of the loop
1871 # need to reduce curvature
1872 if len(line.begin.lines) > 3 or len(line.end.lines) > 3 :
1873 cercle = False
1874 else:
1875 cercle = True
1876
1877 # Find the type line of the particle [straight, wavy, ...]
1878 line_type = line.get_info('line')
1879 # Call the routine associate to this type [self.draw_straight, ...]
1880 if hasattr(self, 'draw_circled_' + line_type):
1881 getattr(self, 'draw_circled_' + line_type)(line, cercle)
1882 else:
1883 self.draw_circled_straight(line, reduce)
1884
1885 # Finalize the line representation with adding the name of the particle
1886 name = line.get_name()
1887 self.associate_name(line, name)
1888
1889 #store begin for helping future curving
1890 self.curved_part_start = (line.begin.pos_x, line.begin.pos_y*1.2)
1891
1859 def draw_curved_line(self, line):1892 def draw_curved_line(self, line):
1860 """Draw the line information.1893 """Draw the line information.
1861 First, call the method associate the line type [draw_curved_XXXXXX]1894 First, call the method associate the line type [draw_curved_XXXXXX]
18621895
=== modified file 'madgraph/core/helas_objects.py'
--- madgraph/core/helas_objects.py 2013-11-29 07:28:53 +0000
+++ madgraph/core/helas_objects.py 2014-08-26 07:56:12 +0000
@@ -89,6 +89,7 @@
89 else:89 else:
90 sorted_tags = sorted([cls(d, model, ninitial) for d in \90 sorted_tags = sorted([cls(d, model, ninitial) for d in \
91 amplitude.get('diagrams')])91 amplitude.get('diagrams')])
92
92 # Do not use this for loop diagrams as for now the HelasMultiProcess93 # Do not use this for loop diagrams as for now the HelasMultiProcess
93 # always contain only exactly one loop amplitude.94 # always contain only exactly one loop amplitude.
94 if sorted_tags and not isinstance(amplitude, \95 if sorted_tags and not isinstance(amplitude, \
@@ -898,12 +899,11 @@
898 part = self.get('particle')899 part = self.get('particle')
899 self.set('particle', self.get('antiparticle'))900 self.set('particle', self.get('antiparticle'))
900 self.set('antiparticle', part)901 self.set('antiparticle', part)
901902
902 def is_anticommutating_ghost(self):903 def is_anticommutating_ghost(self):
903 """ Return True if the particle of this wavefunction is a ghost charged904 """ Return True if the particle of this wavefunction is a ghost"""
904 under SU(3)"""905 return self.get('particle').get('ghost')
905 return self.get('particle').get('ghost') and self.get('color')!=1906
906
907 def is_fermion(self):907 def is_fermion(self):
908 return self.get('spin') % 2 == 0908 return self.get('spin') % 2 == 0
909909
@@ -1006,9 +1006,11 @@
1006 array_rep.append(self['color_key'])1006 array_rep.append(self['color_key'])
1007 # Also need to specify if it is a loop wf1007 # Also need to specify if it is a loop wf
1008 array_rep.append(int(self['is_loop']))1008 array_rep.append(int(self['is_loop']))
1009
1009 # Finally, the mother numbers1010 # Finally, the mother numbers
1010 array_rep.extend([mother['number'] for \1011 array_rep.extend([mother['number'] for \
1011 mother in self['mothers']])1012 mother in self['mothers']])
1013
1012 return array_rep1014 return array_rep
10131015
1014 def get_pdg_code(self):1016 def get_pdg_code(self):
@@ -1039,9 +1041,9 @@
1039 if particles[1].get_pdg_code() != particles[2].get_pdg_code() \1041 if particles[1].get_pdg_code() != particles[2].get_pdg_code() \
1040 and self.get('pdg_code') == \1042 and self.get('pdg_code') == \
1041 particles[1].get_anti_pdg_code()\1043 particles[1].get_anti_pdg_code()\
1042 and self.get('coupling')[0] != '-':1044 and not self.get('coupling')[0].startswith('-'):
1043 # We need a minus sign in front of the coupling1045 # We need a minus sign in front of the coupling
1044 self.set('coupling', ['-' + c for c in self.get('coupling')])1046 self.set('coupling', ['-%s'%c for c in self.get('coupling')])
10451047
1046 def set_octet_majorana_coupling_sign(self):1048 def set_octet_majorana_coupling_sign(self):
1047 """For octet Majorana fermions, need an extra minus sign in1049 """For octet Majorana fermions, need an extra minus sign in
@@ -1052,12 +1054,9 @@
1052 if self.get('color') == 8 and \1054 if self.get('color') == 8 and \
1053 self.get_spin_state_number() == -2 and \1055 self.get_spin_state_number() == -2 and \
1054 self.get('self_antipart') and \1056 self.get('self_antipart') and \
1055 [m.get('color') for m in self.get('mothers')] == [8, 8]:1057 [m.get('color') for m in self.get('mothers')] == [8, 8] and \
1056 if hasattr(self, 'octet_majorana_flip'):1058 not self.get('coupling')[0].startswith('-'):
1057 return1059 self.set('coupling', ['-%s' % c for c in self.get('coupling')])
1058 self.octet_majorana_flip = True
1059 self.set('coupling', ['-%s' % c
1060 for c in self.get('coupling')])
1061 1060
1062 def set_state_and_particle(self, model):1061 def set_state_and_particle(self, model):
1063 """Set incoming/outgoing state according to mother states and1062 """Set incoming/outgoing state according to mother states and
@@ -1260,11 +1259,36 @@
1260 diagram_wavefunctions.insert(i, new_wf)1259 diagram_wavefunctions.insert(i, new_wf)
1261 break1260 break
1262 else:1261 else:
1263 diagram_wavefunctions.append(new_wf)1262 # For loop processes, care is needed since
1263 # some loop wavefunctions in the diag_wfs might have
1264 # the new_wf in their mother, so we want to place
1265 # new_wf as early as possible in the list.
1266 # We first look if any mother of the wavefunction
1267 # we want to add appears in the diagram_wavefunctions
1268 # list. If it doesn't, max_mother_index is -1.
1269 # If it does, then max_mother_index is the maximum
1270 # index in diagram_wavefunctions of those of the
1271 # mothers present in this list.
1272 max_mother_index = max([-1]+
1273 [diagram_wavefunctions.index(wf) for wf in
1274 mothers if wf in diagram_wavefunctions])
1275
1276 # We want to insert this new_wf as early as
1277 # possible in the diagram_wavefunctions list so that
1278 # we are guaranteed that it will be placed *before*
1279 # wavefunctions that have new_wf as a mother.
1280 # We therefore place it at max_mother_index+1.
1281 if max_mother_index<len(diagram_wavefunctions)-1:
1282 new_wf.set('number',diagram_wavefunctions[
1283 max_mother_index+1].get('number'))
1284 for wf in diagram_wavefunctions[max_mother_index+1:]:
1285 wf.set('number',wf.get('number')+1)
1286 diagram_wavefunctions.insert(max_mother_index+1,
1287 new_wf)
12641288
1265 # Set new mothers1289 # Set new mothers
1266 new_wf.set('mothers', mothers)1290 new_wf.set('mothers', mothers)
12671291
1268 # Now flip flow or sign1292 # Now flip flow or sign
1269 if flip_flow:1293 if flip_flow:
1270 # Flip fermion flow1294 # Flip fermion flow
@@ -1283,7 +1307,7 @@
1283 new_wf_number = new_wf.get('number')1307 new_wf_number = new_wf.get('number')
1284 new_wf = wavefunctions[wavefunctions.index(new_wf)]1308 new_wf = wavefunctions[wavefunctions.index(new_wf)]
1285 diagram_wf_numbers = [w.get('number') for w in \1309 diagram_wf_numbers = [w.get('number') for w in \
1286 diagram_wavefunctions]1310 diagram_wavefunctions]
1287 index = diagram_wf_numbers.index(new_wf_number)1311 index = diagram_wf_numbers.index(new_wf_number)
1288 diagram_wavefunctions.pop(index)1312 diagram_wavefunctions.pop(index)
1289 # We need to decrease the wf number for later1313 # We need to decrease the wf number for later
@@ -1293,13 +1317,27 @@
1293 wf.set('number', wf.get('number') - 1)1317 wf.set('number', wf.get('number') - 1)
1294 # Since we reuse the old wavefunction, reset wf_number1318 # Since we reuse the old wavefunction, reset wf_number
1295 wf_number = wf_number - 11319 wf_number = wf_number - 1
1320
1296 # Need to replace wavefunction in number_to_wavefunctions1321 # Need to replace wavefunction in number_to_wavefunctions
1297 # (in case this wavefunction is in another of the dicts)1322 # (in case this wavefunction is in another of the dicts)
1298 for n_to_wf_dict in number_to_wavefunctions:1323 for n_to_wf_dict in number_to_wavefunctions:
1299 if new_wf in n_to_wf_dict.values():1324 if new_wf in n_to_wf_dict.values():
1300 for key in n_to_wf_dict.keys():1325 for key in n_to_wf_dict.keys():
1301 if n_to_wf_dict[key] == new_wf:1326 if n_to_wf_dict[key] == new_wf:
1302 n_to_wf_dict[key] = new_wf1327 n_to_wf_dict[key] = new_wf
1328
1329 if self.get('is_loop'):
1330 # fix a bug for the g g > go go g [virt=QCD]
1331 # when there is a wf which is replaced, we need to propagate
1332 # the change in all wavefunction of that diagrams which could
1333 # have this replaced wavefunction in their mothers. This
1334 # plays the role of the 'number_to_wavefunction' dictionary
1335 # used for tree level.
1336 for wf in diagram_wavefunctions:
1337 for i,mother_wf in enumerate(wf.get('mothers')):
1338 if mother_wf.get('number')==new_wf_number:
1339 wf.get('mothers')[i]=new_wf
1340
1303 except ValueError:1341 except ValueError:
1304 pass1342 pass
13051343
@@ -1464,7 +1502,15 @@
1464 1502
1465 #fixed argument1503 #fixed argument
1466 for i, coup in enumerate(self.get_with_flow('coupling')):1504 for i, coup in enumerate(self.get_with_flow('coupling')):
1467 output['coup%d'%i] = coup1505 # We do not include the - sign in front of the coupling of loop
1506 # wavefunctions (only the loop ones, the tree ones are treated normally)
1507 # in the non optimized output because this sign was already applied to
1508 # the coupling passed in argument when calling the loop amplitude.
1509 if not OptimizedOutput and self.get('is_loop'):
1510 output['coup%d'%i] = coup[1:] if coup.startswith('-') else coup
1511 else:
1512 output['coup%d'%i] = coup
1513
1468 output['out'] = self.get('me_id') - flip1514 output['out'] = self.get('me_id') - flip
1469 output['M'] = self.get('mass')1515 output['M'] = self.get('mass')
1470 output['W'] = self.get('width')1516 output['W'] = self.get('width')
@@ -1543,10 +1589,9 @@
15431589
1544 # Sort according to spin and flow direction1590 # Sort according to spin and flow direction
1545 res.sort()1591 res.sort()
1546# if not self['is_loop']:
1547 res.append(self.get_spin_state_number())1592 res.append(self.get_spin_state_number())
1548 res.append(self.find_outgoing_number())1593 res.append(self.find_outgoing_number())
1549# else:1594
1550 if self['is_loop']:1595 if self['is_loop']:
1551 res.append(self.get_loop_index())1596 res.append(self.get_loop_index())
1552 if not self.get('mothers'):1597 if not self.get('mothers'):
@@ -2075,6 +2120,7 @@
2075 wf_number,2120 wf_number,
2076 force_flip_flow=False,2121 force_flip_flow=False,
2077 number_to_wavefunctions=[]):2122 number_to_wavefunctions=[]):
2123
2078 """Check for clashing fermion flow (N(incoming) !=2124 """Check for clashing fermion flow (N(incoming) !=
2079 N(outgoing)). If found, we need to trace back through the2125 N(outgoing)). If found, we need to trace back through the
2080 mother structure (only looking at fermions), until we find a2126 mother structure (only looking at fermions), until we find a
@@ -2267,6 +2313,76 @@
22672313
2268 return conjugates2314 return conjugates
22692315
2316
2317 def check_wavefunction_numbers_order(self, applyChanges=False, raiseError=True):
2318 """ This function only serves as an internal consistency check to
2319 make sure that when setting the 'wavefunctions' attribute of the
2320 diagram, their order is consistent, in the sense that all mothers
2321 of any given wavefunction appear before that wavefunction.
2322 This function returns True if there was no change and the original
2323 wavefunction list was consistent and False otherwise.
2324 The option 'applyChanges' controls whether the function should substitute
2325 the original list (self) with the new corrected one. For now, this function
2326 is only used for self-consistency checks and the changes are not applied."""
2327
2328 if len(self)<2:
2329 return True
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: