diff --git a/t/CMakeLists.txt b/t/CMakeLists.txt index 4403b15..20900f3 100644 --- a/t/CMakeLists.txt +++ b/t/CMakeLists.txt @@ -1,769 +1,771 @@ set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}") set(tst_ME_data_dir "${tst_dir}/ME_data") # small library for common test functions add_library(hej_test SHARED hej_test.cc) target_include_directories(hej_test PUBLIC ${tst_dir}) target_link_libraries(hej_test HEJ) # test event classification # test explicit configurations add_executable(test_classify ${tst_dir}/test_classify.cc) target_compile_options(test_classify PRIVATE "-O0") # avoid compiler optimisation target_link_libraries(test_classify HEJ hej_test) add_test( NAME classify COMMAND test_classify ) # test against reference data add_executable(test_classify_ref ${tst_dir}/test_classify_ref.cc) target_link_libraries(test_classify_ref HEJ hej_test) add_test( NAME classify_ref COMMAND test_classify_ref ${tst_dir}/classify_ref ${tst_dir}/classify.lhe.gz ) add_test( NAME classify_ref_4j COMMAND test_classify_ref ${tst_dir}/classify_ref_4j ${tst_dir}/4j.lhe.gz ) add_test( NAME classify_ref_W4j COMMAND test_classify_ref ${tst_dir}/classify_ref_W4j ${tst_dir}/MGemnubar4j_unweighted.lhe.gz ) add_test( NAME t_classify_ref_Z4j COMMAND test_classify_ref ${tst_dir}/classify_ref_Z4j ${tst_dir}/Z_4j.lhe.gz ) # test for valid W decays add_executable(test_decay ${tst_dir}/test_decay.cc) target_link_libraries(test_decay HEJ hej_test) add_test( NAME valid_decay COMMAND test_decay ) # test valid jet cuts on tagging jets add_executable(test_jet_cuts ${tst_dir}/test_jet_cuts.cc) target_link_libraries(test_jet_cuts HEJ hej_test) add_test( NAME jet_cuts COMMAND test_jet_cuts ) # test phase space point add_executable(test_psp ${tst_dir}/test_psp.cc) target_link_libraries(test_psp HEJ hej_test) add_test( NAME PhaseSpace COMMAND test_psp ${tst_dir}/psp_gen.lhe.gz ) # test importing analyses file(COPY "${tst_dir}/analysis_config.yml" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") set(test_config "${CMAKE_CURRENT_BINARY_DIR}/analysis_config.yml") get_target_property(ANALYSIS_PATH AnalysisTemplate_lib BINARY_DIR) get_target_property(ANALYSIS_LIB AnalysisTemplate_lib OUTPUT_NAME) set(ANALYSIS_PARAMETERS "") file(READ ${test_config} config) file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n") configure_file( ${tst_dir}/analysis_config_single.yml.in analysis_config_simple.yml @ONLY ) add_test( NAME analysis_simple COMMAND $<TARGET_FILE:HEJ_main> analysis_config_simple.yml ${tst_dir}/2j.lhe.gz ) get_target_property(ANALYSIS_PATH AnalysisPrint_lib BINARY_DIR) get_target_property(ANALYSIS_LIB AnalysisPrint_lib OUTPUT_NAME) set(ANALYSIS_PARAMETERS " output: ana_output") file(READ ${test_config} config) file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n") configure_file( ${tst_dir}/analysis_config_single.yml.in analysis_config_print.yml @ONLY ) add_test( NAME analysis_print COMMAND $<TARGET_FILE:HEJ_main> analysis_config_print.yml ${tst_dir}/2j.lhe.gz ) -## Disable ROOT tests while the analyses fail -## if(ROOT_FOUND) -## get_target_property(ANALYSIS_PATH AnalysisROOT_lib BINARY_DIR) -## get_target_property(ANALYSIS_LIB AnalysisROOT_lib OUTPUT_NAME) -## set(ANALYSIS_PARAMETERS "") -## file(READ ${test_config} config) -## file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n") -## configure_file( ${tst_dir}/analysis_config_single.yml.in -## analysis_config_root.yml @ONLY ) -## add_test( -## NAME analysis_root -## COMMAND $<TARGET_FILE:HEJ_main> -## analysis_config_root.yml -## ${tst_dir}/2j.lhe.gz -## ) -## endif() +if(ROOT_FOUND) + get_target_property(ANALYSIS_PATH AnalysisROOT_lib BINARY_DIR) + get_target_property(ANALYSIS_LIB AnalysisROOT_lib OUTPUT_NAME) + set(ANALYSIS_PARAMETERS "") + file(READ ${test_config} config) + file(WRITE ${test_config} "${config} - plugin: ${ANALYSIS_PATH}/lib${ANALYSIS_LIB}.so\n ${ANALYSIS_PARAMETERS}\n") + configure_file( ${tst_dir}/analysis_config_single.yml.in + analysis_config_root.yml @ONLY ) + + add_test( + NAME analysis_root + COMMAND $<TARGET_FILE:HEJ_main> + analysis_config_root.yml + ${tst_dir}/2j.lhe.gz + ) + set_property(TEST analysis_root PROPERTY ENVIRONMENT_MODIFICATION "LD_PRELOAD=path_list_append:/cvmfs/pheno.egi.eu/HEJV4/root/lib/libCore.so") +endif() if(RIVET_FOUND) file(READ ${test_config} config) file(WRITE ${test_config} "${config} - rivet: MC_XS\n output: ana_rivet\n") endif() add_test( NAME analysis_all COMMAND $<TARGET_FILE:HEJ_main> ${test_config} ${tst_dir}/2j.lhe.gz ) +set_property(TEST analysis_all PROPERTY ENVIRONMENT_MODIFICATION "LD_PRELOAD=path_list_append:/cvmfs/pheno.egi.eu/HEJV4/root/lib/libCore.so") # test importing scales (from examples/softestptScale) add_executable(test_scale_import ${tst_dir}/test_scale_import.cc) target_link_libraries(test_scale_import HEJ) get_target_property(SCALE_PATH softestptScale_lib BINARY_DIR) get_target_property(SCALE_LIB softestptScale_lib OUTPUT_NAME) set(SCALE_NAME "softest_jet_pt") configure_file( ${tst_dir}/jet_config_with_import.yml.in jet_config_with_import.yml @ONLY ) add_test( NAME scale_import COMMAND test_scale_import jet_config_with_import.yml ) # test scale arithmetic (e.g. 2*H_T/4) add_executable(test_scale_arithmetics ${tst_dir}/test_scale_arithmetics.cc) target_link_libraries(test_scale_arithmetics HEJ hej_test) add_test( NAME scale_arithmetics COMMAND test_scale_arithmetics ${tst_dir}/jet_config.yml ${tst_dir}/2j.lhe.gz ) # test "ParameterDescription" add_executable(test_descriptions ${tst_dir}/test_descriptions.cc) target_link_libraries(test_descriptions HEJ hej_test) add_test( NAME descriptions COMMAND test_descriptions ) # test "EventParameters*Weight" add_executable(test_parameters ${tst_dir}/test_parameters.cc) target_link_libraries(test_parameters HEJ hej_test) add_test( NAME parameters COMMAND test_parameters ) # test Particle IDs add_executable(test_pid ${tst_dir}/test_pid.cc) target_link_libraries(test_pid HEJ hej_test) add_test( NAME pid COMMAND test_pid ) # test EW constants add_executable(test_EWConstants ${tst_dir}/test_EWConstants.cc) target_link_libraries(test_EWConstants HEJ hej_test) add_test( NAME EWConstants COMMAND test_EWConstants ) # test unweighting add_executable(test_unweighter ${tst_dir}/test_unweighter.cc) target_link_libraries(test_unweighter HEJ hej_test) add_test( NAME unweighter COMMAND test_unweighter ${tst_dir}/4j.lhe.gz ) # test colour generation add_executable(test_colours ${tst_dir}/test_colours.cc) target_link_libraries(test_colours HEJ hej_test) add_test( NAME colour_flow COMMAND test_colours ) add_executable(test_colours2 ${tst_dir}/test_colours2.cc) target_link_libraries(test_colours2 HEJ hej_test) add_test( NAME colour_flow2 COMMAND test_colours2 ) # test matrix elements add_executable(test_ME_generic ${tst_dir}/test_ME_generic.cc) target_link_libraries(test_ME_generic HEJ hej_test) add_test( NAME ME_j COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_jets_tree.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz ) add_test( NAME ME_j_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_jets_tree_virt.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz ) add_test( NAME ME_h COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_h_mtinf_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz ) add_test( NAME ME_h_subl COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_h_subl_mtinf_tree.dat ${tst_ME_data_dir}/PSP_h_subl.lhe.gz ) add_test( NAME ME_hj COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_hj_mtinf_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz ) add_test( NAME ME_h_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_h_mtinf_virt.dat ${tst_ME_data_dir}/PSP_h.lhe.gz ) add_test( NAME ME_hj_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_hj_mtinf_virt.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz ) if(QCDloop_FOUND) add_test( NAME ME_h_mt COMMAND test_ME_generic ${tst_ME_data_dir}/config_mt.yml ${tst_ME_data_dir}/ME_h_mt_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz ) add_test( NAME ME_h_mtmb COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml ${tst_ME_data_dir}/ME_h_mtmb_tree.dat ${tst_ME_data_dir}/PSP_h.lhe.gz ) add_test( NAME ME_h_subl_mtmb COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml ${tst_ME_data_dir}/ME_h_subl_mtmb_tree.dat ${tst_ME_data_dir}/PSP_h_subl.lhe.gz ) add_test( NAME ME_hj_mt COMMAND test_ME_generic ${tst_ME_data_dir}/config_mt.yml ${tst_ME_data_dir}/ME_hj_mt_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz ) add_test( NAME ME_hj_mtmb COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml ${tst_ME_data_dir}/ME_hj_mtmb_tree.dat ${tst_ME_data_dir}/PSP_hj.lhe.gz ) endif() add_test( NAME ME_j_subl COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml ${tst_ME_data_dir}/ME_jets_subl_tree.dat ${tst_ME_data_dir}/PSP_jets_subl.lhe.gz ) add_test( NAME ME_j_subl_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml ${tst_ME_data_dir}/ME_jets_subl_tree_virt.dat ${tst_ME_data_dir}/PSP_jets_subl.lhe.gz ) add_test( NAME ME_j_subl_4j COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml ${tst_ME_data_dir}/ME_jets_subl_tree_new.dat ${tst_dir}/4j.lhe.gz ) add_test( NAME ME_j_subl_4j_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_pure.yml ${tst_ME_data_dir}/ME_jets_subl_tree_new_virt.dat ${tst_dir}/4j.lhe.gz ) add_test( NAME ME_w_FKL COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_w_FKL_tree.dat ${tst_ME_data_dir}/PSP_w_FKL.lhe.gz ) add_test( NAME ME_w_FKL_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_w_FKL_virt.dat ${tst_ME_data_dir}/PSP_w_FKL.lhe.gz ) add_test( NAME ME_Wp COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_Wp.dat ${tst_ME_data_dir}/PSP_Wp.lhe.gz ) add_test( NAME ME_Wp_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_Wp_virt.dat ${tst_ME_data_dir}/PSP_Wp.lhe.gz ) add_test( NAME ME_Wm COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_Wm.dat ${tst_ME_data_dir}/PSP_Wm.lhe.gz ) add_test( NAME ME_Wm_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_w_ME.yml ${tst_ME_data_dir}/ME_Wm_virt.dat ${tst_ME_data_dir}/PSP_Wm.lhe.gz ) add_test( NAME ME_Z COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z.dat ${tst_ME_data_dir}/PSP_Z.lhe.gz ) add_test( NAME ME_Z_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_virt.dat ${tst_ME_data_dir}/PSP_Z.lhe.gz ) add_test( NAME ME_Z_full COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_full.dat ${tst_ME_data_dir}/PSP_Z.lhe.gz ) add_test( NAME ME_Z_subl COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_subl_tree.dat ${tst_ME_data_dir}/PSP_Z_subl.lhe.gz ) add_test( NAME ME_Z_subl_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_subl_virt.dat ${tst_ME_data_dir}/PSP_Z_subl.lhe.gz ) add_test( NAME ME_Z_subl_full COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_subl_full.dat ${tst_ME_data_dir}/PSP_Z_subl.lhe.gz ) add_test( NAME ME_Z_neutrinos COMMAND test_ME_generic ${tst_ME_data_dir}/config_Z_ME.yml ${tst_ME_data_dir}/ME_Z_neutrinos.dat ${tst_ME_data_dir}/PSP_Z_neutrinos.lhe.gz ) add_test( NAME ME_WpWp COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WpWp.dat ${tst_ME_data_dir}/PSP_WpWp.lhe.gz ) add_test( NAME ME_WpWp_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WpWp_virt.dat ${tst_ME_data_dir}/PSP_WpWp.lhe.gz ) add_test( NAME ME_WpWp_full COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WpWp_full.dat ${tst_ME_data_dir}/PSP_WpWp.lhe.gz ) add_test( NAME ME_WmWm COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WmWm.dat ${tst_ME_data_dir}/PSP_WmWm.lhe.gz ) add_test( NAME ME_WmWm_virt COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WmWm_virt.dat ${tst_ME_data_dir}/PSP_WmWm.lhe.gz ) add_test( NAME ME_WmWm_full COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME.yml ${tst_ME_data_dir}/ME_WmWm_full.dat ${tst_ME_data_dir}/PSP_WmWm.lhe.gz ) # HEJ@NLO Virtuals add_test( NAME ME_WmWm_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME_hejnlo.yml ${tst_ME_data_dir}/ME_WmWm_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_WmWm.lhe.gz ) add_test( NAME ME_WpWp_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_ww_ME_hejnlo.yml ${tst_ME_data_dir}/ME_WpWp_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_WpWp.lhe.gz ) add_test( NAME ME_Wp_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_wzhpure_ME_hejnlo.yml ${tst_ME_data_dir}/ME_Wp_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_Wp.lhe.gz ) add_test( NAME ME_Wm_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_wzhpure_ME_hejnlo.yml ${tst_ME_data_dir}/ME_Wm_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_Wm.lhe.gz ) add_test( NAME ME_Z_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_wzhpure_ME_hejnlo.yml ${tst_ME_data_dir}/ME_Z_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_Z.lhe.gz ) add_test( NAME ME_jets_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_wzhpure_ME_hejnlo.yml ${tst_ME_data_dir}/ME_jets_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz ) add_test( NAME ME_h_hejnlo COMMAND test_ME_generic ${tst_ME_data_dir}/config_wzhpure_ME_hejnlo.yml ${tst_ME_data_dir}/ME_h_virt_hejnlo.dat ${tst_ME_data_dir}/PSP_h.lhe.gz ) add_test( NAME ME_j_log_corr COMMAND test_ME_generic ${tst_ME_data_dir}/config_log_corr.yml ${tst_ME_data_dir}/ME_jets_log_corr.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz ) add_test( NAME ME_j_lambda COMMAND test_ME_generic ${tst_ME_data_dir}/config_lambda.yml ${tst_ME_data_dir}/ME_jets_lambda.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz ) # test main executable file(COPY "${tst_dir}/jet_config.yml" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}") set(test_config "${CMAKE_CURRENT_BINARY_DIR}/jet_config.yml") if(HighFive_FOUND) file(READ ${test_config} config) file(WRITE ${test_config} "${config} - tst.hdf5\n") endif() if(HepMC3_FOUND) file(READ ${test_config} config) file(WRITE ${test_config} "${config} - tst.hepmc\n") endif() if(HepMC_FOUND) file(READ ${test_config} config) file(WRITE ${test_config} "${config} - tst.hepmc2\n") endif() if(rivet_FOUND) file(READ ${test_config} config) file(WRITE ${test_config} "${config}\nanalyses:\n - rivet: MC_JETS\n output: tst\n") endif() set(test_cmd_main "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/2j.lhe.gz") # check that HepMC3 output is correct if(HepMC3_FOUND) add_executable(check_hepmc ${tst_dir}/check_hepmc.cc) target_link_libraries(check_hepmc HEJ ${HEPMC3_LIBRARIES}) target_include_directories(check_hepmc PRIVATE ${HEPMC3_INCLUDE_DIR}) set(test_cmd_hepmc "$<TARGET_FILE:check_hepmc>\\\;tst.hepmc") else() set(test_cmd_hepmc "") endif() if(HepMC_FOUND) add_executable(check_hepmc2 ${tst_dir}/check_hepmc2.cc) target_link_libraries(check_hepmc2 HEJ ${HepMC_LIBRARY}) target_include_directories(check_hepmc2 PRIVATE ${HepMC_INCLUDE_DIR}) endif() if(HighFive_FOUND) add_executable(check_highfive ${tst_dir}/check_highfive.cc) target_link_libraries(check_highfive HEJ HighFive) endif() # check that LHEF output is correct add_executable(check_lhe ${tst_dir}/check_lhe.cc) target_link_libraries(check_lhe HEJ hej_test) set(test_cmd_lhe "$<TARGET_FILE:check_lhe>\\\;tst.lhe") # check that rivet interface is consistent with naive rivet set(test_cmd_rivet "") if(rivet_FOUND) # this assumes `rivet` and `yoda-config` are found in PATH # see https://gitlab.dur.scotgrid.ac.uk/hej/HEJ/-/issues/205 execute_process( COMMAND yoda-config --version OUTPUT_VARIABLE YODA_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) # In interactive usage, only run the following test on compatible # YODA versions. We don't know which versions are compatible, so # let's be conservative. # However, we *always* want to run the test in the CI, regardless of # the YODA version. If it breaks there, we know that we have to # update the test. if(DEFINED ENV{CI} OR (yoda_VERSION VERSION_EQUAL 1.9.8)) if(rivet_USE_HEPMC3) set(hepmc_file "tst.hepmc") else() set(hepmc_file "tst.hepmc2") endif() if(rivet_USE_HEPMC3 OR (rivet_VERSION VERSION_LESS 3)) set(histo_exclude "") else() # rivet 3 with HepMC 2 is inconsistent in order of weights # -> interface != direct call (by permutation) # REQUIRES Yoda 1.7.5 set(histo_exclude "-M\\\;\\\\d") endif() set(test_cmd_rivet "rivet\\\;-a\\\;MC_JETS\\\;${hepmc_file}\\\;-o\\\;tst_direct.yoda\ \;yodadiff\\\;${histo_exclude}\\\;-t\\\;1e-04\\\;tst.yoda\\\;tst_direct.yoda\ \;yodadiff\\\;${histo_exclude}\\\;-t\\\;1e-04\\\;tst.yoda\\\;${tst_dir}/rivet_ref.yoda") endif() endif() # Run dependent tests in one command to ensure correct execution order # Note: The commands are concatenated with "\;" to escape CMake lists. # Thus arguments have to be escaped twice "\\\;". # e.g. "cmd1\;cmd2\\\;arg1\\\;arg2" is executed like "cmd1 && cmd2 arg1 arg2" add_test( NAME main COMMAND ${CMAKE_COMMAND} -DCMDS=${test_cmd_main}\;${test_cmd_hepmc}\;${test_cmd_lhe}\;${test_cmd_rivet} -P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake ) add_test( NAME main_example COMMAND $<TARGET_FILE:HEJ_main> ${PROJECT_SOURCE_DIR}/config.yml ${tst_dir}/h_3j.lhe.gz ) # check that Sherpas LHE input can be read add_executable(check_lhe_sherpa ${tst_dir}/check_lhe_sherpa.cc) target_link_libraries(check_lhe_sherpa HEJ hej_test) add_test( NAME sherpa_reader COMMAND check_lhe_sherpa ${tst_dir}/SherpaLHE.lhe 1.62624e+08 ) # check HDF5 reader & writer if(HighFive_FOUND) add_executable(test_hdf5 ${tst_dir}/test_hdf5.cc) target_link_libraries(test_hdf5 HEJ) add_test( NAME hdf5_read COMMAND test_hdf5 ${tst_dir}/Wm9-g4-repack.hdf5 ) add_executable(test_hdf5_write ${tst_dir}/test_hdf5_write.cc) target_link_libraries(test_hdf5_write HEJ hej_test) add_test( NAME hdf5_write COMMAND test_hdf5_write ${tst_dir}/Wm9-g4-repack.hdf5 output.hdf5 ) endif() # check rivet interface if(RIVET_FOUND) add_executable(check_rivet ${tst_dir}/check_rivet.cc) target_link_libraries(check_rivet HEJ rivet::rivet) add_test( NAME rivet COMMAND check_rivet ) find_program (BASH_PROGRAM bash) if (BASH_PROGRAM) add_test( NAME fifo_test COMMAND ${BASH_PROGRAM} ${tst_dir}/fifotest.sh ${tst_dir}/2j.lhe.gz $<TARGET_FILE:HEJ_main>) endif (BASH_PROGRAM) endif() # test boson reconstruction add_executable(cmp_events ${tst_dir}/cmp_events.cc) target_link_libraries(cmp_events HEJ) add_test( NAME reconstruct_W COMMAND cmp_events ${tst_dir}/epnu2jLOFKL_unweight.lhe.tar.gz ${tst_dir}/epnu2jLOFKL_unweight_noW.lhe.gz ) # test repairing slightly off-shell momenta add_executable(repair_off-shell ${tst_dir}/repair_off-shell.cc) target_link_libraries(repair_off-shell HEJ) add_test( NAME repair_off-shell COMMAND repair_off-shell ${tst_dir}/off-shell.lhe.gz ) # test resummed result add_executable(check_res ${tst_dir}/check_res.cc) target_link_libraries(check_res HEJ hej_test) # test resummation with analysis pt specified add_executable(check_analysis_pt_res ${tst_dir}/check_analysis_pt_res.cc) target_link_libraries(check_analysis_pt_res HEJ hej_test) # Setup yaml files for check res tests set(CENTRALSCALE 91.188) set(LOWPT_OPTION true) configure_file( ${tst_dir}/config_check_res.yml.in config_lowpt.yml @ONLY ) set(LOWPT_OPTION false) configure_file( ${tst_dir}/config_check_res.yml.in config_default.yml @ONLY ) set(CENTRALSCALE 125.) configure_file( ${tst_dir}/config_check_res.yml.in config_higgs.yml @ONLY ) # Check first event of HEJ output set(xstest_cmd_lhef "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/h_1j.lhe.gz") set(xstest_cmd_lhef_check "$<TARGET_FILE:check_lhe>\\\;tst.lhe\\\;5.189") add_test( NAME test_lhe_xs COMMAND ${CMAKE_COMMAND} -DCMDS=${xstest_cmd_lhef}\;${xstest_cmd_lhef_check} -P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake ) set_tests_properties(test_lhe_xs PROPERTIES DEPENDS "main") if(HepMC3_FOUND) set(xstest_cmd_hepmc "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/h_1j.lhe.gz") set(xstest_cmd_hepmc_check "$<TARGET_FILE:check_hepmc>\\\;tst.hepmc\\\;5.189") add_test( NAME test_hepmc_xs COMMAND ${CMAKE_COMMAND} -DCMDS=${xstest_cmd_hepmc}\;${xstest_cmd_hepmc_check} -P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake ) set_tests_properties(test_hepmc_xs PROPERTIES DEPENDS "main") set_tests_properties(test_hepmc_xs PROPERTIES RESOURCE_LOCK xstests) endif() if(HepMC_FOUND) set(xstest_cmd_hepmc2 "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/h_1j.lhe.gz") set(xstest_cmd_hepmc2_check "$<TARGET_FILE:check_hepmc2>\\\;tst.hepmc2\\\;5.189") add_test( NAME test_hepmc2_xs COMMAND ${CMAKE_COMMAND} -DCMDS=${xstest_cmd_hepmc2}\;${xstest_cmd_hepmc2_check} -P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake ) set_tests_properties(test_hepmc2_xs PROPERTIES DEPENDS "main") set_tests_properties(test_hepmc2_xs PROPERTIES RESOURCE_LOCK xstests) endif() if(HighFive_FOUND) set(xstest_cmd_highfive "$<TARGET_FILE:HEJ_main>\\\;${test_config}\\\;${tst_dir}/h_1j.lhe.gz") set(xstest_cmd_highfive_check "$<TARGET_FILE:check_highfive>\\\;tst.hdf5\\\;5.189") add_test( NAME xstest_highfive COMMAND ${CMAKE_COMMAND} -DCMDS=${xstest_cmd_highfive}\;${xstest_cmd_highfive_check} -P ${PROJECT_SOURCE_DIR}/cmake/run_multiple_tests.cmake ) set_tests_properties(xstest_highfive PROPERTIES DEPENDS "main;test_lhe_xs;") set_tests_properties(xstest_highfive PROPERTIES RESOURCE_LOCK xstests) endif() set_tests_properties(main test_lhe_xs PROPERTIES RESOURCE_LOCK xstests ) add_test( NAME xs_h_1j COMMAND check_res config_higgs.yml ${tst_dir}/h_1j.lhe.gz 4.97087 0.0302519 ) add_test( NAME xs_2j COMMAND check_res config_default.yml ${tst_dir}/2j.lhe.gz 3.49391e+07 419684 ) add_test( NAME xs_2j_analysis_pt COMMAND check_analysis_pt_res config_default.yml ${tst_dir}/2j.lhe.gz ) add_test( NAME xs_3j COMMAND check_res config_default.yml ${tst_dir}/3j.lhe.gz 2.37902e+06 25746.6 ) add_test( NAME xs_3j_analysis_pt COMMAND check_analysis_pt_res config_default.yml ${tst_dir}/3j.lhe.gz ) add_test( NAME xs_3j_unof COMMAND check_res config_default.yml ${tst_dir}/3j.lhe.gz 133399 4688.83 unof ) add_test( NAME xs_3j_unob COMMAND check_res config_default.yml ${tst_dir}/3j.lhe.gz 105247 3449.45 unob ) add_test( NAME xs_3j_splitf COMMAND check_res config_default.yml ${tst_dir}/3j.lhe.gz 97659.9 2748.65 splitf ) add_test( NAME xs_3j_splitb COMMAND check_res config_default.yml ${tst_dir}/3j.lhe.gz 107150 2799.8 splitb ) add_test( NAME xs_4j COMMAND check_res config_default.yml ${tst_dir}/4j.lhe.gz 603713 72822.6 ) add_test( NAME xs_4j_analysis_pt COMMAND check_analysis_pt_res config_default.yml ${tst_dir}/4j.lhe.gz ) add_test( NAME xs_4j_qqbar_mid COMMAND check_res config_default.yml ${tst_dir}/4j.lhe.gz 21866.7 1716.96 qqbar_mid ) add_test( NAME xs_h_3j COMMAND check_res config_higgs.yml ${tst_dir}/h_3j.lhe.gz 0.667678 0.0126859 ) add_test( NAME xs_h_3j_unof COMMAND check_res config_higgs.yml ${tst_dir}/h_3j_uno.lhe.gz 0.0110041 0.000274214 unof ) add_test( NAME xs_h_3j_unob COMMAND check_res config_higgs.yml ${tst_dir}/h_3j_uno.lhe.gz 0.0116516 0.000376737 unob ) add_test( NAME xs_epnu_3j COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted.lhe.gz 84394.7 3770.35 ) add_test( NAME xs_emnubar_3j COMMAND check_res config_default.yml ${tst_dir}/MGemnubar3j_unweighted.lhe.gz 53489.1 977.234 ) add_test( NAME xs_epnu_4j COMMAND check_res config_default.yml ${tst_dir}/MGepnu4j_unweighted.lhe.gz 19616.2 774.336 ) add_test( NAME xs_emnubar_4j COMMAND check_res config_default.yml ${tst_dir}/MGemnubar4j_unweighted.lhe.gz 10169.6 248.741 ) add_test( NAME xs_nunubar_2j COMMAND check_res config_default.yml ${tst_dir}/MGvevex2j_unweighted.lhe.gz 167529 1212.24 ) add_test( NAME xs_2j_lowpt COMMAND check_res config_lowpt.yml ${tst_dir}/2j.lhe.gz 45890.2 5325.62 ) if(TEST_ALL) # deactivate long tests by default add_test( NAME xs_h_1j_long COMMAND check_res config_higgs.yml ${tst_dir}/h_1j_large.lhe.gz 4.70112 0.00415353 ) add_test( NAME xs_epnu_2j COMMAND check_res config_default.yml ${tst_dir}/epnu2jLOFKL_unweight.lhe.tar.gz 262.7 3 ) add_test( NAME xs_epnu_3j_long COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted_large.lhe.gz 38.9512 1 ) add_test( NAME xs_emnubar_3j_long COMMAND check_res config_default.yml ${tst_dir}/MGemnubar3j_unweighted_large.lhe.gz 24.1575 1 ) add_test( NAME xs_epnu_3j_unof COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted_large.lhe.gz 9.63702 0.128355 unof ) add_test( NAME xs_epnu_3j_unob COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted_large.lhe.gz 9.70119 0.108436 unob ) add_test( NAME xs_epnu_3j_splitf COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted_large.lhe.gz 2.91995 0.0463182 splitf ) add_test( NAME xs_epnu_3j_splitb COMMAND check_res config_default.yml ${tst_dir}/MGepnu3j_unweighted_large.lhe.gz 3.40708 0.0550975 splitb ) add_test( NAME xs_epnu_4j_long COMMAND check_res config_default.yml ${tst_dir}/MGepnu4j_unweighted_large.lhe.gz 10.2542 0.135106 ) add_test( NAME xs_emnubar_4j_long COMMAND check_res config_default.yml ${tst_dir}/MGemnubar4j_unweighted_large.lhe.gz 5.73282 0.0583738 ) add_test( NAME xs_epnu_4j_qqbar_mid COMMAND check_res config_default.yml ${tst_dir}/MGepnu4j_unweighted_large.lhe.gz 0.802603 0.0126908 qqbar_mid ) endif()