Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8309006
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
67 KB
Subscribers
None
View Options
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 564f8cc..2f3d62c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,156 +1,156 @@
.tags_template:
tags: &tags_def
- docker
stages:
- minimal_compile
- different_compile
- clean_code
- publish
variables:
HEJ_Install_DIR: tmp_HEJ/HEJ_installed
HEJ_build_DIR: tmp_HEJ/build_HEJ
FOG_build_DIR: tmp_HEJ/build_FOG
after_script:
- date
.HEJ_compile:
tags: *tags_def
before_script:
- date
- source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1
- export t_HEJ_Install_DIR=${PWD}/$HEJ_Install_DIR
- export t_HEJ_build_DIR=${PWD}/$HEJ_build_DIR
- export t_HEJ_DIR=${PWD}
- mkdir -p ${t_HEJ_build_DIR}
- cd ${t_HEJ_build_DIR}
- cmake ${t_HEJ_DIR} -DCMAKE_BUILD_TYPE=DEBUG -DCMAKE_INSTALL_PREFIX=${t_HEJ_Install_DIR}
- make -j 8
Minimal_setup:
stage: minimal_compile
extends: .HEJ_compile
image: hejdock/hepenv
script:
- make test
FOG:
stage: minimal_compile
extends: .HEJ_compile
image: hejdock/hepenv
script:
- date
# install HEJ
- make install
# setup env
- export LD_LIBRARY_PATH=${t_HEJ_Install_DIR}/lib:${LD_LIBRARY_PATH}
- export PATH=${t_HEJ_Install_DIR}/bin:${PATH}
- export t_FOG_build_DIR=${PWD}/$FOG_build_DIR
- export t_FOG_DIR=${t_HEJ_DIR}/FixedOrderGen
# compile
- mkdir -p ${t_FOG_build_DIR}
- cd ${t_FOG_build_DIR}
- cmake ${t_FOG_DIR} -DCMAKE_BUILD_TYPE=DEBUG
- make -j 8
- make test
rivet:
stage: different_compile
extends: .HEJ_compile
image: hejdock/rivetenv
variables:
HEJ_build_DIR: tmp_HEJ/build_HEJ_rivet
script:
- make test
- bash -c '[ -f tst.yoda ]' && echo "found rivet output"
- rivet-cmphistos tst.yoda
- bash -c '[ -f MC_XS_XS.dat ]' && echo "yoda not empty"
QCDloop:
stage: different_compile
extends: .HEJ_compile
image: hejdock/qcdloopenv
variables:
HEJ_build_DIR: tmp_HEJ/build_HEJ_qcd
script:
- make test
HepMC3:
stage: different_compile
extends: .HEJ_compile
image: hejdock/hepmc3env
variables:
HEJ_build_DIR: tmp_HEJ/build_HEJ_HepMC3
script:
- make test
No_tabs:
stage: clean_code
tags: *tags_def
image: hejdock/git
script:
- date
- check_tabs
No_warnings:
stage: clean_code
tags: *tags_def
image: hejdock/hepenv
before_script:
- date
- source /cvmfs/pheno.egi.eu/HEJ/HEJ_env.sh || exit 1
- export t_HEJ_Install_DIR=${PWD}/$HEJ_Install_DIR
- export t_HEJ_build_DIR=${PWD}/$HEJ_build_DIR
- export t_HEJ_DIR=${PWD}
- export LD_LIBRARY_PATH=${t_HEJ_Install_DIR}/lib:${LD_LIBRARY_PATH}
- export PATH=${t_HEJ_Install_DIR}/bin:${PATH}
- export t_FOG_build_DIR=${PWD}/$FOG_build_DIR
- export t_FOG_DIR=${t_HEJ_DIR}/FixedOrderGen
- mkdir -p ${t_HEJ_build_DIR}
- mkdir -p ${t_FOG_build_DIR}
script:
- - sed -i 's/include_directories(${lhapdf/include_directories(SYSTEM ${lhapdf/g' CMakeLists.txt
+ - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt
- sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt
- sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt
- cd ${t_HEJ_build_DIR}
- cmake ${t_HEJ_DIR} -DCMAKE_CXX_FLAGS="-Werror" -DCMAKE_INSTALL_PREFIX=${t_HEJ_Install_DIR}
- make -j 8
- make install
- cd ${t_FOG_DIR}
- - sed -i 's/include_directories(${lhapdf/include_directories(SYSTEM ${lhapdf/g' CMakeLists.txt
+ - sed -i 's/include_directories(${LHAPDF/include_directories(SYSTEM ${LHAPDF/g' CMakeLists.txt
- sed -i 's/include_directories(${fastjet/include_directories(SYSTEM ${fastjet/g' CMakeLists.txt
- sed -i 's/include_directories(${Boost/include_directories(SYSTEM ${Boost/g' CMakeLists.txt
- cd ${t_FOG_build_DIR}
- cmake ${t_FOG_DIR} -DCMAKE_CXX_FLAGS="-Werror"
- make -j 8
.Publish:
stage: publish
tags: *tags_def
image: hejdock/git
before_script:
- mkdir -p .ssh/ && echo "${SSH_KEY}" > .ssh/id_rsa && chmod 0600 .ssh/id_rsa
- rm -rf ~/.ssh/id_rsa; mkdir -p ~/.ssh/
- ln -s $PWD/.ssh/id_rsa ~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa
- ssh -T ${PUBLIC_GIT_PREFIX} -o "StrictHostKeyChecking no" || echo "added ssh"
script:
- git remote add public ${PUBLIC_GIT_PREFIX}${PUBLIC_GIT_POSTFIX}
- git checkout $CI_COMMIT_REF_NAME
- git branch
- git pull
- git push public
- git push public --tags
after_script:
- rm -f /root/.ssh/id_rsa && rm -fr .ssh
- git remote rm public
Publish_version:
extends: .Publish
only:
- /^v\d+\.\d+$/
except:
- tags
when: on_success
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 08d3c01..a6540e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,255 +1,268 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-project("HEJ" VERSION 2.0.3 LANGUAGES C CXX)
+project("HEJ" VERSION 2.0.4 LANGUAGES C CXX)
# Set a default build type if none was specified
set(default_build_type "RelWithDebInfo")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
## Flags for the compiler. No warning allowed.
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
elseif (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /EHsc")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 14)
## Create Version
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE PROJECT_GIT_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE PROJECT_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
## target directories for install
set(INSTALL_INCLUDE_DIR_BASE include)
set(INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR_BASE}/HEJ)
set(INSTALL_BIN_DIR bin)
set(INSTALL_LIB_DIR lib)
set(INSTALL_CONFIG_DIR lib/cmake/HEJ)
## Template files
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates/Version.hh.in
${PROJECT_BINARY_DIR}/include/HEJ/Version.hh @ONLY )
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates/HEJ-config.cc.in
${PROJECT_BINARY_DIR}/src/bin/HEJ-config.cc @ONLY )
# Generate CMake config file
include(CMakePackageConfigHelpers)
configure_package_config_file(
cmake/Templates/hej-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config.cmake
INSTALL_DESTINATION ${INSTALL_CONFIG_DIR}
PATH_VARS INSTALL_INCLUDE_DIR_BASE INSTALL_LIB_DIR
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config-version.cmake
COMPATIBILITY SameMajorVersion
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_CONFIG_DIR}/hej-config-version.cmake
DESTINATION ${INSTALL_CONFIG_DIR})
## Add directories and find dependences
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${PROJECT_BINARY_DIR}/include)
find_package(fastjet REQUIRED)
-include_directories(${fastjet_INCLUDE_PATH})
-find_package(clhep 2.3 REQUIRED)
-include_directories(${CLHEP_INCLUDE_PATH})
-find_package(lhapdf REQUIRED)
-include_directories(${lhapdf_INCLUDE_PATH})
+include_directories(${fastjet_INCLUDE_DIRS})
+find_package(CLHEP 2.3 REQUIRED)
+include_directories(${CLHEP_INCLUDE_DIRS})
+find_package(LHAPDF REQUIRED)
+include_directories(${LHAPDF_INCLUDE_DIRS})
## Amend unintuitive behaviour of FindBoost.cmake
## Priority of BOOST_ROOT over BOOSTROOT matches FindBoost.cmake
## at least for cmake 3.12
if(DEFINED BOOST_ROOT)
message("BOOST_ROOT set - only looking for Boost in ${BOOST_ROOT}")
set(Boost_NO_BOOST_CMAKE ON)
elseif(DEFINED BOOSTROOT)
message("BOOSTROOT set - only looking for Boost in ${BOOSTROOT}")
set(Boost_NO_BOOST_CMAKE ON)
endif()
find_package(Boost REQUIRED COMPONENTS iostreams)
include_directories(${Boost_INCLUDE_DIRS})
-find_package(yaml-cpp)
+find_package(yaml-cpp) # requiring yaml does not work with fedora
include_directories(${YAML_CPP_INCLUDE_DIR})
-find_package(HepMC 2)
+if(${EXCLUDE_HepMC})
+ message(STATUS "Skipping HepMC")
+ # avoid "unused variable" warning if EXCLUDE_rivet is set by user
+ set(EXCLUDE_rivet TRUE)
+else()
+ find_package(HepMC 2)
+endif()
if(${HepMC_FOUND})
- message (STATUS "HepMC installation found: ${HepMC_INCLUDE_DIRS}")
set(
CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -DHEJ_BUILD_WITH_HepMC_VERSION=${HepMC_VERSION_MAJOR}"
)
include_directories(${HepMC_INCLUDE_DIRS})
- find_package(rivet)
+ if(${EXCLUDE_rivet})
+ message(STATUS "Skipping rivet")
+ else()
+ find_package(rivet)
+ endif()
if(${rivet_FOUND})
- include_directories(${rivet_INCLUDE_PATH})
- set(
- CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -DHEJ_BUILD_WITH_RIVET"
- )
+ include_directories(${rivet_INCLUDE_DIRS})
+ set(
+ CMAKE_CXX_FLAGS
+ "${CMAKE_CXX_FLAGS} -DHEJ_BUILD_WITH_RIVET"
+ )
endif()
endif()
-find_package(QCDloop 2)
+if(${EXCLUDE_QCDloop})
+ message(STATUS "Skipping QCDloop")
+else()
+ find_package(QCDloop 2)
+endif()
if(${QCDloop_FOUND})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHEJ_BUILD_WITH_QCDLOOP")
include_directories(SYSTEM ${QCDloop_INCLUDE_DIRS})
endif()
add_subdirectory(src)
## define executable
add_executable(HEJ src/bin/HEJ.cc)
## link libraries
target_link_libraries(HEJ hejlib)
add_executable(HEJ-config src/bin/HEJ-config.cc)
file(GLOB hej_headers ${CMAKE_CURRENT_SOURCE_DIR}/include/HEJ/*.hh ${PROJECT_BINARY_DIR}/include/HEJ/*.hh)
file(GLOB lhef_headers ${CMAKE_CURRENT_SOURCE_DIR}/include/LHEF/*.h)
install(FILES ${hej_headers} DESTINATION ${INSTALL_INCLUDE_DIR})
install(FILES ${lhef_headers} DESTINATION include/LHEF/)
install(TARGETS HEJ HEJ-config DESTINATION ${INSTALL_BIN_DIR})
## tests
enable_testing()
set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}/t")
add_executable(test_classify ${tst_dir}/test_classify.cc)
add_executable(test_psp ${tst_dir}/test_psp.cc)
add_executable(test_ME_generic ${tst_dir}/test_ME_generic.cc)
add_executable(check_res ${tst_dir}/check_res.cc)
add_executable(check_lhe ${tst_dir}/check_lhe.cc)
add_library(scales SHARED ${tst_dir}/scales.cc)
add_executable(test_scale_import ${tst_dir}/test_scale_import)
add_executable(test_descriptions ${tst_dir}/test_descriptions)
add_executable(test_scale_arithmetics ${tst_dir}/test_scale_arithmetics)
target_link_libraries(test_classify hejlib)
target_link_libraries(test_psp hejlib)
target_link_libraries(test_ME_generic hejlib)
target_link_libraries(check_res hejlib)
target_link_libraries(check_lhe hejlib)
target_link_libraries(test_scale_import hejlib)
target_link_libraries(test_descriptions hejlib)
target_link_libraries(test_scale_arithmetics hejlib)
## add tests
add_test(
NAME t_classify
COMMAND test_classify ${tst_dir}/classify.lhe.gz
)
add_test(
NAME t_psp
COMMAND test_psp ${tst_dir}/psp_gen.lhe.gz
)
set(tst_ME_data_dir "${tst_dir}/ME_data")
add_test(
NAME t_ME_j
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_jets.dat ${tst_ME_data_dir}/PSP_jets.lhe.gz
)
add_test(
NAME t_ME_h
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtinf.yml ${tst_ME_data_dir}/ME_h_mtinf.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
if(${QCDloop_FOUND})
add_test(
NAME t_ME_h_mt
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mt.yml ${tst_ME_data_dir}/ME_h_mt.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
add_test(
NAME t_ME_h_mtmb
COMMAND test_ME_generic ${tst_ME_data_dir}/config_mtmb.yml ${tst_ME_data_dir}/ME_h_mtmb.dat ${tst_ME_data_dir}/PSP_h.lhe.gz
)
endif()
add_test(
NAME t_2j
COMMAND check_res ${tst_dir}/2j.lhe.gz 3.49391e+07 419684
)
add_test(
NAME t_3j
COMMAND check_res ${tst_dir}/3j.lhe.gz 2.37902e+06 25746.6
)
add_test(
NAME t_4j
COMMAND check_res ${tst_dir}/4j.lhe.gz 603713 72822.6
)
add_test(
NAME t_h_3j
COMMAND check_res ${tst_dir}/h_3j.lhe.gz 0.821622 0.0220334
)
add_test(
NAME t_h_3j_uno
COMMAND check_res ${tst_dir}/h_3j_uno.lhe.gz 0.0261968 0.000341549 uno
)
if(${HepMC_FOUND})
file(READ "${tst_dir}/jet_config.yml" config)
file(WRITE "${tst_dir}/jet_config_withHepMC.yml" "${config} - tst.hepmc")
if(${rivet_FOUND})
file(READ "${tst_dir}/jet_config_withHepMC.yml" config)
file(WRITE "${tst_dir}/jet_config_withRivet.yml" "${config}\n\nanalysis:\n rivet: MC_XS\n output: tst")
add_test(
NAME t_main
COMMAND HEJ ${tst_dir}/jet_config_withRivet.yml ${tst_dir}/2j.lhe.gz
)
else()
add_test(
NAME t_main
COMMAND HEJ ${tst_dir}/jet_config_withHepMC.yml ${tst_dir}/2j.lhe.gz
)
endif()
if(${HepMC_VERSION_MAJOR} GREATER 2)
add_executable(check_hepmc ${tst_dir}/check_hepmc.cc)
target_link_libraries(check_hepmc hejlib)
add_test(
NAME t_hepmc
COMMAND check_hepmc tst.hepmc
)
endif()
else()
add_test(
NAME t_main
COMMAND HEJ ${tst_dir}/jet_config.yml ${tst_dir}/2j.lhe.gz
)
endif()
add_test(
NAME t_lhe
COMMAND check_lhe tst.lhe
)
add_test(
NAME t_scale_import
COMMAND test_scale_import ${tst_dir}/jet_config_with_import.yml
)
add_test(
NAME t_descriptions
COMMAND test_descriptions
)
add_test(
NAME t_scale_arithmetics
COMMAND test_scale_arithmetics ${tst_dir}/jet_config.yml ${tst_dir}/2j.lhe.gz
)
diff --git a/Changes.md b/Changes.md
index c6f80f7..d1f98d3 100644
--- a/Changes.md
+++ b/Changes.md
@@ -1,23 +1,31 @@
# Version 2.0
## 2.X.0
* Made `MatrixElement::tree_kin` and `MatrixElement::tree_param` public
* Allow multiplication and division of multiple scale functions e.g.
`H_T/2*m_j1j2`
* Follow HepMC convention for particle Status codes: incoming = 11,
decaying = 2, outgoing = 1 (unchanged)
+## 2.0.4
+
+* Fixed wrong path of `HEJ_INCLUDE_DIR` in `hej-config.cmake`
+* Correctly include rivet headers
+* New `EXCLUDE_package` variable in `cmake` to not interface to specific
+ packages
+* Consistent search and include for side packages in `cmake`
+
## 2.0.3
* Fixed parsing of (numerical factor) * (base scale) in configuration
* Don't change scale names, but sanitise Rivet output file names instead
## 2.0.2
* Changed scale names to `"_over_"` and `"_times_"` for proper file names (was
`"/"` and `"*"` before)
## 2.0.1
* Fixed name of fixed-order generator in error message.
diff --git a/FixedOrderGen/CMakeLists.txt b/FixedOrderGen/CMakeLists.txt
index 7c5f029..9a49b94 100644
--- a/FixedOrderGen/CMakeLists.txt
+++ b/FixedOrderGen/CMakeLists.txt
@@ -1,122 +1,113 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-project("HEJ Fixed Order Generation" VERSION 2.0.3 LANGUAGES C CXX)
+project("HEJ Fixed Order Generation" VERSION 2.0.4 LANGUAGES C CXX)
# Set a default build type if none was specified
set(default_build_type "RelWithDebInfo")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()
## Flags for the compiler. No warning allowed.
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
elseif (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX /EHsc")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 14)
## Create Version
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE PROJECT_GIT_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE PROJECT_GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Templates/Version.hh.in
${PROJECT_BINARY_DIR}/include/Version.hh @ONLY )
## Add directories and find dependences
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${PROJECT_BINARY_DIR}/include
- ${CMAKE_CURRENT_SOURCE_DIR}/../include)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include ${PROJECT_BINARY_DIR}/include)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/../cmake/Modules/")
-find_package(HEJ REQUIRED)
-include_directories(${HEJ_INCLUDE_PATH})
+find_package(HEJ 2 REQUIRED)
+include_directories(${HEJ_INCLUDE_DIR})
find_package(fastjet REQUIRED)
-include_directories(${fastjet_INCLUDE_PATH})
-find_package(clhep 2.3 REQUIRED)
-include_directories(${CLHEP_INCLUDE_PATH})
-find_package(lhapdf REQUIRED)
-include_directories(${lhapdf_INCLUDE_PATH})
+include_directories(${fastjet_INCLUDE_DIRS})
+find_package(CLHEP 2.3 REQUIRED)
+include_directories(${CLHEP_INCLUDE_DIRS})
+find_package(LHAPDF REQUIRED)
+include_directories(${LHAPDF_INCLUDE_DIRS})
## Amend unintuitive behaviour of FindBoost.cmake
## Priority of BOOST_ROOT over BOOSTROOT matches FindBoost.cmake
## at least for cmake 3.12
if(DEFINED BOOST_ROOT)
message("BOOST_ROOT set - only looking for Boost in ${BOOST_ROOT}")
set(Boost_NO_BOOST_CMAKE ON)
elseif(DEFINED BOOSTROOT)
message("BOOSTROOT set - only looking for Boost in ${BOOSTROOT}")
set(Boost_NO_BOOST_CMAKE ON)
endif()
find_package(Boost REQUIRED COMPONENTS iostreams)
include_directories(${Boost_INCLUDE_DIRS})
-find_package(yaml-cpp)
+find_package(yaml-cpp) # requiring yaml does not work with fedora
include_directories(${YAML_CPP_INCLUDE_DIR})
-find_package(QCDloop 2)
-if(${QCDloop_FOUND})
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHEJ_BUILD_WITH_QCDLOOP")
- include_directories(SYSTEM ${QCDloop_INCLUDE_DIRS})
-endif()
## define executable
file(GLOB HEJFOG_source ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc)
list(REMOVE_ITEM HEJFOG_source ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc)
add_library(hejfog STATIC ${HEJFOG_source})
add_executable(HEJFOG ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cc)
## link libraries
set(libraries ${CMAKE_DL_LIBS} ${LHAPDF_LIBRARIES} ${CLHEP_LIBRARIES}
- ${FASTJET_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${HEJ_LIBRARIES})
-if(${QCDloop_FOUND})
- list(APPEND libraries ${QCDloop_LIBRARIES} quadmath)
-endif()
+ ${fastjet_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} ${HEJ_LIBRARIES})
target_link_libraries(hejfog ${libraries})
target_link_libraries(HEJFOG hejfog)
install(TARGETS HEJFOG DESTINATION bin)
## tests
enable_testing()
set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}/t")
foreach(tst h_2j h_3j h_5j h_3j_uno1 h_3j_uno2 h_2j_decay 2j 4j)
add_executable(test_${tst} ${tst_dir}/${tst}.cc)
target_link_libraries(test_${tst} hejfog)
add_test(NAME t_${tst} COMMAND test_${tst} WORKING_DIRECTORY ${tst_dir})
endforeach()
add_test(
NAME t_main_2j
COMMAND HEJFOG ${tst_dir}/config_2j.yml
)
add_test(
NAME t_main_h2j
COMMAND HEJFOG ${tst_dir}/config_h_2j.yml
)
add_test(
NAME t_main_h2j_decay
COMMAND HEJFOG ${tst_dir}/config_h_2j_decay.yml
)
diff --git a/cmake/Modules/FindCLHEP.cmake b/cmake/Modules/FindCLHEP.cmake
new file mode 100644
index 0000000..3f4e4cc
--- /dev/null
+++ b/cmake/Modules/FindCLHEP.cmake
@@ -0,0 +1,219 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+# This is a slightly modified version of FindGSL.cmake taken from cmake 3.7
+
+#.rst:
+# FindCLHEP
+# --------
+#
+# Find the native CLHEP includes and libraries.
+#
+# CLHEP package is an object oriented, C++ event record for High Energy
+# Physics Monte Carlo generators and simulation. It is free software
+# under the GNU General Public License.
+#
+# Imported Targets
+# ^^^^^^^^^^^^^^^^
+#
+# If CLHEP is found, this module defines the following
+# :prop_tgt:`IMPORTED` target::
+#
+# CLHEP::CLHEP - The main CLHEP library.
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# This module will set the following variables in your project::
+#
+# CLHEP_FOUND - True if CLHEP found on the local system
+# CLHEP_INCLUDE_DIRS - Location of CLHEP header files.
+# CLHEP_LIBRARIES - The CLHEP libraries.
+# CLHEP_VERSION - The version of the discovered CLHEP install.
+#
+# Hints
+# ^^^^^
+#
+# Set ``CLHEP_ROOT_DIR`` to a directory that contains a CLHEP installation.
+#
+# This script expects to find libraries at ``$CLHEP_ROOT_DIR/lib`` and the CLHEP
+# headers at ``$CLHEP_ROOT_DIR/include/CLHEP``. The library directory may
+# optionally provide Release and Debug folders. For Unix-like systems, this
+# script will use ``$CLHEP_ROOT_DIR/bin/CLHEP-config`` (if found) to aid in the
+# discovery CLHEP.
+#
+# Cache Variables
+# ^^^^^^^^^^^^^^^
+#
+# This module may set the following variables depending on platform and type
+# of CLHEP installation discovered. These variables may optionally be set to
+# help this module find the correct files::
+#
+# CLHEP_CONFIG_EXECUTABLE - Location of the ``CLHEP-config`` script (if any).
+# CLHEP_LIBRARY - Location of the CLHEP library.
+# CLHEP_LIBRARY_DEBUG - Location of the debug CLHEP library (if any).
+#
+
+# Include these modules to handle the QUIETLY and REQUIRED arguments.
+include(FindPackageHandleStandardArgs)
+
+#=============================================================================
+# If the user has provided ``CLHEP_ROOT_DIR``, use it! Choose items found
+# at this location over system locations.
+if( EXISTS "$ENV{CLHEP_ROOT_DIR}" )
+ file( TO_CMAKE_PATH "$ENV{CLHEP_ROOT_DIR}" CLHEP_ROOT_DIR )
+ set( CLHEP_ROOT_DIR "${CLHEP_ROOT_DIR}" CACHE PATH "Prefix for CLHEP installation." )
+endif()
+if( NOT EXISTS "${CLHEP_ROOT_DIR}" )
+ set( CLHEP_USE_PKGCONFIG ON )
+endif()
+
+#=============================================================================
+# As a first try, use the PkgConfig module. This will work on many
+# *NIX systems. See :module:`findpkgconfig`
+# This will return ``CLHEP_INCLUDEDIR`` and ``CLHEP_LIBDIR`` used below.
+if( CLHEP_USE_PKGCONFIG )
+ find_package(PkgConfig)
+ pkg_check_modules( CLHEP QUIET CLHEP )
+
+ if( EXISTS "${CLHEP_INCLUDEDIR}" )
+ get_filename_component( CLHEP_ROOT_DIR "${CLHEP_INCLUDEDIR}" DIRECTORY CACHE)
+ endif()
+endif()
+
+#=============================================================================
+# Set CLHEP_INCLUDE_DIRS and CLHEP_LIBRARIES. If we skipped the PkgConfig step, try
+# to find the libraries at $CLHEP_ROOT_DIR (if provided), in the directory
+# suggested by CLHEP-config (if available), or in standard system
+# locations. These find_library and find_path calls will prefer custom
+# locations over standard locations (HINTS). If the requested file is found
+# neither at the HINTS location nor via CLHEP-config, standard system locations
+# will be still be searched (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
+
+# If we didn't use PkgConfig, try to find the version via CLHEP-config
+if( NOT CLHEP_VERSION )
+ find_program( CLHEP_CONFIG_EXECUTABLE
+ NAMES clhep-config
+ HINTS "${CLHEP_ROOT_DIR}/bin"
+ )
+ if( EXISTS "${CLHEP_CONFIG_EXECUTABLE}" )
+ execute_process(
+ COMMAND "${CLHEP_CONFIG_EXECUTABLE}" --version
+ OUTPUT_VARIABLE CLHEP_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ string(REGEX REPLACE "CLHEP " "" CLHEP_VERSION ${CLHEP_VERSION})
+ execute_process(
+ COMMAND "${CLHEP_CONFIG_EXECUTABLE}" --prefix
+ OUTPUT_VARIABLE CLHEP_CONFIG_ROOT_DIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ string (REGEX REPLACE "\"\(.*\)\"[ \t\r\n]*$" "\\1"
+ CLHEP_CONFIG_ROOT_DIR ${CLHEP_CONFIG_ROOT_DIR} )
+ set(CLHEP_CONFIG_INCLUDEDIR ${CLHEP_CONFIG_ROOT_DIR}/include)
+ set(CLHEP_CONFIG_LIBDIR ${CLHEP_CONFIG_ROOT_DIR}/lib)
+ endif()
+endif()
+find_path( CLHEP_INCLUDE_DIR
+ NAMES CLHEP/ClhepVersion.h
+ HINTS ${CLHEP_ROOT_DIR}/include ${CLHEP_INCLUDEDIR} ${CLHEP_CONFIG_INCLUDEDIR}
+)
+find_library( CLHEP_LIBRARY
+ NAMES CLHEP
+ HINTS ${CLHEP_ROOT_DIR}/lib ${CLHEP_LIBDIR} ${CLHEP_CONFIG_LIBDIR}
+ PATH_SUFFIXES Release Debug
+)
+# Do we also have debug versions?
+find_library( CLHEP_LIBRARY_DEBUG
+ NAMES CLHEP
+ HINTS ${CLHEP_ROOT_DIR}/lib ${CLHEP_LIBDIR} ${CLHEP_CONFIG_LIBDIR}
+ PATH_SUFFIXES Debug
+)
+set( CLHEP_INCLUDE_DIRS ${CLHEP_INCLUDE_DIR} )
+set( CLHEP_LIBRARIES ${CLHEP_LIBRARY} )
+
+if( NOT CLHEP_VERSION )
+ if(IS_DIRECTORY ${CLHEP_INCLUDE_DIR})
+ file(STRINGS "${CLHEP_INCLUDE_DIR}/CLHEP/ClhepVersion.h" _CLHEP_VERS)
+ string(
+ REGEX MATCH
+ "static std::string String\\(\\) *{ *return *\"[^\"]*\""
+ _CLHEP_VERSION_STR "${_CLHEP_VERS}"
+ )
+ message(STATUS "_CLHEP_VERSION_STR ${_CLHEP_VERSION_STR}")
+ string(
+ REGEX MATCH
+ "[0-9]*\\.[0-9]*\\.[0-9]*\\.[0-9]*"
+ CLHEP_VERSION ${_CLHEP_VERSION_STR}
+ )
+ endif()
+endif()
+if( CLHEP_VERSION )
+ string(REPLACE "." ";" t_list ${CLHEP_VERSION})
+ list(APPEND t_list 0 0) # add a buffer in case supversion not set
+ list(GET t_list 0 CLHEP_VERSION_MAJOR)
+ list(GET t_list 1 CLHEP_VERSION_MINOR)
+ list(GET t_list 2 CLHEP_VERSION_PATCH)
+endif()
+#=============================================================================
+# handle the QUIETLY and REQUIRED arguments and set CLHEP_FOUND to TRUE if all
+# listed variables are TRUE
+find_package_handle_standard_args( CLHEP
+ FOUND_VAR
+ CLHEP_FOUND
+ REQUIRED_VARS
+ CLHEP_INCLUDE_DIR
+ CLHEP_LIBRARY
+ VERSION_VAR
+ CLHEP_VERSION
+ )
+
+mark_as_advanced( CLHEP_ROOT_DIR CLHEP_VERSION CLHEP_LIBRARY CLHEP_INCLUDE_DIR
+ CLHEP_LIBRARY_DEBUG CLHEP_USE_PKGCONFIG CLHEP_CONFIG )
+
+#=============================================================================
+# Register imported libraries:
+# 1. If we can find a Windows .dll file (or if we can find both Debug and
+# Release libraries), we will set appropriate target properties for these.
+# 2. However, for most systems, we will only register the import location and
+# include directory.
+
+# Look for dlls, or Release and Debug libraries.
+if(WIN32)
+ string( REPLACE ".lib" ".dll" CLHEP_LIBRARY_DLL "${CLHEP_LIBRARY}" )
+ string( REPLACE ".lib" ".dll" CLHEP_LIBRARY_DEBUG_DLL "${CLHEP_LIBRARY_DEBUG}" )
+endif()
+
+if( CLHEP_FOUND AND NOT TARGET CLHEP::CLHEP )
+ if( EXISTS "${CLHEP_LIBRARY_DLL}")
+
+ # Windows systems with dll libraries.
+ add_library( CLHEP::CLHEP SHARED IMPORTED )
+ add_library( CLHEP::CLHEPcblas SHARED IMPORTED )
+
+ # Windows with dlls, but only Release libraries.
+ set_target_properties( CLHEP::CLHEP PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${CLHEP_LIBRARY_DLL}"
+ IMPORTED_IMPLIB "${CLHEP_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CLHEP_INCLUDE_DIRS}"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+
+ # If we have both Debug and Release libraries
+ if( EXISTS "${CLHEP_LIBRARY_DEBUG_DLL}")
+ set_property( TARGET CLHEP::CLHEP APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+ set_target_properties( CLHEP::CLHEP PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${CLHEP_LIBRARY_DEBUG_DLL}"
+ IMPORTED_IMPLIB_DEBUG "${CLHEP_LIBRARY_DEBUG}" )
+ endif()
+
+ else()
+
+ # For all other environments (ones without dll libraries), create
+ # the imported library targets.
+ add_library( CLHEP::CLHEP UNKNOWN IMPORTED )
+ set_target_properties( CLHEP::CLHEP PROPERTIES
+ IMPORTED_LOCATION "${CLHEP_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${CLHEP_INCLUDE_DIRS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+ endif()
+endif()
diff --git a/cmake/Modules/FindHepMC.cmake b/cmake/Modules/FindHepMC.cmake
index a311f15..6c5d8d3 100644
--- a/cmake/Modules/FindHepMC.cmake
+++ b/cmake/Modules/FindHepMC.cmake
@@ -1,218 +1,218 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# This is a slightly modified version of FindGSL.cmake taken from cmake 3.7
#.rst:
# FindHepMC
# --------
#
# Find the native HepMC includes and libraries.
#
# HepMC package is an object oriented, C++ event record for High Energy
# Physics Monte Carlo generators and simulation. It is free software
# under the GNU General Public License.
#
# Imported Targets
# ^^^^^^^^^^^^^^^^
#
# If HepMC is found, this module defines the following
# :prop_tgt:`IMPORTED` target::
#
# HepMC::HepMC - The main HepMC library.
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module will set the following variables in your project::
#
# HepMC_FOUND - True if HepMC found on the local system
# HepMC_INCLUDE_DIRS - Location of HepMC header files.
# HepMC_LIBRARIES - The HepMC libraries.
# HepMC_VERSION - The version of the discovered HepMC install.
#
# Hints
# ^^^^^
#
# Set ``HepMC_ROOT_DIR`` to a directory that contains a HepMC installation.
#
# This script expects to find libraries at ``$HepMC_ROOT_DIR/lib`` and the HepMC
# headers at ``$HepMC_ROOT_DIR/include/HepMC``. The library directory may
# optionally provide Release and Debug folders. For Unix-like systems, this
# script will use ``$HepMC_ROOT_DIR/bin/HepMC-config`` (if found) to aid in the
# discovery HepMC.
#
# Cache Variables
# ^^^^^^^^^^^^^^^
#
# This module may set the following variables depending on platform and type
# of HepMC installation discovered. These variables may optionally be set to
# help this module find the correct files::
#
# HepMC_CONFIG_EXECUTABLE - Location of the ``HepMC-config`` script (if any).
# HepMC_LIBRARY - Location of the HepMC library.
# HepMC_LIBRARY_DEBUG - Location of the debug HepMC library (if any).
#
# Include these modules to handle the QUIETLY and REQUIRED arguments.
include(FindPackageHandleStandardArgs)
#=============================================================================
# If the user has provided ``HepMC_ROOT_DIR``, use it! Choose items found
# at this location over system locations.
if( EXISTS "$ENV{HepMC_ROOT_DIR}" )
file( TO_CMAKE_PATH "$ENV{HepMC_ROOT_DIR}" HepMC_ROOT_DIR )
set( HepMC_ROOT_DIR "${HepMC_ROOT_DIR}" CACHE PATH "Prefix for HepMC installation." )
endif()
if( NOT EXISTS "${HepMC_ROOT_DIR}" )
set( HepMC_USE_PKGCONFIG ON )
endif()
#=============================================================================
# As a first try, use the PkgConfig module. This will work on many
# *NIX systems. See :module:`findpkgconfig`
# This will return ``HepMC_INCLUDEDIR`` and ``HepMC_LIBDIR`` used below.
if( HepMC_USE_PKGCONFIG )
find_package(PkgConfig)
pkg_check_modules( HepMC QUIET HepMC )
if( EXISTS "${HepMC_INCLUDEDIR}" )
get_filename_component( HepMC_ROOT_DIR "${HepMC_INCLUDEDIR}" DIRECTORY CACHE)
endif()
endif()
#=============================================================================
# Set HepMC_INCLUDE_DIRS and HepMC_LIBRARIES. If we skipped the PkgConfig step, try
# to find the libraries at $HepMC_ROOT_DIR (if provided), in the directory
# suggested by HepMC-config (if available), or in standard system
# locations. These find_library and find_path calls will prefer custom
# locations over standard locations (HINTS). If the requested file is found
# neither at the HINTS location nor via HepMC-config, standard system locations
# will be still be searched (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
# If we didn't use PkgConfig, try to find the version via HepMC-config
if( NOT HepMC_VERSION )
find_program( HepMC_CONFIG_EXECUTABLE
NAMES HepMC-config
HINTS "${HepMC_ROOT_DIR}/bin"
)
if( EXISTS "${HepMC_CONFIG_EXECUTABLE}" )
execute_process(
COMMAND "${HepMC_CONFIG_EXECUTABLE}" --version
OUTPUT_VARIABLE HepMC_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE )
execute_process(
COMMAND "${HepMC_CONFIG_EXECUTABLE}" --incdir
OUTPUT_VARIABLE HepMC_CONFIG_INCLUDEDIR
OUTPUT_STRIP_TRAILING_WHITESPACE )
execute_process(
COMMAND "${HepMC_CONFIG_EXECUTABLE}" --libdir
OUTPUT_VARIABLE HepMC_CONFIG_LIBDIR
OUTPUT_STRIP_TRAILING_WHITESPACE )
endif()
endif()
find_path( HepMC_INCLUDE_DIR
- NAMES HepMC/HepMC.h HepMC/HepMCDefs.h
+ NAMES HepMC/HepMCDefs.h
HINTS ${HepMC_ROOT_DIR}/include ${HepMC_INCLUDEDIR} ${HepMC_CONFIG_INCLUDEDIR}
)
find_library( HepMC_LIBRARY
NAMES HepMC
HINTS ${HepMC_ROOT_DIR}/lib ${HepMC_LIBDIR} ${HepMC_CONFIG_LIBDIR}
PATH_SUFFIXES Release Debug
)
# Do we also have debug versions?
find_library( HepMC_LIBRARY_DEBUG
NAMES HepMC
HINTS ${HepMC_ROOT_DIR}/lib ${HepMC_LIBDIR} ${HepMC_CONFIG_LIBDIR}
PATH_SUFFIXES Debug
)
set( HepMC_INCLUDE_DIRS ${HepMC_INCLUDE_DIR} )
set( HepMC_LIBRARIES ${HepMC_LIBRARY} )
if( NOT HepMC_VERSION )
if(IS_DIRECTORY ${HepMC_INCLUDE_DIR})
file(STRINGS "${HepMC_INCLUDE_DIR}/HepMC/HepMCDefs.h" _HepMC_DEFS)
file(STRINGS "${HepMC_INCLUDE_DIR}/HepMC/Version.h" _HepMC_VERS)
string(
REGEX MATCH
"#define *HEPMC_VERSION *\"[^\"]*\""
_HepMC_VERSION_STR "${_HepMC_DEFS} ${_HepMC_VERS}"
)
string(
REGEX MATCH
"[0-9]*\\.[0-9]*\\.[0-9]*"
HepMC_VERSION ${_HepMC_VERSION_STR}
)
endif()
endif()
if( HepMC_VERSION )
string(REPLACE "." ";" t_list ${HepMC_VERSION})
list(APPEND t_list 0 0) # add a buffer in case supversion not set
list(GET t_list 0 HepMC_VERSION_MAJOR)
list(GET t_list 1 HepMC_VERSION_MINOR)
list(GET t_list 2 HepMC_VERSION_PATCH)
endif()
#=============================================================================
# handle the QUIETLY and REQUIRED arguments and set HepMC_FOUND to TRUE if all
# listed variables are TRUE
find_package_handle_standard_args( HepMC
FOUND_VAR
HepMC_FOUND
REQUIRED_VARS
HepMC_INCLUDE_DIR
HepMC_LIBRARY
VERSION_VAR
HepMC_VERSION
)
mark_as_advanced( HepMC_ROOT_DIR HepMC_VERSION HepMC_LIBRARY HepMC_INCLUDE_DIR
HepMC_LIBRARY_DEBUG HepMC_USE_PKGCONFIG HepMC_CONFIG )
#=============================================================================
# Register imported libraries:
# 1. If we can find a Windows .dll file (or if we can find both Debug and
# Release libraries), we will set appropriate target properties for these.
# 2. However, for most systems, we will only register the import location and
# include directory.
# Look for dlls, or Release and Debug libraries.
if(WIN32)
string( REPLACE ".lib" ".dll" HepMC_LIBRARY_DLL "${HepMC_LIBRARY}" )
string( REPLACE ".lib" ".dll" HepMC_LIBRARY_DEBUG_DLL "${HepMC_LIBRARY_DEBUG}" )
endif()
if( HepMC_FOUND AND NOT TARGET HepMC::HepMC )
if( EXISTS "${HepMC_LIBRARY_DLL}")
# Windows systems with dll libraries.
add_library( HepMC::HepMC SHARED IMPORTED )
add_library( HepMC::HepMCcblas SHARED IMPORTED )
# Windows with dlls, but only Release libraries.
set_target_properties( HepMC::HepMC PROPERTIES
IMPORTED_LOCATION_RELEASE "${HepMC_LIBRARY_DLL}"
IMPORTED_IMPLIB "${HepMC_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${HepMC_INCLUDE_DIRS}"
IMPORTED_CONFIGURATIONS Release
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
)
# If we have both Debug and Release libraries
if( EXISTS "${HepMC_LIBRARY_DEBUG_DLL}")
set_property( TARGET HepMC::HepMC APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
set_target_properties( HepMC::HepMC PROPERTIES
IMPORTED_LOCATION_DEBUG "${HepMC_LIBRARY_DEBUG_DLL}"
IMPORTED_IMPLIB_DEBUG "${HepMC_LIBRARY_DEBUG}" )
endif()
else()
# For all other environments (ones without dll libraries), create
# the imported library targets.
add_library( HepMC::HepMC UNKNOWN IMPORTED )
set_target_properties( HepMC::HepMC PROPERTIES
IMPORTED_LOCATION "${HepMC_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${HepMC_INCLUDE_DIRS}"
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
)
endif()
endif()
diff --git a/cmake/Modules/FindLHAPDF.cmake b/cmake/Modules/FindLHAPDF.cmake
new file mode 100644
index 0000000..4df57a3
--- /dev/null
+++ b/cmake/Modules/FindLHAPDF.cmake
@@ -0,0 +1,217 @@
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+# This is a slightly modified version of FindGSL.cmake taken from cmake 3.7
+
+#.rst:
+# FindLHAPDF
+# --------
+#
+# Find the native LHAPDF includes and libraries.
+#
+# LHAPDF package is an object oriented, C++ event record for High Energy
+# Physics Monte Carlo generators and simulation. It is free software
+# under the GNU General Public License.
+#
+# Imported Targets
+# ^^^^^^^^^^^^^^^^
+#
+# If LHAPDF is found, this module defines the following
+# :prop_tgt:`IMPORTED` target::
+#
+# LHAPDF::LHAPDF - The main LHAPDF library.
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# This module will set the following variables in your project::
+#
+# LHAPDF_FOUND - True if LHAPDF found on the local system
+# LHAPDF_INCLUDE_DIRS - Location of LHAPDF header files.
+# LHAPDF_LIBRARIES - The LHAPDF libraries.
+# LHAPDF_VERSION - The version of the discovered LHAPDF install.
+#
+# Hints
+# ^^^^^
+#
+# Set ``LHAPDF_ROOT_DIR`` to a directory that contains a LHAPDF installation.
+#
+# This script expects to find libraries at ``$LHAPDF_ROOT_DIR/lib`` and the LHAPDF
+# headers at ``$LHAPDF_ROOT_DIR/include/LHAPDF``. The library directory may
+# optionally provide Release and Debug folders. For Unix-like systems, this
+# script will use ``$LHAPDF_ROOT_DIR/bin/LHAPDF-config`` (if found) to aid in the
+# discovery LHAPDF.
+#
+# Cache Variables
+# ^^^^^^^^^^^^^^^
+#
+# This module may set the following variables depending on platform and type
+# of LHAPDF installation discovered. These variables may optionally be set to
+# help this module find the correct files::
+#
+# LHAPDF_CONFIG_EXECUTABLE - Location of the ``LHAPDF-config`` script (if any).
+# LHAPDF_LIBRARY - Location of the LHAPDF library.
+# LHAPDF_LIBRARY_DEBUG - Location of the debug LHAPDF library (if any).
+#
+
+# Include these modules to handle the QUIETLY and REQUIRED arguments.
+include(FindPackageHandleStandardArgs)
+
+#=============================================================================
+# If the user has provided ``LHAPDF_ROOT_DIR``, use it! Choose items found
+# at this location over system locations.
+if( EXISTS "$ENV{LHAPDF_ROOT_DIR}" )
+ file( TO_CMAKE_PATH "$ENV{LHAPDF_ROOT_DIR}" LHAPDF_ROOT_DIR )
+ set( LHAPDF_ROOT_DIR "${LHAPDF_ROOT_DIR}" CACHE PATH "Prefix for LHAPDF installation." )
+endif()
+if( NOT EXISTS "${LHAPDF_ROOT_DIR}" )
+ set( LHAPDF_USE_PKGCONFIG ON )
+endif()
+
+#=============================================================================
+# As a first try, use the PkgConfig module. This will work on many
+# *NIX systems. See :module:`findpkgconfig`
+# This will return ``LHAPDF_INCLUDEDIR`` and ``LHAPDF_LIBDIR`` used below.
+if( LHAPDF_USE_PKGCONFIG )
+ find_package(PkgConfig)
+ pkg_check_modules( LHAPDF QUIET LHAPDF )
+
+ if( EXISTS "${LHAPDF_INCLUDEDIR}" )
+ get_filename_component( LHAPDF_ROOT_DIR "${LHAPDF_INCLUDEDIR}" DIRECTORY CACHE)
+ endif()
+endif()
+
+#=============================================================================
+# Set LHAPDF_INCLUDE_DIRS and LHAPDF_LIBRARIES. If we skipped the PkgConfig step, try
+# to find the libraries at $LHAPDF_ROOT_DIR (if provided), in the directory
+# suggested by LHAPDF-config (if available), or in standard system
+# locations. These find_library and find_path calls will prefer custom
+# locations over standard locations (HINTS). If the requested file is found
+# neither at the HINTS location nor via LHAPDF-config, standard system locations
+# will be still be searched (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
+
+# If we didn't use PkgConfig, try to find the version via LHAPDF-config
+if( NOT LHAPDF_VERSION )
+ find_program( LHAPDF_CONFIG_EXECUTABLE
+ NAMES lhapdf-config
+ HINTS "${LHAPDF_ROOT_DIR}/bin"
+ )
+ if( EXISTS "${LHAPDF_CONFIG_EXECUTABLE}" )
+ execute_process(
+ COMMAND "${LHAPDF_CONFIG_EXECUTABLE}" --version
+ OUTPUT_VARIABLE LHAPDF_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ execute_process(
+ COMMAND "${LHAPDF_CONFIG_EXECUTABLE}" --incdir
+ OUTPUT_VARIABLE LHAPDF_CONFIG_INCLUDEDIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ execute_process(
+ COMMAND "${LHAPDF_CONFIG_EXECUTABLE}" --libdir
+ OUTPUT_VARIABLE LHAPDF_CONFIG_LIBDIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ endif()
+endif()
+find_path( LHAPDF_INCLUDE_DIR
+ NAMES LHAPDF/LHAPDF.h LHAPDF/Version.h
+ HINTS ${LHAPDF_ROOT_DIR}/include ${LHAPDF_INCLUDEDIR} ${LHAPDF_CONFIG_INCLUDEDIR}
+)
+find_library( LHAPDF_LIBRARY
+ NAMES LHAPDF
+ HINTS ${LHAPDF_ROOT_DIR}/lib ${LHAPDF_LIBDIR} ${LHAPDF_CONFIG_LIBDIR}
+ PATH_SUFFIXES Release Debug
+)
+# Do we also have debug versions?
+find_library( LHAPDF_LIBRARY_DEBUG
+ NAMES LHAPDF
+ HINTS ${LHAPDF_ROOT_DIR}/lib ${LHAPDF_LIBDIR} ${LHAPDF_CONFIG_LIBDIR}
+ PATH_SUFFIXES Debug
+)
+set( LHAPDF_INCLUDE_DIRS ${LHAPDF_INCLUDE_DIR} )
+set( LHAPDF_LIBRARIES ${LHAPDF_LIBRARY} )
+
+if( NOT LHAPDF_VERSION )
+ if(IS_DIRECTORY ${LHAPDF_INCLUDE_DIR})
+ file(STRINGS "${LHAPDF_INCLUDE_DIR}/LHAPDF/Version.h" _LHAPDF_VERS)
+ string(
+ REGEX MATCH
+ "#define *LHAPDF_VERSION *\"[^\"]*\""
+ _LHAPDF_VERSION_STR "${_LHAPDF_VERS}"
+ )
+ string(
+ REGEX MATCH
+ "[0-9]*\\.[0-9]*\\.[0-9]*"
+ LHAPDF_VERSION ${_LHAPDF_VERSION_STR}
+ )
+ endif()
+endif()
+if( LHAPDF_VERSION )
+ string(REPLACE "." ";" t_list ${LHAPDF_VERSION})
+ list(APPEND t_list 0 0) # add a buffer in case supversion not set
+ list(GET t_list 0 LHAPDF_VERSION_MAJOR)
+ list(GET t_list 1 LHAPDF_VERSION_MINOR)
+ list(GET t_list 2 LHAPDF_VERSION_PATCH)
+endif()
+#=============================================================================
+# handle the QUIETLY and REQUIRED arguments and set LHAPDF_FOUND to TRUE if all
+# listed variables are TRUE
+find_package_handle_standard_args( LHAPDF
+ FOUND_VAR
+ LHAPDF_FOUND
+ REQUIRED_VARS
+ LHAPDF_INCLUDE_DIR
+ LHAPDF_LIBRARY
+ VERSION_VAR
+ LHAPDF_VERSION
+ )
+
+mark_as_advanced( LHAPDF_ROOT_DIR LHAPDF_VERSION LHAPDF_LIBRARY LHAPDF_INCLUDE_DIR
+ LHAPDF_LIBRARY_DEBUG LHAPDF_USE_PKGCONFIG LHAPDF_CONFIG )
+
+#=============================================================================
+# Register imported libraries:
+# 1. If we can find a Windows .dll file (or if we can find both Debug and
+# Release libraries), we will set appropriate target properties for these.
+# 2. However, for most systems, we will only register the import location and
+# include directory.
+
+# Look for dlls, or Release and Debug libraries.
+if(WIN32)
+ string( REPLACE ".lib" ".dll" LHAPDF_LIBRARY_DLL "${LHAPDF_LIBRARY}" )
+ string( REPLACE ".lib" ".dll" LHAPDF_LIBRARY_DEBUG_DLL "${LHAPDF_LIBRARY_DEBUG}" )
+endif()
+
+if( LHAPDF_FOUND AND NOT TARGET LHAPDF::LHAPDF )
+ if( EXISTS "${LHAPDF_LIBRARY_DLL}")
+
+ # Windows systems with dll libraries.
+ add_library( LHAPDF::LHAPDF SHARED IMPORTED )
+ add_library( LHAPDF::LHAPDFcblas SHARED IMPORTED )
+
+ # Windows with dlls, but only Release libraries.
+ set_target_properties( LHAPDF::LHAPDF PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${LHAPDF_LIBRARY_DLL}"
+ IMPORTED_IMPLIB "${LHAPDF_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LHAPDF_INCLUDE_DIRS}"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+
+ # If we have both Debug and Release libraries
+ if( EXISTS "${LHAPDF_LIBRARY_DEBUG_DLL}")
+ set_property( TARGET LHAPDF::LHAPDF APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+ set_target_properties( LHAPDF::LHAPDF PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${LHAPDF_LIBRARY_DEBUG_DLL}"
+ IMPORTED_IMPLIB_DEBUG "${LHAPDF_LIBRARY_DEBUG}" )
+ endif()
+
+ else()
+
+ # For all other environments (ones without dll libraries), create
+ # the imported library targets.
+ add_library( LHAPDF::LHAPDF UNKNOWN IMPORTED )
+ set_target_properties( LHAPDF::LHAPDF PROPERTIES
+ IMPORTED_LOCATION "${LHAPDF_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${LHAPDF_INCLUDE_DIRS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+ endif()
+endif()
diff --git a/cmake/Modules/Findclhep.cmake b/cmake/Modules/Findclhep.cmake
deleted file mode 100644
index 6e4943a..0000000
--- a/cmake/Modules/Findclhep.cmake
+++ /dev/null
@@ -1,35 +0,0 @@
-include (FindPackageMessage)
-include(FindPackageHandleStandardArgs)
-
-message (STATUS "Detecting clhep installation")
-execute_process (COMMAND clhep-config --prefix
- OUTPUT_VARIABLE clhep_PREFIX
- )
-if (clhep_PREFIX)
- string (REGEX REPLACE "\"\(.*\)\"[ \t\r\n]*$" "\\1" clhep_PREFIX ${clhep_PREFIX} )
- message (STATUS "clhep installation found: ${clhep_PREFIX}")
- EXECUTE_PROCESS(COMMAND clhep-config --libs OUTPUT_VARIABLE
- CLHEP_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
- EXECUTE_PROCESS(COMMAND clhep-config --version OUTPUT_VARIABLE
- clhep_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX REPLACE "CLHEP " "" clhep_VERSION ${clhep_VERSION})
- set (CLHEP_INCLUDE_PATH ${clhep_PREFIX}/include)
- set (clhep_FOUND TRUE)
-else (clhep_PREFIX)
- set (clhep_FOUND FALSE)
-endif (clhep_PREFIX)
-
-find_package_handle_standard_args(clhep
- FOUND_VAR
- clhep_FOUND
- REQUIRED_VARS
- CLHEP_INCLUDE_PATH
- CLHEP_LIBRARIES
- VERSION_VAR
- clhep_VERSION
- )
-
-mark_as_advanced(
- CLHEP_INCLUDE_PATH
- CLHEP_LIBRARIES
-)
diff --git a/cmake/Modules/Findfastjet.cmake b/cmake/Modules/Findfastjet.cmake
index a7d9073..ba03935 100644
--- a/cmake/Modules/Findfastjet.cmake
+++ b/cmake/Modules/Findfastjet.cmake
@@ -1,30 +1,216 @@
-include (FindPackageMessage)
-
-message (STATUS "Detecting FastJet installation")
-execute_process (COMMAND fastjet-config --prefix
- OUTPUT_VARIABLE fastjet_PREFIX
- )
-if (fastjet_PREFIX)
- string (STRIP ${fastjet_PREFIX} fastjet_PREFIX)
- message (STATUS "FastJet installation found: ${fastjet_PREFIX}")
- EXECUTE_PROCESS(COMMAND fastjet-config --libs OUTPUT_VARIABLE
- FASTJET_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
- # set (fastjet_LIBRARIES ${fastjet_LIBRARIES} )
- set (fastjet_INCLUDE_PATH ${fastjet_PREFIX}/include)
- set (fastjet_FOUND TRUE)
-else (fastjet_PREFIX)
- set (fastjet_FOUND FALSE)
-endif (fastjet_PREFIX)
-
-if (NOT fastjet_FOUND)
- message(FATAL_ERROR "FastJet installation not found!")
-endif (NOT fastjet_FOUND)
-
-mark_as_advanced(
- fastjet_INCLUDE_PATH
- fastjet_LIBRARIES
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+# This is a slightly modified version of FindGSL.cmake taken from cmake 3.7
+
+#.rst:
+# Findfastjet
+# --------
+#
+# Find the native fastjet includes and libraries.
+#
+# fastjet package is an object oriented, C++ event record for High Energy
+# Physics Monte Carlo generators and simulation. It is free software
+# under the GNU General Public License.
+#
+# Imported Targets
+# ^^^^^^^^^^^^^^^^
+#
+# If fastjet is found, this module defines the following
+# :prop_tgt:`IMPORTED` target::
+#
+# fastjet::fastjet - The main fastjet library.
+#
+# Result Variables
+# ^^^^^^^^^^^^^^^^
+#
+# This module will set the following variables in your project::
+#
+# fastjet_FOUND - True if fastjet found on the local system
+# fastjet_INCLUDE_DIRS - Location of fastjet header files.
+# fastjet_LIBRARIES - The fastjet libraries.
+# fastjet_VERSION - The version of the discovered fastjet install.
+#
+# Hints
+# ^^^^^
+#
+# Set ``fastjet_ROOT_DIR`` to a directory that contains a fastjet installation.
+#
+# This script expects to find libraries at ``$fastjet_ROOT_DIR/lib`` and the fastjet
+# headers at ``$fastjet_ROOT_DIR/include/fastjet``. The library directory may
+# optionally provide Release and Debug folders. For Unix-like systems, this
+# script will use ``$fastjet_ROOT_DIR/bin/fastjet-config`` (if found) to aid in the
+# discovery fastjet.
+#
+# Cache Variables
+# ^^^^^^^^^^^^^^^
+#
+# This module may set the following variables depending on platform and type
+# of fastjet installation discovered. These variables may optionally be set to
+# help this module find the correct files::
+#
+# fastjet_CONFIG_EXECUTABLE - Location of the ``fastjet-config`` script (if any).
+# fastjet_LIBRARY - Location of the fastjet library.
+# fastjet_LIBRARY_DEBUG - Location of the debug fastjet library (if any).
+#
+
+# Include these modules to handle the QUIETLY and REQUIRED arguments.
+include(FindPackageHandleStandardArgs)
+
+#=============================================================================
+# If the user has provided ``fastjet_ROOT_DIR``, use it! Choose items found
+# at this location over system locations.
+if( EXISTS "$ENV{fastjet_ROOT_DIR}" )
+ file( TO_CMAKE_PATH "$ENV{fastjet_ROOT_DIR}" fastjet_ROOT_DIR )
+ set( fastjet_ROOT_DIR "${fastjet_ROOT_DIR}" CACHE PATH "Prefix for fastjet installation." )
+endif()
+if( NOT EXISTS "${fastjet_ROOT_DIR}" )
+ set( fastjet_USE_PKGCONFIG ON )
+endif()
+
+#=============================================================================
+# As a first try, use the PkgConfig module. This will work on many
+# *NIX systems. See :module:`findpkgconfig`
+# This will return ``fastjet_INCLUDEDIR`` and ``fastjet_LIBDIR`` used below.
+if( fastjet_USE_PKGCONFIG )
+ find_package(PkgConfig)
+ pkg_check_modules( fastjet QUIET fastjet )
+
+ if( EXISTS "${fastjet_INCLUDEDIR}" )
+ get_filename_component( fastjet_ROOT_DIR "${fastjet_INCLUDEDIR}" DIRECTORY CACHE)
+ endif()
+endif()
+
+#=============================================================================
+# Set fastjet_INCLUDE_DIRS and fastjet_LIBRARIES. If we skipped the PkgConfig step, try
+# to find the libraries at $fastjet_ROOT_DIR (if provided), in the directory
+# suggested by fastjet-config (if available), or in standard system
+# locations. These find_library and find_path calls will prefer custom
+# locations over standard locations (HINTS). If the requested file is found
+# neither at the HINTS location nor via fastjet-config, standard system locations
+# will be still be searched (/usr/lib64 (Redhat), lib/i386-linux-gnu (Debian)).
+
+# If we didn't use PkgConfig, try to find the version via fastjet-config
+if( NOT fastjet_VERSION )
+ find_program( fastjet_CONFIG_EXECUTABLE
+ NAMES fastjet-config
+ HINTS "${fastjet_ROOT_DIR}/bin"
+ )
+ if( EXISTS "${fastjet_CONFIG_EXECUTABLE}" )
+ execute_process(
+ COMMAND "${fastjet_CONFIG_EXECUTABLE}" --version
+ OUTPUT_VARIABLE fastjet_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ execute_process(
+ COMMAND "${fastjet_CONFIG_EXECUTABLE}" --prefix
+ OUTPUT_VARIABLE fastjet_CONFIG_ROOT_DIR
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+ set(fastjet_CONFIG_INCLUDEDIR ${fastjet_CONFIG_ROOT_DIR}/include)
+ set(fastjet_CONFIG_LIBDIR ${fastjet_CONFIG_ROOT_DIR}/lib)
+ endif()
+endif()
+find_path( fastjet_INCLUDE_DIR
+ NAMES fastjet/config_auto.h fastjet/PseudoJet.hh
+ HINTS ${fastjet_ROOT_DIR}/include ${fastjet_INCLUDEDIR} ${fastjet_CONFIG_INCLUDEDIR}
+)
+find_library( fastjet_LIBRARY
+ NAMES fastjet
+ HINTS ${fastjet_ROOT_DIR}/lib ${fastjet_LIBDIR} ${fastjet_CONFIG_LIBDIR}
+ PATH_SUFFIXES Release Debug
)
+# Do we also have debug versions?
+find_library( fastjet_LIBRARY_DEBUG
+ NAMES fastjet
+ HINTS ${fastjet_ROOT_DIR}/lib ${fastjet_LIBDIR} ${fastjet_CONFIG_LIBDIR}
+ PATH_SUFFIXES Debug
+)
+set( fastjet_INCLUDE_DIRS ${fastjet_INCLUDE_DIR} )
+set( fastjet_LIBRARIES ${fastjet_LIBRARY} )
+
+if( NOT fastjet_VERSION )
+ if(IS_DIRECTORY ${fastjet_INCLUDE_DIR})
+ file(STRINGS "${fastjet_INCLUDE_DIR}/fastjet/config_auto.h" _fastjet_DEFS)
+ file(STRINGS "${fastjet_INCLUDE_DIR}/fastjet/version.hh" _fastjet_VERS)
+ string(
+ REGEX MATCH
+ "#define *FASTJET_VERSION *\"[^\"]*\""
+ _fastjet_VERSION_STR "${_fastjet_VERS} ${_fastjet_DEFS}"
+ )
+ string(
+ REGEX MATCH
+ "[0-9]*\\.[0-9]*\\.[0-9]*"
+ fastjet_VERSION ${_fastjet_VERSION_STR}
+ )
+ endif()
+endif()
+if( fastjet_VERSION )
+ string(REPLACE "." ";" t_list ${fastjet_VERSION})
+ list(APPEND t_list 0 0) # add a buffer in case supversion not set
+ list(GET t_list 0 fastjet_VERSION_MAJOR)
+ list(GET t_list 1 fastjet_VERSION_MINOR)
+ list(GET t_list 2 fastjet_VERSION_PATCH)
+endif()
+#=============================================================================
+# handle the QUIETLY and REQUIRED arguments and set fastjet_FOUND to TRUE if all
+# listed variables are TRUE
+find_package_handle_standard_args( fastjet
+ FOUND_VAR
+ fastjet_FOUND
+ REQUIRED_VARS
+ fastjet_INCLUDE_DIR
+ fastjet_LIBRARY
+ VERSION_VAR
+ fastjet_VERSION
+ )
+
+mark_as_advanced( fastjet_ROOT_DIR fastjet_VERSION fastjet_LIBRARY fastjet_INCLUDE_DIR
+ fastjet_LIBRARY_DEBUG fastjet_USE_PKGCONFIG fastjet_CONFIG )
+
+#=============================================================================
+# Register imported libraries:
+# 1. If we can find a Windows .dll file (or if we can find both Debug and
+# Release libraries), we will set appropriate target properties for these.
+# 2. However, for most systems, we will only register the import location and
+# include directory.
+
+# Look for dlls, or Release and Debug libraries.
+if(WIN32)
+ string( REPLACE ".lib" ".dll" fastjet_LIBRARY_DLL "${fastjet_LIBRARY}" )
+ string( REPLACE ".lib" ".dll" fastjet_LIBRARY_DEBUG_DLL "${fastjet_LIBRARY_DEBUG}" )
+endif()
+
+if( fastjet_FOUND AND NOT TARGET fastjet::fastjet )
+ if( EXISTS "${fastjet_LIBRARY_DLL}")
+
+ # Windows systems with dll libraries.
+ add_library( fastjet::fastjet SHARED IMPORTED )
+ add_library( fastjet::fastjetcblas SHARED IMPORTED )
+ # Windows with dlls, but only Release libraries.
+ set_target_properties( fastjet::fastjet PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${fastjet_LIBRARY_DLL}"
+ IMPORTED_IMPLIB "${fastjet_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${fastjet_INCLUDE_DIRS}"
+ IMPORTED_CONFIGURATIONS Release
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+ # If we have both Debug and Release libraries
+ if( EXISTS "${fastjet_LIBRARY_DEBUG_DLL}")
+ set_property( TARGET fastjet::fastjet APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug )
+ set_target_properties( fastjet::fastjet PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${fastjet_LIBRARY_DEBUG_DLL}"
+ IMPORTED_IMPLIB_DEBUG "${fastjet_LIBRARY_DEBUG}" )
+ endif()
+ else()
+ # For all other environments (ones without dll libraries), create
+ # the imported library targets.
+ add_library( fastjet::fastjet UNKNOWN IMPORTED )
+ set_target_properties( fastjet::fastjet PROPERTIES
+ IMPORTED_LOCATION "${fastjet_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${fastjet_INCLUDE_DIRS}"
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+ )
+ endif()
+endif()
diff --git a/cmake/Modules/Findlhapdf.cmake b/cmake/Modules/Findlhapdf.cmake
deleted file mode 100644
index c8eb556..0000000
--- a/cmake/Modules/Findlhapdf.cmake
+++ /dev/null
@@ -1,28 +0,0 @@
-include (FindPackageMessage)
-
-message (STATUS "Detecting lhapdf installation")
-execute_process (COMMAND lhapdf-config --prefix
- OUTPUT_VARIABLE lhapdf_PREFIX OUTPUT_STRIP_TRAILING_WHITESPACE
- )
-if (lhapdf_PREFIX)
- string (STRIP ${lhapdf_PREFIX} lhapdf_PREFIX)
- message (STATUS "lhapdf installation found: ${lhapdf_PREFIX}")
- EXECUTE_PROCESS(COMMAND lhapdf-config --ldflags OUTPUT_VARIABLE
- LHAPDF_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
- # set (lhapdf_LIBRARIES ${lhapdf_LIBRARIES} )
- set (lhapdf_INCLUDE_PATH ${lhapdf_PREFIX}/include)
- set (lhapdf_FOUND TRUE)
-else (lhapdf_PREFIX)
- set (lhapdf_FOUND FALSE)
-endif (lhapdf_PREFIX)
-
-if (NOT lhapdf_FOUND)
- message(FATAL_ERROR "lhapdf installation not found!")
-endif (NOT lhapdf_FOUND)
-
-mark_as_advanced(
- lhapdf_INCLUDE_PATH
- lhapdf_LIBRARIES
-)
-
-
diff --git a/cmake/Templates/hej-config.cmake.in b/cmake/Templates/hej-config.cmake.in
index a1a89e1..9c98a0e 100644
--- a/cmake/Templates/hej-config.cmake.in
+++ b/cmake/Templates/hej-config.cmake.in
@@ -1,12 +1,12 @@
@PACKAGE_INIT@
# - Config file for the HEJ package
# It defines the following variables
# HEJ_INCLUDE_DIR - include directory
# HEJ_LIBRARIES - libraries to link against
-set_and_check(HEJ_INCLUDE_DIR "@INSTALL_INCLUDE_DIR_BASE@")
+set_and_check(HEJ_INCLUDE_DIR @PACKAGE_INSTALL_INCLUDE_DIR_BASE@)
find_library(HEJ_LIB NAMES HEJ HINTS @PACKAGE_INSTALL_LIB_DIR@)
set(HEJ_LIBRARIES ${HEJ_LIB})
diff --git a/doc/sphinx/conf.py b/doc/sphinx/conf.py
index 2b87061..a9d958d 100644
--- a/doc/sphinx/conf.py
+++ b/doc/sphinx/conf.py
@@ -1,175 +1,175 @@
# -*- coding: utf-8 -*-
#
# HEJ 2 documentation build configuration file, created by
# sphinx-quickstart on Fri Sep 15 16:13:57 2017.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.mathjax',
'sphinx.ext.githubpages']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'HEJ 2'
copyright = u'2017, Jeppe Andersen, Tuomas Hapola, Marian Heil, Andreas Maier, Jennifer Smillie'
author = u'Jeppe Andersen, Tuomas Hapola, Marian Heil, Andreas Maier, Jennifer Smillie'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = u'2.0'
# The full version, including alpha/beta/rc tags.
-release = u'2.0.3'
+release = u'2.0.4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
highlight_language = 'C++'
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
'body_text': '#000000',
'narrow_sidebar_fg': '#000000',
'sidebar_header': '#000000',
'sidebar_link': '#000000',
'sidebar_text': '#000000'
}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# This is required for the alabaster theme
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
html_sidebars = {
'**': [
'about.html',
'navigation.html',
'relations.html', # needs 'show_related': True theme option to display
'searchbox.html',
'donate.html',
]
}
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'HEJ2doc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'HEJ2.tex', u'HEJ 2 Documentation',
u'Jeppe Andersen, Tuomas Hapola, Marian Heil, Andreas Maier, Jennifer Smillie', 'manual'),
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'hej2', u'HEJ 2 Documentation',
[author], 1)
]
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'HEJ2', u'HEJ 2 Documentation',
author, 'HEJ2', 'One line description of project.',
'Miscellaneous'),
]
diff --git a/doc/sphinx/installation.rst b/doc/sphinx/installation.rst
index 2d2b755..79398c5 100644
--- a/doc/sphinx/installation.rst
+++ b/doc/sphinx/installation.rst
@@ -1,78 +1,84 @@
.. _Installation:
Installation
============
Download
--------
A tar archive of the HEJ 2 source code can be downloaded and
decompressed with the command::
curl https://hej.web.cern.ch/HEJ/downloads/HEJ_2.0.tar.gz | tar -xz
To obtain the latest stable HEJ version, `HEJ_2.0.tar.gz` should be
replaced by `HEJ.tar.gz`.
Alternatively, the HEJ source code can be obtained by installing the
`git version control system <https://git-scm.com/>`_. and running::
git clone https://phab.hepforge.org/source/hej.git
We also provide a `Docker image <https://hub.docker.com/r/hejdock/hej>`_
containing a HEJ 2 installation on. This image can be pulled with::
docker pull hejdock/hej
When using the Docker image the remaining installation steps can be
skipped.
Prerequisites
-------------
Before installing HEJ 2, you need the following programs and
libraries:
- `CMake <https://cmake.org/>`_ version 3.1
- A compiler supporting the C++14 standard, for example `gcc <https://gcc.gnu.org/>`_ 5 or later
- `FastJet <http://fastjet.fr/>`_
- `CLHEP <https://gitlab.cern.ch/CLHEP/CLHEP>`_
- `LHAPDF <https://lhapdf.hepforge.org/>`_
- The `IOStreams` and `uBLAS` `boost <https://www.boost.org>`_ libraries
- `yaml-cpp <https://github.com/jbeder/yaml-cpp>`_
If you want to include finite top mass corrections in Higgs boson + jets
production, you additionally need version 2 of the `QCDLoop
<https://github.com/scarrazza/qcdloop>`_ library. HEJ 2 supports
versions 2 and 3 of `HepMC <https://hepmc.web.cern.ch/hepmc/>`_ if it is
-installed, but does not require it.
+installed, but does not require it. Additional HEJ 2 can be interfaced to
+`rivet <https://rivet.hepforge.org/>`_, which requires HepMC version 2.
Compilation
-----------
To compile and install HEJ 2 run::
cmake source/directory -DCMAKE_INSTALL_PREFIX=target/directory
make install
:file:`source/directory` is the directory containing the file
:file:`CMakeLists.txt`. If you omit
:code:`-DCMAKE_INSTALL_PREFIX=target/directory` HEJ 2 will be
installed to some default location.
In case some of the aforementioned prerequisites are not found by
:code:`cmake` you can give a hint by adding an additional argument
:code:`-Dlibname_ROOT_DIR=/directory/with/library`, where
:code:`libname` should be replaced by the name of the library in
question.
+To not include specific packages one can add
+:code:`-DEXCLUDE_packagename=TRUE` to :code:`cmake`, e.g. by
+setting :code:`-DEXCLUDE_rivet=TRUE` HEJ 2 will not be interfaced
+to `rivet` even if rivet is available on the system.
+
Testing
-------
To test your installation, download the NNPDF 2.3 PDF set with::
lhapdf install NNPDF23_nlo_as_0119
and run::
make test
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1e54b15..0b3005c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,19 +1,19 @@
file(GLOB src_files *.cc)
add_library(hejlib SHARED ${src_files})
set_target_properties(hejlib PROPERTIES OUTPUT_NAME "HEJ")
set(libraries ${CMAKE_DL_LIBS} ${LHAPDF_LIBRARIES} ${CLHEP_LIBRARIES}
- ${FASTJET_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} yaml-cpp)
+ ${fastjet_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES} yaml-cpp)
if(${QCDloop_FOUND})
list(APPEND libraries ${QCDloop_LIBRARIES} quadmath)
endif()
if(${HepMC_FOUND})
list(APPEND libraries ${HepMC_LIBRARIES})
if(${rivet_FOUND})
list(APPEND libraries ${rivet_LIBRARIES})
endif()
endif()
target_link_libraries(hejlib ${libraries})
install(TARGETS hejlib DESTINATION ${INSTALL_LIB_DIR})
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Dec 21, 1:55 PM (11 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023039
Default Alt Text
(67 KB)
Attached To
rHEJ HEJ
Event Timeline
Log In to Comment