Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ limitations under the License.
CMAKE_MINIMUM_REQUIRED(VERSION 3.12)


project(GaudiTutorial LANGUAGES CXX)
project(SoftwareTutorials LANGUAGES CXX)

# please keep this layout for version setting, used by the automatic tagging script
set(PACKAGE_VERSION_MAJOR 1)
Expand Down
19 changes: 4 additions & 15 deletions GaudiTutorial/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
add_subdirectory(EventStats)
add_subdirectory(MoliereRadiusFunctional)
add_subdirectory(RandomNoiseDigitizer)

execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory
${PROJECT_SOURCE_DIR}/GaudiTutorial/data)

set(SIM_FILE ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root)
project(GaudiTutorial LANGUAGES CXX)

if(NOT EXISTS ${SIM_FILE})
message(STATUS "Downloading simpleCalo_simulation.root ...")
execute_process(
COMMAND wget -O ${SIM_FILE} https://fccsw.web.cern.ch/fccsw/tutorials/DRD6_2025_Ancona/simpleCalo_simulation.root
)
else()
message(STATUS "File already exists: ${SIM_FILE}, skipping download.")
endif()
add_subdirectory(EventStats)
add_subdirectory(MoliereRadiusFunctional)
add_subdirectory(RandomNoiseDigitizer)
7 changes: 5 additions & 2 deletions GaudiTutorial/EventStats/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@ See the License for the specific language governing permissions and
limitations under the License.
]]
file(GLOB _plugin_sources src/components/*.cpp)
gaudi_add_module(EventStatsPlugins

set(PackageName EventStats)

gaudi_add_module(${PackageName}
SOURCES ${_plugin_sources}
LINK Gaudi::GaudiKernel
k4FWCore::k4FWCore
EDM4HEP::edm4hep
)

install(TARGETS EventStatsPlugins
install(TARGETS ${PackageName}
EXPORT ${CMAKE_PROJECT_NAME}Targets
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
Expand Down
62 changes: 32 additions & 30 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,39 +17,17 @@ See the License for the specific language governing permissions and
limitations under the License.
]]

function(set_test_env _testname)
set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
"ROOT_INCLUDE_PATH=$<$<TARGET_EXISTS:podio::podio>:$<TARGET_FILE_DIR:podio::podio>/../include>:$<$<TARGET_EXISTS:EDM4HEP::edm4hep>:$<TARGET_FILE_DIR:EDM4HEP::edm4hep>/../include>:$ENV{ROOT_INCLUDE_PATH}"
)

set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
"LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib64:${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}:${PROJECT_BINARY_DIR}/genConfDir/${PackageName}:<$<TARGET_EXISTS:ROOT::Core>:$<TARGET_FILE_DIR:ROOT::Core>>:$<$<TARGET_EXISTS:EDM4HEP::edm4hep>:$<TARGET_FILE_DIR:EDM4HEP::edm4hep>>:$<$<TARGET_EXISTS:podio::podio>:$<TARGET_FILE_DIR:podio::podio>>:$ENV{LD_LIBRARY_PATH}"
)

set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
"PYTHONPATH=${CMAKE_BINARY_DIR}:${PROJECT_BINARY_DIR}/genConfDir:$ENV{PYTHONPATH}"
)

set_property(TEST ${_testname} APPEND PROPERTY ENVIRONMENT
"GAUDI_PLUGIN_PATH=${CMAKE_BINARY_DIR}/.plugins:${CMAKE_INSTALL_PREFIX}/lib64:$ENV{GAUDI_PLUGIN_PATH}"
)

endfunction()

add_test(NAME test_EventStats
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/EventStats/options/runEventStatsSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_eventStats.root)
set_test_env(test_EventStats)
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/EventStats/options/runEventStatsSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_eventStats.root)

add_test(NAME test_MoliereRadius
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/MoliereRadiusFunctional/options/runMoliereRadiusSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_moliereRadius.root)
set_test_env(test_MoliereRadius)
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/MoliereRadiusFunctional/options/runMoliereRadiusSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_moliereRadius.root)

add_test(NAME test_RandomNoiseDigitizer
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/RandomNoiseDigitizer/options/runRandomNoiseDigitizerSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_noiseDigitizer.root)
set_test_env(test_MoliereRadius)
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND k4run GaudiTutorial/RandomNoiseDigitizer/options/runRandomNoiseDigitizerSolution.py --IOSvc.Input ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root --IOSvc.Output ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_noiseDigitizer.root)

# For LD_LIBRARY_PATH
# ${PROJECT_BINARY_DIR} # The files <plugins>.components and <plugins>.confdb are here
Expand All @@ -67,22 +45,46 @@ set_test_env(test_MoliereRadius)
# See, for example:
# https://github.com/key4hep/k4FWCore/blob/42497b71c23425a3a26648f30a1285a499dcda28/test/k4FWCoreTest/CMakeLists.txt#L71


execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory
${PROJECT_SOURCE_DIR}/GaudiTutorial/data)

set(SIM_FILE ${PROJECT_SOURCE_DIR}/GaudiTutorial/data/simpleCalo_simulation.root)

if(NOT EXISTS ${SIM_FILE})
message(STATUS "Downloading simpleCalo_simulation.root ...")
execute_process(
COMMAND wget -O ${SIM_FILE} https://fccsw.web.cern.ch/fccsw/tutorials/DRD6_2025_Ancona/simpleCalo_simulation.root
)
else()
message(STATUS "File already exists: ${SIM_FILE}, skipping download.")
endif()


get_filename_component(CURRENT_DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)

set(test_environment "\
LD_LIBRARY_PATH=\
${PROJECT_BINARY_DIR}:\
${PROJECT_BINARY_DIR}/GaudiTutorial/EventStats:\
${PROJECT_BINARY_DIR}/GaudiTutorial/MoliereRadiusFunctional:\
${PROJECT_BINARY_DIR}/GaudiTutorial/RandomNoiseDigitizer:\
${PROJECT_BINARY_DIR}/${PROJECT_NAME}:\
${CMAKE_CURRENT_BINARY_DIR}:\
${CMAKE_CURRENT_BINARY_DIR}/genConfDir/${CURRENT_DIR_NAME}:\
$ENV{LD_LIBRARY_PATH};\
\
PYTHONPATH=\
${PROJECT_BINARY_DIR}/GaudiTutorial/EventStats/genConfDir:\
${PROJECT_BINARY_DIR}/GaudiTutorial/MoliereRadiusFunctional/genConfDir:\
${PROJECT_BINARY_DIR}/GaudiTutorial/RandomNoiseDigitizer/genConfDir:\
${PROJECT_BINARY_DIR}/${PROJECT_NAME}/genConfDir:\
${CMAKE_CURRENT_BINARY_DIR}/genConfDir:\
$ENV{PYTHONPATH};\
"
)
")
get_property(test_names DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY TESTS)
set_tests_properties(${test_names} PROPERTIES ENVIRONMENT "${test_environment}")

message(STATUS "================ Test Environment ================")
message(STATUS "${test_environment}")
message(STATUS "=================================================")