mirror of
https://github.com/OpenCMT/uLib.git
synced 2025-12-06 07:21:31 +01:00
Compare commits
18 Commits
v.0.2.1
...
fc909da400
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc909da400 | ||
| b0240dc807 | |||
|
|
591cc9d8bc | ||
|
|
2e401f6fc5 | ||
|
|
91abd56587 | ||
|
|
01ff8a0a0d | ||
|
|
b86e27a9c4 | ||
|
|
820730bc84 | ||
|
|
06c363ab8c | ||
|
|
b7c775ee35 | ||
|
|
7bc4932d09 | ||
|
|
8832f47e75 | ||
|
|
043a44150c | ||
|
|
fce2a39393 | ||
|
|
d223a3a308 | ||
|
|
843a2d69cf | ||
|
|
a60a21bfe4 | ||
|
|
9d899928b8 |
@@ -1,116 +0,0 @@
|
||||
Summary: Cosmic Muon Tomography core libraries
|
||||
Name: cmt-ulib
|
||||
Version: @PKGVERSION@
|
||||
Release: @PKGRELEASE@%{?dist}
|
||||
License: EUROPEAN UNION PUBLIC LICENCE v. 1.2
|
||||
Vendor: INFN
|
||||
URL: https://github.com/OpenCMT/uLib
|
||||
Group: Development/Libraries
|
||||
BuildArch: %{_arch}
|
||||
%if %{?rhel}%{!?rhel:0} >= 8
|
||||
BuildRequires: cmake
|
||||
%else
|
||||
BuildRequires: cmake3
|
||||
%endif
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: boost-devel
|
||||
BuildRequires: eigen3-devel
|
||||
BuildRequires: vtk-devel
|
||||
BuildRequires: readline-devel
|
||||
BuildRequires: pcl-devel
|
||||
BuildRequires: root-geom
|
||||
BuildRequires: root-genvector
|
||||
BuildRequires: root-smatrix
|
||||
BuildRequires: root-montecarlo-eg
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
AutoReqProv: yes
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
|
||||
%description
|
||||
This package contains the base toolkit library for Cosmic Muon Tomography reconstruction,
|
||||
analysis and imaging software Developed by University of Padova and INFN Sezione di Padova Italy
|
||||
|
||||
%global _ulibpkgname mutom
|
||||
%global _ulibcmakedir %{_libdir}/cmake/%{_ulibpkgname}
|
||||
|
||||
%prep
|
||||
%setup -c
|
||||
rm -rf %{buildroot}
|
||||
mkdir -p %{buildroot}
|
||||
|
||||
%build
|
||||
mkdir %{_builddir}/%{name}-%{version}/build
|
||||
cd %{_builddir}/%{name}-%{version}/build
|
||||
%cmake -DCMAKE_INSTALL_PREFIX=%{buildroot}%{_prefix} \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DPACKAGE_NAME=%{_ulibpkgname} \
|
||||
-DPACKAGE_INSTALL_LIB_DIR=%{buildroot}%{_libdir} \
|
||||
-DPACKAGE_INSTALL_INC_DIR=%{buildroot}%{_includedir}/%{_ulibpkgname} \
|
||||
-DPACKAGE_INSTALL_CMAKE_DIR=%{buildroot}%{_ulibcmakedir} \
|
||||
-DNODOXYGEN=ON \
|
||||
%{_builddir}/%{name}-%{version}
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
cd %{_builddir}/%{name}-%{version}/build
|
||||
make install
|
||||
sed -i 's|%{buildroot}/usr|%{_prefix}|g' %{buildroot}%{_ulibcmakedir}/uLibTargets.cmake
|
||||
sed -i 's|%{buildroot}/usr|%{_prefix}|g' %{buildroot}%{_ulibcmakedir}/uLibTargets-relwithdebinfo.cmake
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%{_libdir}/libmutom*.so.0.2
|
||||
%{_libdir}/uLibRootDict_rdict.pcm
|
||||
|
||||
%package devel
|
||||
Summary: Cosmic Muon Tomography core libraries, development files
|
||||
Requires: %{name}
|
||||
Requires: boost-devel
|
||||
Requires: eigen3-devel
|
||||
Requires: vtk-devel
|
||||
Requires: readline-devel
|
||||
Requires: pcl-devel
|
||||
Requires: root-geom
|
||||
Requires: root-genvector
|
||||
Requires: root-smatrix
|
||||
Requires: root-montecarlo-eg
|
||||
|
||||
|
||||
%description devel
|
||||
This package contains the base toolkit library for Cosmic Muon Tomography reconstruction,
|
||||
analysis and imaging software Developed by University of Padova and INFN Sezione di Padova Italy
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root)
|
||||
%dir %{_ulibcmakedir}
|
||||
/usr/bin/uLib_config
|
||||
%{_libdir}/libmutom*.so
|
||||
%{_ulibcmakedir}/*.cmake
|
||||
%dir %{_includedir}/%{_ulibpkgname}
|
||||
%dir %{_includedir}/%{_ulibpkgname}/Core
|
||||
%dir %{_includedir}/%{_ulibpkgname}/Math
|
||||
%dir %{_includedir}/%{_ulibpkgname}/Root
|
||||
%dir %{_includedir}/%{_ulibpkgname}/Detectors
|
||||
%dir %{_includedir}/%{_ulibpkgname}/Vtk
|
||||
%{_includedir}/%{_ulibpkgname}/*.h
|
||||
%{_includedir}/%{_ulibpkgname}/Core/*.h
|
||||
%{_includedir}/%{_ulibpkgname}/Math/*.h
|
||||
%{_includedir}/%{_ulibpkgname}/Math/*.hpp
|
||||
%{_includedir}/%{_ulibpkgname}/Root/*.h
|
||||
%{_includedir}/%{_ulibpkgname}/Detectors/*.h
|
||||
%{_includedir}/%{_ulibpkgname}/Vtk/*.h
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Dec 04 2018 Paolo Andreetto <paolo.andreetto@pd.infn.it> - 0.2.1-1
|
||||
- Repackaging for CentOS 7
|
||||
|
||||
@@ -15,16 +15,16 @@ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "build path for
|
||||
mark_as_advanced(EXECUTABLE_OUTPUT_PATH)
|
||||
|
||||
## Install directories ##
|
||||
set(PACKAGE_INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
|
||||
set(PACKAGE_INSTALL_LIB_DIR lib/${PACKAGE_NAME} CACHE PATH "Installation directory for libraries")
|
||||
set(PACKAGE_INSTALL_INC_DIR include/${PACKAGE_NAME} CACHE PATH "Installation directory for headers")
|
||||
set(PACKAGE_INSTALL_DATA_DIR share/${PACKAGE_NAME} CACHE PATH "Installation directory for data files")
|
||||
set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
|
||||
set(INSTALL_LIB_DIR lib/${PACKAGE_NAME} CACHE PATH "Installation directory for libraries")
|
||||
set(INSTALL_INC_DIR include/${PACKAGE_NAME} CACHE PATH "Installation directory for headers")
|
||||
set(INSTALL_DATA_DIR share/${PACKAGE_NAME} CACHE PATH "Installation directory for data files")
|
||||
if(WIN32 AND NOT CYGWIN)
|
||||
set(DEF_INSTALL_CMAKE_DIR CMake)
|
||||
else()
|
||||
set(DEF_INSTALL_CMAKE_DIR lib/cmake/${PACKAGE_NAME})
|
||||
endif()
|
||||
set(PACKAGE_INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
|
||||
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
|
||||
|
||||
# Make relative paths absolute (needed later on)
|
||||
foreach(p LIB BIN INC DATA CMAKE)
|
||||
@@ -58,7 +58,7 @@ endif()
|
||||
set(CMAKE_CXX_WARNING_OPTION "" CACHE STRING "Warning level -WAll to verbose all warnings")
|
||||
set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE STRING "Verbose compile output switch")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}")
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x ${CMAKE_CXX_WARNING_OPTION}")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ set(Boost_USE_STATIC_LIBS OFF)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
|
||||
find_package(Boost 1.45.0 COMPONENTS serialization signals program_options REQUIRED)
|
||||
find_package(Boost 1.45.0 COMPONENTS program_options REQUIRED)
|
||||
if(Boost_FOUND)
|
||||
set(HAVE_BOOST true)
|
||||
endif(Boost_FOUND)
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# Target for RPMs creation
|
||||
|
||||
set(PKGREL 1 CACHE STRING "Package build number")
|
||||
set(ITEMS_FOR_SOURCE AUTHORS
|
||||
CMakeConfig.in.h
|
||||
CMakePkgConfig.pc.in
|
||||
test.cpp
|
||||
uLibConfig.cmake.in
|
||||
uLib.creator
|
||||
ulib.h
|
||||
vtk_test.cpp
|
||||
CMake
|
||||
CMakeLists.txt
|
||||
Jenkinsfile
|
||||
src
|
||||
uLib.config
|
||||
uLibConfigVersion.cmake.in
|
||||
uLib.files
|
||||
uLib.includes)
|
||||
|
||||
add_custom_target(rpm
|
||||
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/BUILD
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/RPMS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SOURCES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SRPMS
|
||||
COMMAND tar -zcf ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SOURCES/cmt-ulib-${PACKAGE_VERSION}.tar.gz ${ITEMS_FOR_SOURCE}
|
||||
COMMAND sed -e 's|@PKGVERSION@|${PACKAGE_VERSION}|g'
|
||||
-e 's|@PKGRELEASE@|${PKGREL}|g'
|
||||
CMake/cmt-ulib.spec.in > ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS/cmt-ulib.spec
|
||||
COMMAND QA_SKIP_BUILD_ROOT=1 rpmbuild -ba --define '_topdir ${CMAKE_CURRENT_BINARY_DIR}/rpmbuild'
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rpmbuild/SPECS/cmt-ulib.spec
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
@@ -41,15 +41,15 @@ macro(uLib_add_shared_library name)
|
||||
|
||||
install(TARGETS ${mname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${PACKAGE_INSTALL_LIB_DIR} COMPONENT lib
|
||||
# PUBLIC_HEADER DESTINATION ${PACKAGE_INSTALL_INC_DIR} COMPONENT dev
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT lib
|
||||
# PUBLIC_HEADER DESTINATION ${INSTALL_INC_DIR} COMPONENT dev
|
||||
)
|
||||
endif(SOURCES)
|
||||
|
||||
if(HEADERS)
|
||||
foreach(header ${HEADERS})
|
||||
install(FILES ${header} DESTINATION ${PACKAGE_INSTALL_INC_DIR}/${name})
|
||||
install(FILES ${header} DESTINATION ${INSTALL_INC_DIR}/${name})
|
||||
endforeach(header)
|
||||
endif(HEADERS)
|
||||
|
||||
@@ -70,7 +70,7 @@ macro(uLib_add_target name)
|
||||
|
||||
install(TARGETS ${name}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${PACKAGE_INSTALL_BIN_DIR} COMPONENT bin
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
)
|
||||
ENDMACRO(uLib_add_target)
|
||||
|
||||
|
||||
287
CMakeLists.txt
287
CMakeLists.txt
@@ -3,7 +3,7 @@
|
||||
##### CMAKE LISTS ##############################################################
|
||||
################################################################################
|
||||
|
||||
cmake_minimum_required (VERSION 2.6)
|
||||
cmake_minimum_required (VERSION 3.26)
|
||||
|
||||
## -------------------------------------------------------------------------- ##
|
||||
|
||||
@@ -11,7 +11,7 @@ project(uLib)
|
||||
|
||||
# The version number.
|
||||
set(PROJECT_VERSION_MAJOR 0)
|
||||
set(PROJECT_VERSION_MINOR 2)
|
||||
set(PROJECT_VERSION_MINOR 6)
|
||||
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
||||
set(PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
|
||||
|
||||
@@ -26,130 +26,243 @@ set(PACKAGE_AUTHOR "Andrea Rigoni Garola <andrea.rigoni@pd.infn.it>")
|
||||
|
||||
set(ULIB_CMAKE_DIR "${PROJECT_SOURCE_DIR}/CMake")
|
||||
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
||||
message(STATUS "Module path: ${CMAKE_MODULE_PATH}")
|
||||
|
||||
include(uLibMacros)
|
||||
include(uLibDebugMacro)
|
||||
include(uLibTargetMacros)
|
||||
#include(uLibGenerateRMake)
|
||||
|
||||
message(STATUS "Project name = ${PROJECT_NAME}")
|
||||
message(STATUS "Package name = ${PACKAGE_NAME}")
|
||||
message(STATUS "Package version = ${PACKAGE_VERSION}")
|
||||
message(STATUS "Module path = ${CMAKE_MODULE_PATH}")
|
||||
|
||||
## GLOBALS ------------------------------------------------------------------ ##
|
||||
|
||||
include(uLibCommon)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ") ## Add flags here ##
|
||||
# -- move to GnuInstallDirs
|
||||
# ref: https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
|
||||
include(GNUInstallDirs)
|
||||
set(INSTALL_INC_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of header files (.../include)" )
|
||||
set(INSTALL_ETC_DIR ${CMAKE_INSTALL_SYSCONFDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of configuration files (.../etc)" )
|
||||
set(INSTALL_BIN_DIR ${CMAKE_INSTALL_BINDIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of executable files (.../bin)" )
|
||||
set(INSTALL_LIB_DIR ${CMAKE_INSTALL_LIBDIR}
|
||||
CACHE PATH "Location of library files (.../lib)" )
|
||||
set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of cmake files (.../lib/cmake)" )
|
||||
set(INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}/${PACKAGE_NAME}
|
||||
CACHE PATH "Location of data files (.../share)" )
|
||||
|
||||
|
||||
|
||||
|
||||
set(SRC_DIR ${PROJECT_SOURCE_DIR}/src)
|
||||
|
||||
# this is used to be exported in build target
|
||||
# ( to compile against build directory instead of install )
|
||||
set(ULIB_SOURCE_DIR ${PROJECT_SOURCE_DIR})
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Setting build type to 'Release' as none was specified.")
|
||||
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the type of build." FORCE)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed")
|
||||
# Set the possible values of build type for cmake-gui
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
|
||||
STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_WARNING_OPTION ""
|
||||
CACHE STRING "Warning level -WAll to verbose all warnings")
|
||||
set(CMAKE_VERBOSE_MAKEFILE FALSE
|
||||
CACHE STRING "Verbose compile output switch")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_WARNING_OPTION}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -UULIB_SERIALIZATION_ON")
|
||||
|
||||
# CTEST framework
|
||||
enable_testing()
|
||||
|
||||
|
||||
## FIND PACKAGES ------------------------------------------------------------ ##
|
||||
|
||||
include(uLibFindDependencies)
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
find_package(Boost 1.45.0 COMPONENTS program_options REQUIRED)
|
||||
include_directories(${Boost_INCLUDE_DIRS})
|
||||
|
||||
find_package(Eigen3 CONFIG REQUIRED)
|
||||
include(${EIGEN3_USE_FILE})
|
||||
|
||||
find_package(ROOT CONFIG REQUIRED)
|
||||
include(${ROOT_USE_FILE})
|
||||
|
||||
find_package(VTK REQUIRED)
|
||||
# include(${VTK_USE_FILE})
|
||||
|
||||
|
||||
|
||||
option(CENTOS_SUPPORT "VTK definitions for CentOS" OFF)
|
||||
if(CENTOS_SUPPORT)
|
||||
find_package(VTK CONFIG REQUIRED)
|
||||
include(${VTK_USE_FILE})
|
||||
else()
|
||||
find_package(VTK REQUIRED
|
||||
COMPONENTS CommonColor
|
||||
CommonCore
|
||||
FiltersCore
|
||||
FiltersModeling
|
||||
FiltersSources
|
||||
IOLegacy
|
||||
IOXML
|
||||
IOXMLParser
|
||||
ImagingCore
|
||||
InteractionStyle
|
||||
InteractionWidgets
|
||||
RenderingAnnotation
|
||||
RenderingContextOpenGL2
|
||||
RenderingCore
|
||||
RenderingFreeType
|
||||
RenderingGL2PSOpenGL2
|
||||
RenderingOpenGL2
|
||||
RenderingVolumeOpenGL2)
|
||||
endif()
|
||||
|
||||
set(CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_INCLUDES math.h)
|
||||
set(CMAKE_REQUIRED_LIBRARIES CMAKE_REQUIRED_LIBRARIES m)
|
||||
|
||||
## CONFIG ------------------------------------------------------------------- ##
|
||||
|
||||
include(uLibConfigHeader)
|
||||
set(BOOST_PP_VARIADICS ON)
|
||||
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckFunctionExists)
|
||||
include(CheckSymbolExists)
|
||||
|
||||
CHECK_INCLUDE_FILES(inittypes.h HAVE_INITTYPES_H)
|
||||
CHECK_INCLUDE_FILES(stdbool.h HAVE_STDBOOL_H)
|
||||
CHECK_INCLUDE_FILES(stdint.h HAVE_STDINT_H)
|
||||
CHECK_INCLUDE_FILES(stdlib.h HAVE_STDLIB_H)
|
||||
CHECK_INCLUDE_FILES(dlfcn.h HAVE_DLFCN_H)
|
||||
CHECK_INCLUDE_FILES(malloc.h HAVE_MALLOC_H)
|
||||
CHECK_FUNCTION_EXISTS(malloc HAVE_MALLOC)
|
||||
CHECK_INCLUDE_FILES(memory.h HAVE_MEMORY_H)
|
||||
CHECK_INCLUDE_FILES(math.h HAVE_MATH_H)
|
||||
CHECK_FUNCTION_EXISTS(fsetround HAVE_FSETROUND)
|
||||
CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR)
|
||||
CHECK_FUNCTION_EXISTS(pow HAVE_POW)
|
||||
CHECK_FUNCTION_EXISTS(sqrt HAVE_SQRT)
|
||||
CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
|
||||
CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)
|
||||
CHECK_INCLUDE_FILES(strings.h HAVE_STRINGS_H)
|
||||
CHECK_INCLUDE_FILES(string.h HAVE_STRING_H)
|
||||
CHECK_INCLUDE_FILES(sys/stat.h HAVE_SYS_STAT_H)
|
||||
CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H)
|
||||
CHECK_INCLUDE_FILES(unistd.h HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILES(assert.h HAVE_ASSERT_H)
|
||||
|
||||
configure_file("${PROJECT_SOURCE_DIR}/CMakeConfig.in.h"
|
||||
"${PROJECT_BINARY_DIR}/config.h")
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}/config.h"
|
||||
DESTINATION ${INSTALL_INC_DIR})
|
||||
|
||||
## ADD LIBRARIES SUBDIRECTORIES --------------------------------------------- ##
|
||||
|
||||
## select modules ##
|
||||
set(ULIB_SELECTED_MODULES
|
||||
Core
|
||||
Math
|
||||
Detectors
|
||||
Root
|
||||
)
|
||||
include_directories(${PROJECT_BINARY_DIR})
|
||||
include_directories(${SRC_DIR})
|
||||
|
||||
## uLib_add_shared_library puts names there
|
||||
set(ULIB_SHARED_LIBRARIES)
|
||||
## select modules ##
|
||||
set(ULIB_SELECTED_MODULES)
|
||||
|
||||
if(ULIB_USE_VTK)
|
||||
LIST(APPEND ULIB_SELECTED_MODULES Vtk)
|
||||
endif(ULIB_USE_VTK)
|
||||
include_directories(${SRC_DIR}/Core)
|
||||
add_subdirectory(${SRC_DIR}/Core)
|
||||
|
||||
include_directories(${SRC_DIR}/Math)
|
||||
add_subdirectory(${SRC_DIR}/Math)
|
||||
|
||||
include_directories(${SRC_DIR}/Detectors)
|
||||
add_subdirectory(${SRC_DIR}/Detectors)
|
||||
|
||||
include_directories(${SRC_DIR}/Root)
|
||||
add_subdirectory(${SRC_DIR}/Root)
|
||||
|
||||
include_directories(${SRC_DIR}/Vtk)
|
||||
add_subdirectory(${SRC_DIR}/Vtk)
|
||||
|
||||
#add_subdirectory("${SRC_DIR}/utils/make_recipe")
|
||||
|
||||
## Documentation and packages
|
||||
|
||||
include(uLibGenerateRPMS)
|
||||
include(uLibGenerateDoc)
|
||||
|
||||
## this gets ulib modules into a variable ##
|
||||
function(uLib_modules result)
|
||||
set(out)
|
||||
foreach(module ${ULIB_SELECTED_MODULES})
|
||||
list(APPEND out ${PACKAGE_LIBPREFIX}${module})
|
||||
endforeach(module)
|
||||
set(${result} "${out}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
||||
## ENTERING MODULES SUBDIRECTORIES ##
|
||||
message("/////////// SELECTED MODULES //////////////")
|
||||
foreach(module ${ULIB_SELECTED_MODULES})
|
||||
message(STATUS "adding module: ${module}")
|
||||
set( uLib-module ${module})
|
||||
include_directories(${SRC_DIR}/${module})
|
||||
add_subdirectory(${SRC_DIR}/${module})
|
||||
endforeach(module)
|
||||
#include(uLibGenerateDoc)
|
||||
|
||||
## UTILITIES ##
|
||||
add_subdirectory("${SRC_DIR}/utils/make_recipe")
|
||||
#add_subdirectory("${SRC_DIR}/utils/make_recipe")
|
||||
|
||||
|
||||
## INSTALLS AND EXPORTS ----------------------------------------------------- ##
|
||||
|
||||
#export(PACKAGE uLib)
|
||||
export(PACKAGE ULIB)
|
||||
export(TARGETS ${ULIB_SHARED_LIBRARIES} ${ULIB_EXPORTED_TARGETS}
|
||||
FILE "${PROJECT_BINARY_DIR}/uLibTargets.cmake" )
|
||||
#export(TARGETS ${ULIB_EXPORTED_TARGETS}
|
||||
# FILE "${PROJECT_BINARY_DIR}/uLibExeTargets.cmake" )
|
||||
#export(PACKAGE ULIB)
|
||||
#export(TARGETS ${ULIB_SHARED_LIBRARIES} ${ULIB_EXPORTED_TARGETS}
|
||||
# FILE "${PROJECT_BINARY_DIR}/uLibTargets.cmake" )
|
||||
|
||||
|
||||
# Create the FooBarConfig.cmake and FooBarConfigVersion files
|
||||
file(RELATIVE_PATH REL_INCLUDE_DIR "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
"${PACKAGE_INSTALL_INC_DIR}")
|
||||
# file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
|
||||
# "${INSTALL_INC_DIR}")
|
||||
|
||||
# ... for the build tree
|
||||
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}")
|
||||
configure_file(uLibConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/uLibConfig.cmake" @ONLY)
|
||||
#set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src" "${PROJECT_BINARY_DIR}")
|
||||
#configure_file(uLibConfig.cmake.in
|
||||
# "${PROJECT_BINARY_DIR}/uLibConfig.cmake" @ONLY)
|
||||
|
||||
# ... for the install tree
|
||||
set(CONF_INCLUDE_DIRS "\${ULIB_CMAKE_DIR}/${REL_INCLUDE_DIR}")
|
||||
configure_file(uLibConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake" @ONLY)
|
||||
# [ removed for the configure_config_file ]
|
||||
# configure_file(uLibConfig.cmake.in
|
||||
# "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake"
|
||||
# @ONLY)
|
||||
|
||||
# ... for both
|
||||
configure_file(uLibConfigVersion.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" @ONLY)
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake" @ONLY)
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/uLibConfig.cmake"
|
||||
|
||||
# from CMake 3.x configure file shall be created using a dedicated function
|
||||
# see: https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
|
||||
#
|
||||
include(CMakePackageConfigHelpers)
|
||||
configure_package_config_file(uLibConfig.cmake.in
|
||||
"${PROJECT_BINARY_DIR}/uLibConfig.cmake"
|
||||
INSTALL_DESTINATION ${INSTALL_CMAKE_DIR}
|
||||
PATH_VARS
|
||||
INSTALL_LIB_DIR
|
||||
INSTALL_INC_DIR
|
||||
INSTALL_BIN_DIR
|
||||
INSTALL_CMAKE_DIR
|
||||
INSTALL_ETC_DIR
|
||||
INSTALL_DATA_DIR
|
||||
ULIB_SOURCE_DIR
|
||||
ULIB_SHARED_LIBRARIES
|
||||
# NO_SET_AND_CHECK_MACRO
|
||||
# NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||
)
|
||||
|
||||
install(FILES "${PROJECT_BINARY_DIR}/uLibConfig.cmake"
|
||||
"${PROJECT_BINARY_DIR}/uLibConfigVersion.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/FindReadLine.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/FindROOT.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/FindROOTv6.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibCommon.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibConfigHeader.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibDebugMacro.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibFindDependencies.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibGenerateDoc.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibGenerateRMake.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibGenerateRPMS.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibMacros.cmake"
|
||||
"${PROJECT_SOURCE_DIR}/CMake/uLibTargetMacros.cmake"
|
||||
DESTINATION "${PACKAGE_INSTALL_CMAKE_DIR}"
|
||||
DESTINATION "${INSTALL_CMAKE_DIR}"
|
||||
COMPONENT dev)
|
||||
|
||||
|
||||
# this is a special target file for the build tree
|
||||
# it is used also to identify if we are using a build direcory
|
||||
# to link a project against uLib. see: uLibConfig.cmake ( IF )
|
||||
export (TARGETS ${ULIB_SHARED_LIBRARIES}
|
||||
FILE "${PROJECT_BINARY_DIR}/uLibTargets-build.cmake"
|
||||
# NAMESPACE "uLib::"
|
||||
)
|
||||
|
||||
# Install the export set for use with the install-tree
|
||||
install(EXPORT "${PROJECT_NAME}Targets" DESTINATION
|
||||
"${PACKAGE_INSTALL_CMAKE_DIR}" COMPONENT dev)
|
||||
|
||||
install(FILES ${PROJECT_SOURCE_DIR}/ulib.h DESTINATION ${PACKAGE_INSTALL_INC_DIR})
|
||||
|
||||
|
||||
# TODO clean also subdirectories
|
||||
add_custom_target(clean-cmake-files
|
||||
COMMAND ${CMAKE_COMMAND} -P ${ULIB_CMAKE_DIR}/clean-all.cmake
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
install(EXPORT "uLibTargets"
|
||||
FILE "uLibTargets.cmake"
|
||||
DESTINATION "${INSTALL_CMAKE_DIR}"
|
||||
COMPONENT dev)
|
||||
|
||||
|
||||
@@ -1,41 +1,27 @@
|
||||
|
||||
set(HEADERS
|
||||
Archives.h
|
||||
Array.h
|
||||
Debug.h
|
||||
Export.h
|
||||
Function.h
|
||||
Macros.h
|
||||
Mpl.h
|
||||
Object.h
|
||||
ObjectProps.h
|
||||
Options.h
|
||||
Serializable.h
|
||||
Signal.h
|
||||
Singleton.h
|
||||
SmartPointer.h
|
||||
StaticInterface.h
|
||||
StringReader.h
|
||||
Types.h
|
||||
Uuid.h
|
||||
Timer.h
|
||||
)
|
||||
set(HEADERS Options.h
|
||||
StaticInterface.h)
|
||||
|
||||
set(SOURCES Options.cpp)
|
||||
|
||||
set(LIBRARIES ${Boost_PROGRAM_OPTIONS_LIBRARY})
|
||||
|
||||
set(libname ${PACKAGE_LIBPREFIX}Core)
|
||||
set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE)
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Core PARENT_SCOPE)
|
||||
|
||||
add_library(${libname} SHARED ${SOURCES})
|
||||
set_target_properties(${libname} PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION})
|
||||
target_link_libraries(${libname} ${LIBRARIES})
|
||||
|
||||
install(TARGETS ${libname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT lib)
|
||||
|
||||
install(FILES ${HEADERS} DESTINATION ${INSTALL_INC_DIR}/Core)
|
||||
|
||||
SET(SOURCES
|
||||
Archives.cpp
|
||||
Object.cpp
|
||||
Options.cpp
|
||||
Serializable.cpp
|
||||
Signal.cpp
|
||||
Uuid.cpp
|
||||
)
|
||||
|
||||
set(LIBRARIES
|
||||
${Boost_SERIALIZATION_LIBRARY}
|
||||
${Boost_SIGNALS_LIBRARY}
|
||||
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
)
|
||||
|
||||
uLib_add_shared_library(${uLib-module})
|
||||
add_subdirectory(testing)
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
|
||||
#include <boost/program_options.hpp>
|
||||
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
#include <boost/property_tree/ini_parser.hpp>
|
||||
|
||||
|
||||
//class boost::program_options::error_with_option_name;
|
||||
//template<> boost::program_options::typed_value<int> boost::program_options::value<int>();
|
||||
@@ -74,6 +77,23 @@ void Options::parse_config_file(const char *fname)
|
||||
}
|
||||
}
|
||||
|
||||
void Options::save_config_file(const char *fname) {
|
||||
std::ofstream os;
|
||||
os.open(fname);
|
||||
|
||||
using boost::property_tree::ptree;
|
||||
|
||||
ptree root;
|
||||
|
||||
|
||||
std::cout << m_configuration << "\n";
|
||||
std::cout << m_global << "\n";
|
||||
|
||||
write_ini( std::cout, root );
|
||||
|
||||
}
|
||||
|
||||
|
||||
bool Options::count(const char *str) const
|
||||
{
|
||||
return (m_vm.count(str));
|
||||
|
||||
@@ -160,6 +160,8 @@ public:
|
||||
|
||||
void parse_config_file(const char *fname);
|
||||
|
||||
void save_config_file(const char *fname);
|
||||
|
||||
template <typename T>
|
||||
static inline boost::program_options::typed_value<T>* value(T *v, T dvalue) {
|
||||
boost::program_options::typed_value<T> *r = boost::program_options::value<T>(v);
|
||||
|
||||
@@ -1,37 +1,7 @@
|
||||
#set(HEADERS
|
||||
# DetectorChamber.h
|
||||
# ExperimentFitEvent.h
|
||||
# GeantEvent.h
|
||||
# HitMC.h
|
||||
# MuonScatter.h
|
||||
# MuonEvent.h
|
||||
# MuonError.h
|
||||
# ChamberHitEvent.h
|
||||
# Hit.h
|
||||
# LinearFit.h
|
||||
# Solid.h
|
||||
# Matter.h
|
||||
# Scene.h
|
||||
#)
|
||||
|
||||
|
||||
#set(SOURCES
|
||||
# Solid.cpp
|
||||
# Scene.cpp
|
||||
#)
|
||||
|
||||
#set(LIBRARIES
|
||||
# ${Boost_SERIALIZATION_LIBRARY}
|
||||
# ${Boost_SIGNALS_LIBRARY}
|
||||
# ${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||
# ${Eigen_LIBRARY}
|
||||
# ${Geant4_LIBRARIES}
|
||||
# ${ROOT_LIBRARIES}
|
||||
# ${PACKAGE_LIBPREFIX}Core
|
||||
# ${PACKAGE_LIBPREFIX}Math
|
||||
#)
|
||||
|
||||
set(HEADERS MuonScatter.h MuonError.h MuonEvent.h)
|
||||
|
||||
uLib_add_shared_library(${uLib-module})
|
||||
add_subdirectory(testing)
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Detectors PARENT_SCOPE)
|
||||
|
||||
|
||||
install(FILES ${HEADERS}
|
||||
DESTINATION ${INSTALL_INC_DIR}/Detectors)
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#ifndef U_MATH_BITCODE_H
|
||||
#define U_MATH_BITCODE_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/type_traits.hpp>
|
||||
#include <boost/mpl/vector_c.hpp>
|
||||
@@ -34,6 +36,7 @@
|
||||
|
||||
#include <Math/Dense.h>
|
||||
|
||||
|
||||
namespace uLib {
|
||||
|
||||
|
||||
|
||||
@@ -1,53 +1,60 @@
|
||||
|
||||
# HEADERS
|
||||
set(HEADERS
|
||||
ContainerBox.h
|
||||
Dense.h
|
||||
Geometry.h
|
||||
Transform.h
|
||||
StructuredData.h
|
||||
StructuredGrid.h
|
||||
VoxImage.h
|
||||
VoxRaytracer.h
|
||||
Utils.h
|
||||
VoxImageFilter.h
|
||||
VoxImageFilter.hpp
|
||||
VoxImageFilterLinear.hpp
|
||||
VoxImageFilterMedian.hpp
|
||||
VoxImageFilterABTrim.hpp
|
||||
VoxImageFilterBilateral.hpp
|
||||
VoxImageFilterThreshold.hpp
|
||||
VoxImageFilter2ndStat.hpp
|
||||
VoxImageFilterCustom.hpp
|
||||
Accumulator.h
|
||||
TriangleMesh.h
|
||||
BitCode.h
|
||||
Structured2DGrid.h
|
||||
Structured4DGrid.h
|
||||
)
|
||||
set(HEADERS ContainerBox.h
|
||||
Dense.h
|
||||
Geometry.h
|
||||
Transform.h
|
||||
StructuredData.h
|
||||
StructuredGrid.h
|
||||
VoxImage.h
|
||||
VoxRaytracer.h
|
||||
Utils.h
|
||||
VoxImageFilter.h
|
||||
VoxImageFilter.hpp
|
||||
VoxImageFilterLinear.hpp
|
||||
VoxImageFilterMedian.hpp
|
||||
VoxImageFilterABTrim.hpp
|
||||
VoxImageFilterBilateral.hpp
|
||||
VoxImageFilterThreshold.hpp
|
||||
VoxImageFilter2ndStat.hpp
|
||||
VoxImageFilterCustom.hpp
|
||||
Accumulator.h
|
||||
TriangleMesh.h
|
||||
BitCode.h
|
||||
Structured2DGrid.h
|
||||
Structured4DGrid.h)
|
||||
|
||||
set(SOURCES VoxRaytracer.cpp
|
||||
StructuredData.cpp
|
||||
StructuredGrid.cpp
|
||||
VoxImage.cpp
|
||||
TriangleMesh.cpp
|
||||
Dense.cpp
|
||||
Structured2DGrid.cpp
|
||||
Structured4DGrid.cpp)
|
||||
|
||||
set(LIBRARIES ${Eigen_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
${VTK_LIBRARIES})
|
||||
|
||||
set(libname ${PACKAGE_LIBPREFIX}Math)
|
||||
set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE)
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Math PARENT_SCOPE)
|
||||
|
||||
add_library(${libname} SHARED ${SOURCES})
|
||||
set_target_properties(${libname} PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION})
|
||||
target_link_libraries(${libname} ${LIBRARIES})
|
||||
|
||||
|
||||
# SOURCES
|
||||
set(SOURCES
|
||||
VoxRaytracer.cpp
|
||||
StructuredData.cpp
|
||||
StructuredGrid.cpp
|
||||
VoxImage.cpp
|
||||
TriangleMesh.cpp
|
||||
Dense.cpp
|
||||
Structured2DGrid.cpp
|
||||
Structured4DGrid.cpp
|
||||
)
|
||||
install(TARGETS ${libname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT lib)
|
||||
|
||||
set(LIBRARIES
|
||||
${Boost_SERIALIZATION_LIBRARY}
|
||||
${Boost_SIGNALS_LIBRARY}
|
||||
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||
${Eigen_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
${PACKAGE_LIBPREFIX}Core
|
||||
)
|
||||
install(FILES ${HEADERS} DESTINATION ${INSTALL_INC_DIR}/Math)
|
||||
|
||||
# TESTING
|
||||
# include(uLibTargetMacros)
|
||||
# add_subdirectory(testing)
|
||||
|
||||
uLib_add_shared_library(${uLib-module})
|
||||
add_subdirectory(testing)
|
||||
|
||||
@@ -139,7 +139,6 @@ typedef Eigen::Vector4f Vector4f;
|
||||
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Vector String interaction ///////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -110,6 +110,17 @@ public:
|
||||
|
||||
inline void Rotate(const Matrix3f &m) { this->m_T.rotate(m); }
|
||||
|
||||
inline void Rotate(const float angle, Vector3f axis)
|
||||
{
|
||||
axis.normalize(); // prehaps not necessary ( see eigens )
|
||||
Eigen::AngleAxisf ax(angle,axis);
|
||||
this->m_T.rotate(Eigen::Quaternion<float>(ax));
|
||||
}
|
||||
|
||||
inline void Rotate(const Vector3f euler_axis) {
|
||||
float angle = euler_axis.norm();
|
||||
Rotate(angle,euler_axis);
|
||||
}
|
||||
|
||||
inline void PreRotate(const Matrix3f &m) { this->m_T.prerotate(m); }
|
||||
|
||||
|
||||
@@ -30,6 +30,13 @@
|
||||
|
||||
#include "VoxImage.h"
|
||||
|
||||
#include <vtkSmartPointer.h>
|
||||
#include <vtkImageData.h>
|
||||
#include <vtkXMLImageDataReader.h>
|
||||
#include <vtkXMLImageDataWriter.h>
|
||||
#include <vtkStringArray.h>
|
||||
#include <vtkInformation.h>
|
||||
#include <vtkInformationStringKey.h>
|
||||
|
||||
namespace uLib {
|
||||
|
||||
@@ -83,7 +90,103 @@ void Abstract::VoxImage::ExportToVtk (const char *file, bool density_type)
|
||||
printf("%s vtk file saved\n",file);
|
||||
}
|
||||
|
||||
int Abstract::VoxImage::ImportFromVtk(const char *file)
|
||||
|
||||
|
||||
void Abstract::VoxImage::ExportToVti (const char *file, bool density_type, bool compressed)
|
||||
{
|
||||
Abstract::VoxImage *voxels = this;
|
||||
|
||||
vtkSmartPointer<vtkImageData> image = vtkSmartPointer<vtkImageData>::New();
|
||||
image->SetDimensions(voxels->GetDims()(0), voxels->GetDims()(1), voxels->GetDims()(2));
|
||||
image->SetSpacing(voxels->GetSpacing()(0), voxels->GetSpacing()(1), voxels->GetSpacing()(2));
|
||||
image->SetOrigin(voxels->GetOrigin()(0), voxels->GetOrigin()(1), voxels->GetOrigin()(2));
|
||||
image->AllocateScalars(VTK_FLOAT, 1);
|
||||
|
||||
float norm;
|
||||
if (density_type) {
|
||||
norm = 1;
|
||||
} else norm = 1.E6;
|
||||
|
||||
int nx = voxels->GetDims()(0);
|
||||
int ny = voxels->GetDims()(1);
|
||||
int nz = voxels->GetDims()(2);
|
||||
|
||||
size_t npoints = nx*ny*nz;
|
||||
float *scalar = static_cast<float*>(image->GetScalarPointer());
|
||||
|
||||
StructuredData unwrap(*voxels);
|
||||
unwrap.SetDataOrder(StructuredData::XYZ); // move to XYZ order (VTK)
|
||||
for (size_t i = 0; i < npoints; i++) {
|
||||
Vector3i idx = unwrap.UnMap(i);
|
||||
scalar[i] = static_cast<float>(voxels->GetValue(idx) * norm);
|
||||
}
|
||||
|
||||
// Create a custom string key
|
||||
static vtkInformationStringKey* ConfigNote =
|
||||
vtkInformationStringKey::MakeKey("cmt.config", "Config");
|
||||
|
||||
// Attach metadata
|
||||
vtkInformation *info = image->GetInformation();
|
||||
info->Set(ConfigNote,
|
||||
|
||||
"This image was generated with uLib\n"
|
||||
"-----------------------------------\n"
|
||||
"Author: Andrea Rigoni\n"
|
||||
"Version: 0.1\n"
|
||||
"Date: 2025\n"
|
||||
|
||||
);
|
||||
|
||||
// std::cout << info->Get(ConfigNote) << std::endl;
|
||||
vtkSmartPointer<vtkXMLImageDataWriter> writer = vtkSmartPointer<vtkXMLImageDataWriter>::New();
|
||||
writer->SetFileName(file);
|
||||
writer->SetInputData(image);
|
||||
if(compressed) {
|
||||
writer->SetDataModeToBinary();
|
||||
writer->SetCompressorTypeToZLib();
|
||||
}
|
||||
writer->Write();
|
||||
}
|
||||
|
||||
|
||||
int Abstract::VoxImage::ImportFromVti(const char *file, bool density_type) {
|
||||
|
||||
vtkSmartPointer<vtkXMLImageDataReader> reader = vtkSmartPointer<vtkXMLImageDataReader>::New();
|
||||
reader->SetFileName(file);
|
||||
reader->Update();
|
||||
vtkImageData *image = reader->GetOutput();
|
||||
if(!image) return false;
|
||||
|
||||
Abstract::VoxImage *voxels = this;
|
||||
int nx = image->GetDimensions()[0];
|
||||
int ny = image->GetDimensions()[1];
|
||||
int nz = image->GetDimensions()[2];
|
||||
|
||||
voxels->SetDims(Vector3i(nx,ny,nz));
|
||||
voxels->SetSpacing(Vector3f(image->GetSpacing()[0],image->GetSpacing()[1],image->GetSpacing()[2]));
|
||||
voxels->SetOrigin(Vector3f(image->GetOrigin()[0],image->GetOrigin()[1],image->GetOrigin()[2]));
|
||||
|
||||
float norm;
|
||||
if (density_type) {
|
||||
norm = 1;
|
||||
} else norm = 1.E6;
|
||||
|
||||
size_t npoints = nx*ny*nz;
|
||||
float *scalar = static_cast<float*>(image->GetScalarPointer());
|
||||
|
||||
StructuredData wrap(*voxels);
|
||||
wrap.SetDataOrder(StructuredData::XYZ);
|
||||
for (size_t i = 0; i < npoints; i++) {
|
||||
Vector3i idx = wrap.UnMap(i);
|
||||
voxels->SetValue(idx, scalar[i] / norm);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int Abstract::VoxImage::ImportFromVtk(const char *file, bool density_type)
|
||||
{
|
||||
FILE * vtk_file = fopen(file, "r");
|
||||
if (!vtk_file) return false;
|
||||
@@ -115,14 +218,18 @@ int Abstract::VoxImage::ImportFromVtk(const char *file)
|
||||
this->SetSpacing(Vector3f(sx,sy,sz));
|
||||
this->SetPosition(Vector3f(ox,oy,oz));
|
||||
|
||||
float norm;
|
||||
if (density_type) {
|
||||
norm = 1;
|
||||
} else norm = 1.E6;
|
||||
|
||||
for (int k = 0; k < dz; ++k) {
|
||||
for (int j = 0; j < dy; ++j) {
|
||||
for (int i = 0; i < dx; ++i) {
|
||||
Vector3i idx(i, j, k);
|
||||
float tmp_val;
|
||||
fscanf(vtk_file, "%f", &tmp_val);
|
||||
//this->SetValue(idx,fabs(tmp_val)*1E-6);
|
||||
this->SetValue(idx,tmp_val*1E-6);
|
||||
this->SetValue(idx,tmp_val / norm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,8 +56,18 @@ public:
|
||||
virtual void SetDims(const Vector3i &size) = 0;
|
||||
|
||||
void ExportToVtk(const char *file, bool density_type = 0);
|
||||
|
||||
// use this function to export to VTK binary format
|
||||
void ExportToVti (const char *file, bool density_type = 0, bool compressed = 0);
|
||||
|
||||
// this function has been deprecated in favor of ExportToVti
|
||||
// but it is kept for backward compatibility and because it
|
||||
// does not depend on vtk library
|
||||
void ExportToVtkXml(const char *file, bool density_type = 0);
|
||||
int ImportFromVtk(const char *file);
|
||||
|
||||
int ImportFromVtk(const char *file, bool density_type = 0);
|
||||
|
||||
int ImportFromVti(const char *file, bool density_type = 0);
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -28,11 +28,12 @@
|
||||
#ifndef VOXIMAGEFILTERCUSTOM_HPP
|
||||
#define VOXIMAGEFILTERCUSTOM_HPP
|
||||
|
||||
#include "Core/Macros.h"
|
||||
#include <Math/Dense.h>
|
||||
#include "Math/VoxImage.h"
|
||||
#include "VoxImageFilter.h"
|
||||
|
||||
#define likely(expr) __builtin_expect(!!(expr), 1)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
///// VOXIMAGE FILTER CUSTOM /////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -24,12 +24,12 @@
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "VoxRaytracer.h"
|
||||
#include "Utils.h"
|
||||
|
||||
#include "Core/Macros.h"
|
||||
#define unlikely(expr) __builtin_expect(!!(expr), 0)
|
||||
|
||||
inline float fast_sign(float f) { return 1 - 2 * (f < 0); }
|
||||
|
||||
|
||||
@@ -19,4 +19,4 @@ set(LIBRARIES
|
||||
${PACKAGE_LIBPREFIX}Math
|
||||
)
|
||||
|
||||
uLib_add_tests(${uLib-module})
|
||||
uLib_add_tests(Math)
|
||||
|
||||
@@ -92,6 +92,20 @@ int main() {
|
||||
imgR.ExportToVtk("./read_and_saved.vtk");
|
||||
}
|
||||
|
||||
{
|
||||
VoxImage<TestVoxel> img(Vector3i(4,4,4));
|
||||
img.InitVoxels({0,0});
|
||||
for (int i=0; i<4; i++) {
|
||||
for (int j=0; j<4; j++) {
|
||||
for (int k=0; k<4; k++) {
|
||||
img[Vector3i(i,j,k)] = {i+j+k,0};
|
||||
}
|
||||
}
|
||||
}
|
||||
img.ExportToVti("./vti_saved.vti",0,1);
|
||||
// img.ImportFromVtkXml("./test_vox_image.vti");
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
VoxImage<TestVoxel> img1(Vector3i(5,5,5));
|
||||
|
||||
@@ -1,55 +1,65 @@
|
||||
set(HEADERS
|
||||
TestTObject.h
|
||||
RootMathDense.h
|
||||
RootMuonScatter.h
|
||||
RootHitRaw.h
|
||||
muBlastHit.h
|
||||
muBlastMCTrack.h
|
||||
muCastorMCTrack.h
|
||||
muCastorHit.h
|
||||
muCastorInfo.h
|
||||
)
|
||||
set(HEADERS RootMathDense.h
|
||||
RootMuonScatter.h
|
||||
RootHitRaw.h
|
||||
muCastorMCTrack.h
|
||||
muCastorHit.h
|
||||
muCastorInfo.h
|
||||
muCastorSkinHit.h
|
||||
muCastorPrimaryVertex.h
|
||||
muCastorMuDetDIGI.h
|
||||
SkinDetectorWriter.h)
|
||||
|
||||
set(DICTIONARY_HEADERS
|
||||
TestTObject.h
|
||||
RootMathDense.h
|
||||
RootMuonScatter.h
|
||||
RootHitRaw.h
|
||||
muBlastHit.h
|
||||
muBlastMCTrack.h
|
||||
muCastorMCTrack.h
|
||||
muCastorHit.h
|
||||
muCastorInfo.h
|
||||
)
|
||||
set(SOURCES ${HEADERS} RootMuonScatter.cpp
|
||||
muCastorMCTrack.cpp
|
||||
muCastorHit.cpp
|
||||
muCastorInfo.cpp
|
||||
muCastorSkinHit.cpp
|
||||
muCastorPrimaryVertex.cpp
|
||||
muCastorMuDetDIGI.cpp
|
||||
SkinDetectorWriter.cpp)
|
||||
|
||||
SET(SOURCES
|
||||
TestTObject.cpp
|
||||
RootMuonScatter.cpp
|
||||
muBlastHit.cpp
|
||||
muBlastMCTrack.cpp
|
||||
muCastorMCTrack.cpp
|
||||
muCastorHit.cpp
|
||||
muCastorInfo.cpp
|
||||
)
|
||||
set(DICTIONARY_HEADERS muCastorMCTrack.h
|
||||
muCastorHit.h
|
||||
muCastorInfo.h
|
||||
muCastorSkinHit.h
|
||||
muCastorPrimaryVertex.h
|
||||
muCastorMuDetDIGI.h
|
||||
SkinDetectorWriter.h)
|
||||
|
||||
set(LIBRARIES
|
||||
# ${Boost_SERIALIZATION_LIBRARY}
|
||||
# ${Boost_SIGNALS_LIBRARY}
|
||||
# ${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
${PACKAGE_LIBPREFIX}Core
|
||||
${PACKAGE_LIBPREFIX}Math
|
||||
)
|
||||
set(LIBRARIES ${ROOT_LIBRARIES}
|
||||
${PACKAGE_LIBPREFIX}Math)
|
||||
|
||||
include(FindROOTv6)
|
||||
root_generate_dictionary(uLibRootDict ${DICTIONARY_HEADERS} LINKDEF Linkdef.h)
|
||||
set_source_files_properties(uLibRootDict.cxx PROPERTIES GENERATED TRUE)
|
||||
set_source_files_properties(uLibRootDict.h PROPERTIES GENERATED TRUE)
|
||||
list(APPEND SOURCES uLibRootDict.cxx)
|
||||
set(rDictName ${PACKAGE_LIBPREFIX}RootDict)
|
||||
root_generate_dictionary(${rDictName} ${DICTIONARY_HEADERS}
|
||||
LINKDEF Linkdef.h)
|
||||
set_source_files_properties(${rDictName}.cxx
|
||||
PROPERTIES GENERATED TRUE)
|
||||
set_source_files_properties(${rDictName}.h
|
||||
PROPERTIES GENERATED TRUE)
|
||||
list(APPEND SOURCES ${rDictName}.cxx)
|
||||
|
||||
# TODO use a custom target linked to root_generate_dictionary
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/uLibRootDict_rdict.pcm
|
||||
DESTINATION ${PACKAGE_INSTALL_LIB_DIR})
|
||||
set(R_ARTIFACTS ${CMAKE_CURRENT_BINARY_DIR}/lib${rDictName}_rdict.pcm
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lib${rDictName}.rootmap)
|
||||
install(FILES ${R_ARTIFACTS}
|
||||
DESTINATION ${INSTALL_LIB_DIR})
|
||||
|
||||
set(libname ${PACKAGE_LIBPREFIX}Root)
|
||||
set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE)
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Root PARENT_SCOPE)
|
||||
|
||||
add_library(${libname} SHARED ${SOURCES})
|
||||
set_target_properties(${libname} PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION}
|
||||
CXX_STANDARD 17)
|
||||
target_link_libraries(${libname} ${LIBRARIES})
|
||||
|
||||
install(TARGETS ${libname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT lib)
|
||||
|
||||
install(FILES ${HEADERS} DESTINATION ${INSTALL_INC_DIR}/Root)
|
||||
|
||||
|
||||
uLib_add_shared_library(${uLib-module})
|
||||
add_subdirectory(testing)
|
||||
|
||||
@@ -74,11 +74,13 @@ using namespace ROOT::Mutom;
|
||||
#pragma link C++ function HitRaw::Tdc() const;
|
||||
#pragma link C++ function HitRaw::Ch() const;
|
||||
|
||||
#pragma link C++ class muBlastMCTrack+;
|
||||
#pragma link C++ class muBlastHit+;
|
||||
#pragma link C++ class muCastorMCTrack+;
|
||||
#pragma link C++ class muCastorHit+;
|
||||
#pragma link C++ class muCastorInfo+;
|
||||
#pragma link C++ class muCastorSkinHit+;
|
||||
#pragma link C++ class muCastorPrimaryVertex+;
|
||||
#pragma link C++ class muCastorMuDetDIGI+;
|
||||
#pragma link C++ class SkinDetectorWriter+;
|
||||
|
||||
#endif // __CINT__
|
||||
|
||||
|
||||
47
src/Root/SkinDetectorWriter.cpp
Normal file
47
src/Root/SkinDetectorWriter.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#include "SkinDetectorWriter.h"
|
||||
#include "muCastorSkinHit.h"
|
||||
#include "TVector3.h"
|
||||
|
||||
SkinDetectorWriter::SkinDetectorWriter(string filename) :
|
||||
t_file(nullptr),
|
||||
t_tree(nullptr),
|
||||
t_buffer(nullptr),
|
||||
i_status(0)
|
||||
{
|
||||
t_file = new TFile(filename.c_str(), "RECREATE");
|
||||
t_tree = new TTree("muCastorMC", "muCastorMC");
|
||||
t_buffer = new TClonesArray("muCastorSkinHit");
|
||||
|
||||
t_tree->Branch("CastorSkinHits", "TClonesArray", t_buffer, 32000, 99);
|
||||
|
||||
if (t_file->IsZombie()) i_status = 1;
|
||||
}
|
||||
|
||||
SkinDetectorWriter::~SkinDetectorWriter()
|
||||
{}
|
||||
|
||||
void SkinDetectorWriter::add(int detID, float p_x, float p_y, float p_z,
|
||||
float m_x, float m_y, float m_z)
|
||||
{
|
||||
TClonesArray& ref = *t_buffer;
|
||||
int size = ref.GetEntriesFast();
|
||||
|
||||
muCastorSkinHit* new_hit = new(ref[size]) muCastorSkinHit();
|
||||
new_hit->SetDetID(detID);
|
||||
new_hit->SetPdgCode(13);
|
||||
new_hit->SetMotherID(-1);
|
||||
new_hit->SetPos (TVector3(p_x, p_y, p_z));
|
||||
new_hit->SetMom (TVector3(m_x, m_y, m_z));
|
||||
}
|
||||
|
||||
void SkinDetectorWriter::write()
|
||||
{
|
||||
if (t_tree->Fill() < 0) i_status = 2;
|
||||
t_buffer->Delete(); // or t_buffer->Clear() ??
|
||||
}
|
||||
|
||||
void SkinDetectorWriter::close()
|
||||
{
|
||||
if (t_tree->Write() == 0) i_status = 3;
|
||||
t_file->Close();
|
||||
}
|
||||
32
src/Root/SkinDetectorWriter.h
Normal file
32
src/Root/SkinDetectorWriter.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef SkinDetectorWriter_h
|
||||
#define SkinDetectorWriter_h
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "TFile.h"
|
||||
#include "TTree.h"
|
||||
#include "TClonesArray.h"
|
||||
|
||||
using std::string;
|
||||
|
||||
class SkinDetectorWriter
|
||||
{
|
||||
public:
|
||||
SkinDetectorWriter(string filename);
|
||||
virtual ~SkinDetectorWriter();
|
||||
|
||||
void add(int detID, float p_x, float p_y, float p_z, float m_x, float m_y, float m_z);
|
||||
int status() { return i_status; }
|
||||
void write();
|
||||
void close();
|
||||
|
||||
private:
|
||||
TFile* t_file;
|
||||
TTree* t_tree;
|
||||
TClonesArray* t_buffer;
|
||||
int i_status;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif //SkinDetectorWriter_h
|
||||
@@ -9,6 +9,7 @@
|
||||
// Martin Subieta martin.subieta@ing.unibs.it
|
||||
//########################################
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include "TObject.h"
|
||||
#include "TParticle.h"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
// Martin Subieta martin.subieta@ing.unibs.it
|
||||
//########################################
|
||||
|
||||
#include <iostream>
|
||||
#include "vector"
|
||||
#include "TObject.h"
|
||||
#include "TParticle.h"
|
||||
|
||||
41
src/Root/muCastorMuDetDIGI.cpp
Normal file
41
src/Root/muCastorMuDetDIGI.cpp
Normal file
@@ -0,0 +1,41 @@
|
||||
/// \file muCastorMuDetDIGI.cxx
|
||||
/// \brief Implementation of the muCastorMuDetDIGI class
|
||||
// This class build the DIGI for the scintillator detectors
|
||||
/// \author G. Bonomi, M. Subieta - INFN
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "muCastorMuDetDIGI.h"
|
||||
|
||||
/// \cond CLASSIMP
|
||||
ClassImp(muCastorMuDetDIGI)
|
||||
/// \endcond
|
||||
|
||||
using namespace std;
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorMuDetDIGI::muCastorMuDetDIGI() :
|
||||
fDetID(-1),
|
||||
fLayID(-1),
|
||||
fTubID(-1),
|
||||
fDistMC(0.),
|
||||
fDriftMC(0.),
|
||||
fDist(0.),
|
||||
fDrift(0.),
|
||||
fEnergy(0.)
|
||||
{}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorMuDetDIGI::~muCastorMuDetDIGI()
|
||||
{}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void muCastorMuDetDIGI::Print(const Option_t* /*opt*/) const
|
||||
{
|
||||
cout << " DetID: " << fDetID
|
||||
<< " LayID: " << fLayID
|
||||
<< " TubID: " << fTubID
|
||||
<< " energy deposit (keV): " << fEnergy
|
||||
<< endl;
|
||||
}
|
||||
|
||||
75
src/Root/muCastorMuDetDIGI.h
Normal file
75
src/Root/muCastorMuDetDIGI.h
Normal file
@@ -0,0 +1,75 @@
|
||||
#ifndef muCastor_MuDetDIGI_H
|
||||
#define muCastor_MuDetDIGI_H
|
||||
|
||||
/// \file muCastorMuDetDIGI.h
|
||||
/// \brief Definition of the muCastorMuDetDIGI class
|
||||
///
|
||||
/// \authors G. Bonomi, M. Subieta - INFN
|
||||
|
||||
#include <TObject.h>
|
||||
|
||||
class muCastorMuDetDIGI : public TObject
|
||||
{
|
||||
public:
|
||||
muCastorMuDetDIGI();
|
||||
virtual ~muCastorMuDetDIGI();
|
||||
|
||||
// -------> PUBLIC FUNCTIONS
|
||||
virtual void Print(const Option_t* option = "") const;
|
||||
|
||||
// -------> SET METHODS
|
||||
|
||||
/// Set Det ID (Detector module)
|
||||
void SetDetID(Int_t id) { fDetID = id; };
|
||||
|
||||
/// Set Layer ID (Layer [0,5])
|
||||
void SetLayID(Int_t id) { fLayID = id; };
|
||||
|
||||
/// Set Tube ID (Tube inside each layer)
|
||||
void SetTubID(Int_t id) { fTubID = id; };
|
||||
|
||||
void SetDistMC (Double_t v) { fDistMC = v; };
|
||||
void SetDriftMC (Double_t v) { fDriftMC= v; };
|
||||
void SetDist (Double_t v) { fDist = v; };
|
||||
void SetDrift (Double_t v) { fDrift = v; };
|
||||
|
||||
// Set energy
|
||||
void SetEnergy(Double_t e) { fEnergy = e; };
|
||||
|
||||
// -------> GET METHODS
|
||||
|
||||
/// \return The Module number
|
||||
Int_t GetDetID() { return fDetID; };
|
||||
|
||||
/// \return The Layer number
|
||||
Int_t GetLayID() { return fLayID; };
|
||||
|
||||
/// \return The Tube number
|
||||
Int_t GetTubID() { return fTubID; };
|
||||
|
||||
Double_t GetDistMC() { return fDistMC; };
|
||||
Double_t GetDriftMC() { return fDriftMC; };
|
||||
Double_t GetDist() { return fDist; };
|
||||
Double_t GetDrift() { return fDrift; };
|
||||
|
||||
/// \return Get energy
|
||||
Double_t GetEnergy() { return fEnergy; };
|
||||
|
||||
|
||||
// -------> PRIVATE VARIABLES
|
||||
private:
|
||||
Int_t fDetID; // Detector module ID
|
||||
Int_t fLayID; // Detector layer ID
|
||||
Int_t fTubID; // Layer tube ID
|
||||
Double_t fDistMC; // Minimum distance of particle tracks to the wire
|
||||
Double_t fDriftMC; // Minimum drift time to the wire
|
||||
Double_t fDist; // Minimum distance of particle tracks to the wire (with smearing)
|
||||
Double_t fDrift; // Minimum drift time to the wire (with smearing)
|
||||
Double_t fEnergy; // Energy released in the element
|
||||
|
||||
ClassDef(muCastorMuDetDIGI,1) //muCastorMuDetDIGI
|
||||
};
|
||||
|
||||
#endif //muCastorMuDetDIGI_H
|
||||
|
||||
|
||||
47
src/Root/muCastorPrimaryVertex.cpp
Normal file
47
src/Root/muCastorPrimaryVertex.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
|
||||
#include "muCastorPrimaryVertex.h"
|
||||
|
||||
/// \cond CLASSIMP
|
||||
ClassImp(muCastorPrimaryVertex)
|
||||
/// \endcond
|
||||
|
||||
using namespace std;
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorPrimaryVertex::muCastorPrimaryVertex() {
|
||||
/// Default constructor
|
||||
Reset();
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorPrimaryVertex::~muCastorPrimaryVertex()
|
||||
{
|
||||
/// Destructor
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void muCastorPrimaryVertex::Reset()
|
||||
{
|
||||
fPdgCode = 0;
|
||||
fVx = std::numeric_limits<double>::quiet_NaN();
|
||||
fVy = std::numeric_limits<double>::quiet_NaN();
|
||||
fVz = std::numeric_limits<double>::quiet_NaN();
|
||||
fPx = std::numeric_limits<double>::quiet_NaN();
|
||||
fPy = std::numeric_limits<double>::quiet_NaN();
|
||||
fPz = std::numeric_limits<double>::quiet_NaN();
|
||||
fE = std::numeric_limits<double>::quiet_NaN();
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void muCastorPrimaryVertex::Print(const Option_t* /*opt*/) const
|
||||
{
|
||||
/// Printing
|
||||
|
||||
cout << " Primary particle PDG Code " << fPdgCode << endl;
|
||||
cout << " Vertex: (" << fVx << ", " << fVy << ", " << fVz << ") cm" << endl;
|
||||
cout << " Mom: (" << fPx << ", " << fPy << ", " << fPz << ") MeV/c" << endl;
|
||||
|
||||
}
|
||||
|
||||
53
src/Root/muCastorPrimaryVertex.h
Normal file
53
src/Root/muCastorPrimaryVertex.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#ifndef muCastor_PVTX_H
|
||||
#define muCastor_PVTX_H
|
||||
|
||||
/// \brief Definition of the muCastorPrimaryVertex class
|
||||
///
|
||||
/// \authors G. Bonomi (04/02/2020)
|
||||
|
||||
#include <TObject.h>
|
||||
|
||||
class muCastorPrimaryVertex : public TObject
|
||||
{
|
||||
public:
|
||||
muCastorPrimaryVertex();
|
||||
virtual ~muCastorPrimaryVertex();
|
||||
|
||||
// -------> PUBLIC FUNCTIONS
|
||||
virtual void Print(const Option_t* option = "") const;
|
||||
|
||||
// -------> SET METHODS
|
||||
|
||||
void SetPdgCode(Int_t code) { fPdgCode = code; };
|
||||
|
||||
void SetVx(Double_t Vx) { fVx = Vx; };
|
||||
void SetVy(Double_t Vy) { fVy = Vy; };
|
||||
void SetVz(Double_t Vz) { fVz = Vz; };
|
||||
|
||||
void SetPx(Double_t Px) { fPx = Px; };
|
||||
void SetPy(Double_t Py) { fPy = Py; };
|
||||
void SetPz(Double_t Pz) { fPz = Pz; };
|
||||
|
||||
void SetE(Double_t E) { fE = E; };
|
||||
|
||||
void Reset();
|
||||
private:
|
||||
// -------> PRIVATE VARIABLES
|
||||
Int_t fPdgCode; // PDG code of the particle
|
||||
|
||||
Double_t fVx; // x of production vertex
|
||||
Double_t fVy; // y of production vertex
|
||||
Double_t fVz; // z of production vertex
|
||||
|
||||
Double_t fPx; // x component of momentum
|
||||
Double_t fPy; // y component of momentum
|
||||
Double_t fPz; // z component of momentum
|
||||
Double_t fE; // Energy
|
||||
|
||||
|
||||
ClassDef(muCastorPrimaryVertex,1) //muCastorPrimaryVertex
|
||||
};
|
||||
|
||||
#endif //muCastor_PVTX_H
|
||||
|
||||
|
||||
43
src/Root/muCastorSkinHit.cpp
Normal file
43
src/Root/muCastorSkinHit.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
//----------------------------------------------------------
|
||||
// Class : CastorSkinHit
|
||||
// Date: October 2020
|
||||
// Author: Germano Bonomi germano.bonomi@unibs.it
|
||||
//----------------------------------------------------------
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "muCastorSkinHit.h"
|
||||
|
||||
/// \cond CLASSIMP
|
||||
ClassImp(muCastorSkinHit)
|
||||
/// \endcond
|
||||
|
||||
using namespace std;
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorSkinHit::muCastorSkinHit() :
|
||||
fDetID(-1),
|
||||
fPdgCode(-1),
|
||||
fMotherID(-1),
|
||||
fMomX(0.),
|
||||
fMomY(0.),
|
||||
fMomZ(0.),
|
||||
fPosX(0.),
|
||||
fPosY(0.),
|
||||
fPosZ(0.)
|
||||
{}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
muCastorSkinHit::~muCastorSkinHit()
|
||||
{}
|
||||
//_____________________________________________________________________________
|
||||
void muCastorSkinHit::Print(const Option_t* /*opt*/) const
|
||||
{
|
||||
cout << " detID: " << fDetID
|
||||
<< " position (cm): ("
|
||||
<< fPosX << ", " << fPosY << ", " << fPosZ << ")"
|
||||
<< " momentum (MeV/c): ("
|
||||
<< fMomX << ", " << fMomY << ", " << fMomZ << ")"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
52
src/Root/muCastorSkinHit.h
Normal file
52
src/Root/muCastorSkinHit.h
Normal file
@@ -0,0 +1,52 @@
|
||||
//----------------------------------------------------------
|
||||
// Class : CastorSkinHit
|
||||
// Date: October 2020
|
||||
// Author: Germano Bonomi germano.bonomi@unibs.it
|
||||
//----------------------------------------------------------
|
||||
|
||||
#ifndef muCastor_SKINHIT_H
|
||||
#define muCastor_SKINHIT_H
|
||||
|
||||
|
||||
#include <TObject.h>
|
||||
#include <TVector3.h>
|
||||
|
||||
class muCastorSkinHit : public TObject
|
||||
{
|
||||
public:
|
||||
muCastorSkinHit();
|
||||
virtual ~muCastorSkinHit();
|
||||
|
||||
// methods
|
||||
virtual void Print(const Option_t* option = "") const;
|
||||
|
||||
// set methods
|
||||
void SetDetID(Int_t id) { fDetID = id; };
|
||||
void SetPdgCode(Int_t pdg) { fPdgCode = pdg; };
|
||||
void SetMotherID(Int_t mid) { fMotherID = mid; };
|
||||
void SetMom(TVector3 xyz) { fMomX = xyz.X(); fMomY = xyz.Y(); fMomZ = xyz.Z(); };
|
||||
void SetPos(TVector3 xyz) { fPosX = xyz.X(); fPosY = xyz.Y(); fPosZ = xyz.Z(); };
|
||||
|
||||
Int_t GetDetID() { return fDetID; }
|
||||
Int_t GetPdgCode() { return fPdgCode; }
|
||||
Int_t GetMotherID() { return fMotherID; }
|
||||
TVector3 GetMom() { return TVector3(fMomX, fMomY, fMomZ); }
|
||||
TVector3 GetPos() { return TVector3(fPosX, fPosY, fPosZ); }
|
||||
|
||||
private:
|
||||
Int_t fDetID; // Detector module ID
|
||||
Int_t fPdgCode; // Particle PDG Code
|
||||
Int_t fMotherID; // Particle mother ID (-1 = primary, 0 = secondary, etc..)
|
||||
Double_t fMomX; // Track momentum when releasing the hit (X)
|
||||
Double_t fMomY; // Track momentum when releasing the hit (Y)
|
||||
Double_t fMomZ; // Track momentum when releasing the hit (Z)
|
||||
Double_t fPosX; // Hit coordinates (at the entrance of the detector) (X)
|
||||
Double_t fPosY; // Hit coordinates (at the entrance of the detector) (Y)
|
||||
Double_t fPosZ; // Hit coordinates (at the entrance of the detector) (Z)
|
||||
|
||||
ClassDef(muCastorSkinHit,1) //muCastorSkinHit
|
||||
};
|
||||
|
||||
#endif //muCastort_SKINHIT_H
|
||||
|
||||
|
||||
@@ -1,37 +1,38 @@
|
||||
set(HEADERS
|
||||
uLibVtkInterface.h
|
||||
uLibVtkViewer.h
|
||||
vtkContainerBox.h
|
||||
vtkMuonScatter.h
|
||||
vtkStructuredGrid.h
|
||||
vtkVoxRaytracerRepresentation.h
|
||||
vtkVoxImage.h
|
||||
# vtkHLineRepresentation.h
|
||||
# vtkTriangleMesh.h
|
||||
)
|
||||
set(HEADERS uLibVtkInterface.h
|
||||
uLibVtkViewer.h
|
||||
vtkContainerBox.h
|
||||
vtkMuonScatter.h
|
||||
vtkStructuredGrid.h
|
||||
vtkVoxRaytracerRepresentation.h
|
||||
vtkVoxImage.h)
|
||||
|
||||
SET(SOURCES
|
||||
uLibVtkInterface.cxx
|
||||
uLibVtkViewer.cpp
|
||||
vtkContainerBox.cpp
|
||||
vtkMuonScatter.cxx
|
||||
vtkStructuredGrid.cpp
|
||||
vtkVoxRaytracerRepresentation.cpp
|
||||
vtkVoxImage.cpp
|
||||
)
|
||||
set(SOURCES uLibVtkInterface.cxx
|
||||
uLibVtkViewer.cpp
|
||||
vtkContainerBox.cpp
|
||||
vtkMuonScatter.cxx
|
||||
vtkStructuredGrid.cpp
|
||||
vtkVoxRaytracerRepresentation.cpp
|
||||
vtkVoxImage.cpp)
|
||||
|
||||
set(LIBRARIES
|
||||
${Boost_SERIALIZATION_LIBRARY}
|
||||
${Boost_SIGNALS_LIBRARY}
|
||||
${Boost_PROGRAM_OPTIONS_LIBRARY}
|
||||
${Eigen_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
${Geant4_LIBRARIES}
|
||||
${VTK_LIBRARIES}
|
||||
${PACKAGE_LIBPREFIX}Core
|
||||
${PACKAGE_LIBPREFIX}Math
|
||||
)
|
||||
set(LIBRARIES ${Eigen_LIBRARY}
|
||||
${ROOT_LIBRARIES}
|
||||
${VTK_LIBRARIES}
|
||||
${PACKAGE_LIBPREFIX}Math)
|
||||
|
||||
uLib_add_shared_library(${uLib-module})
|
||||
set(libname ${PACKAGE_LIBPREFIX}Vtk)
|
||||
set(ULIB_SHARED_LIBRARIES ${ULIB_SHARED_LIBRARIES} ${libname} PARENT_SCOPE)
|
||||
set(ULIB_SELECTED_MODULES ${ULIB_SELECTED_MODULES} Vtk PARENT_SCOPE)
|
||||
|
||||
add_library(${libname} SHARED ${SOURCES})
|
||||
set_target_properties(${libname} PROPERTIES
|
||||
VERSION ${PROJECT_VERSION}
|
||||
SOVERSION ${PROJECT_SOVERSION})
|
||||
target_link_libraries(${libname} ${LIBRARIES})
|
||||
|
||||
install(TARGETS ${libname}
|
||||
EXPORT "${PROJECT_NAME}Targets"
|
||||
RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
|
||||
LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT lib)
|
||||
|
||||
install(FILES ${HEADERS} DESTINATION ${INSTALL_INC_DIR}/Vtk)
|
||||
|
||||
add_subdirectory(testing)
|
||||
|
||||
@@ -65,6 +65,7 @@ vtkContainerBox::~vtkContainerBox()
|
||||
vtkPolyData *vtkContainerBox::GetPolyData() const
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void vtkContainerBox::InstallPipe()
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/*//////////////////////////////////////////////////////////////////////////////
|
||||
// CMT Cosmic Muon Tomography project //////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Copyright (c) 2014, Universita' degli Studi di Padova, INFN sez. di Padova
|
||||
All rights reserved
|
||||
|
||||
Authors: Andrea Rigoni Garola < andrea.rigoni@pd.infn.it >
|
||||
|
||||
------------------------------------------------------------------
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 3.0 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library.
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
|
||||
|
||||
#include "Object.h"
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -1,19 +1,92 @@
|
||||
# - Config file for the FooBar package
|
||||
# - Config file for the ULib package
|
||||
# It defines the following variables
|
||||
# FOOBAR_INCLUDE_DIRS - include directories for FooBar
|
||||
# FOOBAR_LIBRARIES - libraries to link against
|
||||
# FOOBAR_EXECUTABLE - the bar executable
|
||||
# ULIB_INCLUDE_DIRS - include directories for ULib
|
||||
# ULIB_LIBRARIES - libraries to link against
|
||||
# ULIB_EXECUTABLE - the bar executable
|
||||
|
||||
|
||||
set(ULIB_VERSION @PROJECT_VERSION@)
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
# Defines the include directories for the header files
|
||||
# PACKAGE_INCLUDE_INSTALL_DIR is replaced by configure_package_config_file
|
||||
# with the correct path for the installation.
|
||||
set(ULIB_INCLUDE_DIRS "${PACKAGE_INCLUDE_INSTALL_DIR}")
|
||||
|
||||
# Compute paths
|
||||
get_filename_component(ULIB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
set(ULIB_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
|
||||
# Our library dependencies (contains definitions for IMPORTED targets)
|
||||
# if(NOT TARGET foo AND NOT FooBar_BINARY_DIR)
|
||||
include("${ULIB_CMAKE_DIR}/uLibTargets.cmake")
|
||||
# endif()
|
||||
# Search for the directory of exported build targets
|
||||
set(uLib_BUILD_TARGETS_FILE
|
||||
"${ULIB_CMAKE_DIR}/uLibTargets-build.cmake"
|
||||
)
|
||||
|
||||
# Search for the directory of installed targets
|
||||
set(uLib_INSTALL_TARGETS_FILE
|
||||
"${ULIB_CMAKE_DIR}/uLibTargets.cmake"
|
||||
)
|
||||
|
||||
# We use a logic based on the presence of the build target file
|
||||
# to determine if we are in a local build.
|
||||
if(EXISTS "${uLib_BUILD_TARGETS_FILE}")
|
||||
message(STATUS " ++ Using uLib build targets")
|
||||
|
||||
include("${uLib_BUILD_TARGETS_FILE}")
|
||||
set_and_check(ULIB_INCLUDE_DIRS "@ULIB_SOURCE_DIR@/src")
|
||||
set_and_check(ULIB_LIBRARY_DIRS "${ULIB_CMAKE_DIR}")
|
||||
set(ULIB_BUILD_DIR ${ULIB_CMAKE_DIR})
|
||||
|
||||
# Target that builds uLib inside its build directory
|
||||
add_custom_target(uLib_dependency_target
|
||||
COMMAND echo " --------------------------------- "
|
||||
COMMAND echo " - Building uLib as a dependency - "
|
||||
COMMAND echo " --------------------------------- "
|
||||
COMMAND echo ""
|
||||
COMMAND ${CMAKE_COMMAND} --build ${ULIB_BUILD_DIR}
|
||||
COMMAND echo ""
|
||||
WORKING_DIRECTORY ${ULIB_BUILD_DIR}
|
||||
)
|
||||
|
||||
add_library(uLib_dependency INTERFACE)
|
||||
add_dependencies(uLib_dependency uLib_dependency_target)
|
||||
link_libraries(uLib_dependency)
|
||||
|
||||
else()
|
||||
message(STATUS " ++ Using uLib installed targets")
|
||||
|
||||
include("${uLib_INSTALL_TARGETS_FILE}")
|
||||
set_and_check(ULIB_INCLUDE_DIRS "@PACKAGE_INSTALL_INC_DIR@")
|
||||
set(ULIB_SYSCONFIG_DIR "@PACKAGE_INSTALL_ETC_DIR@")
|
||||
set_and_check(ULIB_CMAKE_DIR "@PACKAGE_INSTALL_CMAKE_DIR@")
|
||||
set_and_check(ULIB_LIBRARY_DIRS "@PACKAGE_INSTALL_LIB_DIR@")
|
||||
endif()
|
||||
|
||||
# --- Add required packages from uLib ---
|
||||
# TODO: this should be selected if components are active
|
||||
#
|
||||
set(Boost_USE_STATIC_LIBS OFF)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
find_package(Boost 1.45.0 COMPONENTS program_options filesystem REQUIRED)
|
||||
include_directories(${Boost_INCLUDE_DIRS})
|
||||
link_libraries(${Boost_LIBRARIES})
|
||||
|
||||
find_package(Eigen3 CONFIG REQUIRED)
|
||||
include(${EIGEN3_USE_FILE})
|
||||
|
||||
find_package(ROOT CONFIG REQUIRED)
|
||||
include(${ROOT_USE_FILE})
|
||||
|
||||
find_package(VTK REQUIRED)
|
||||
# include(${VTK_USE_FILE})
|
||||
|
||||
|
||||
|
||||
link_directories("${ULIB_LIBRARY_DIRS}")
|
||||
set(ULIB_LIBRARIES "@ULIB_SHARED_LIBRARIES@")
|
||||
check_required_components(uLib)
|
||||
|
||||
# Set the variable to indicate that the package has been found.
|
||||
set(uLib_FOUND TRUE)
|
||||
|
||||
|
||||
# These are IMPORTED targets created by FooBarTargets.cmake
|
||||
# set(FOOBAR_LIBRARIES foo)
|
||||
# set(FOOBAR_EXECUTABLE bar)
|
||||
set(ULIB_LIBRARIES @ULIB_SHARED_LIBRARIES@)
|
||||
|
||||
Reference in New Issue
Block a user