From b8df39a081235f37c997764beb656ff2fec06997 Mon Sep 17 00:00:00 2001 From: Whitney Armstrong <warmstrong@anl.gov> Date: Wed, 27 Jun 2018 14:02:57 -0500 Subject: [PATCH] Added cmake build. This repo along with hallac_evio and analyzer all have "cmake" branches with complete cmake builds. --- .gitignore | 1 + CMakeLists.txt | 90 ++++++++++++++++++++++ cmake/HCANAConfig.cmake.in | 24 ++++++ cmake/modules/CompileTimeInfo.cmake | 67 +++++++++++++++++ cmake/modules/FindLZ4.cmake | 39 ++++++++++ cmake/os.cmake | 10 +++ cmake/root.cmake | 20 +++++ hc_compiledata.h.in | 39 ++++++++++ src/CMakeLists.txt | 112 ++++++++++++++++++++++++++++ src/HallC_LinkDef.h | 70 +++++++++++++++++ src/include/HallC_LinkDef.h | 70 +++++++++++++++++ 11 files changed, 542 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/HCANAConfig.cmake.in create mode 100644 cmake/modules/CompileTimeInfo.cmake create mode 100644 cmake/modules/FindLZ4.cmake create mode 100644 cmake/os.cmake create mode 100644 cmake/root.cmake create mode 100644 hc_compiledata.h.in create mode 100644 src/CMakeLists.txt create mode 100644 src/HallC_LinkDef.h create mode 100644 src/include/HallC_LinkDef.h diff --git a/.gitignore b/.gitignore index c4b0163..e9874f4 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ examples/cache # Working directory work +build/ diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..13ae055 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,90 @@ +cmake_minimum_required(VERSION 3.5) +project(HCANA VERSION 1.6.0 LANGUAGES C CXX) + +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + ${PROJECT_SOURCE_DIR}/cmake + ${PROJECT_SOURCE_DIR}/cmake/modules) + +## Use C++17 features +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +## OS Specific settings +include(cmake/os.cmake) +# provides variables for header hc_compiledata.h +include(cmake/modules/CompileTimeInfo.cmake) + +include(GNUInstallDirs) +set(INSTALL_CONFIGDIR lib/hcana) + +find_package(EXPAT REQUIRED COMPONENTS EXPAT ) +find_package(Threads REQUIRED) +find_package(ZLIB REQUIRED) + +find_package(EVIO REQUIRED) +find_package(PODD REQUIRED) + +list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}) +list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}/etc/cmake) +find_package(ROOT REQUIRED COMPONENTS Tree) +include(${ROOT_USE_FILE}) +# extra root settings +include_directories(${ROOT_INCLUDE_DIRS}) +link_directories(${ROOT_LIBRARY_DIR}) +include(cmake/root.cmake) + +# this helps with the circular headers +include_directories(src) + +# because the current includes don't use "podd/x.h" +#message("PODD_INCLUDE_DIR ${PODD_INCLUDE_DIR}") +include_directories(${PODD_INCLUDE_DIR}/podd) + + +configure_file(hc_compiledata.h.in + src/hc_compiledata.h) + +#add_subdirectory(hana_decode) +add_subdirectory(src) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/src/hc_compiledata.h + DESTINATION include/hcana + ) +############################################## +# Installation + + +#Create a ConfigVersion.cmake file +include(CMakePackageConfigHelpers) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + +configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/HCANAConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} +) + +#Install the config, configversion and custom find modules +install(FILES + # ${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake + ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake + DESTINATION ${INSTALL_CONFIGDIR} +) + +############################################## +## Exporting from the build tree +#configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake +# ${CMAKE_CURRENT_BINARY_DIR}/FindRapidJSON.cmake +# COPYONLY) + +export(EXPORT HCANA-targets FILE ${CMAKE_CURRENT_BINARY_DIR}/HCANATargets.cmake NAMESPACE HCANA::) + +#Register package in user's package registry +export(PACKAGE HCANA) diff --git a/cmake/HCANAConfig.cmake.in b/cmake/HCANAConfig.cmake.in new file mode 100644 index 0000000..174aaa2 --- /dev/null +++ b/cmake/HCANAConfig.cmake.in @@ -0,0 +1,24 @@ +@PACKAGE_INIT@ + +include("@PACKAGE_TARGETS_INSTALL_PATH@") + +check_required_components(HCANA) + +#get_filename_component(HCANA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +#include(CMakeFindDependencyMacro) +# +#list(APPEND CMAKE_MODULE_PATH ${HCANA_CMAKE_DIR}) +# +## NOTE Had to use find_package because find_dependency does not support COMPONENTS or MODULE until 3.8.0 +# +##find_dependency(Boost 1.55 REQUIRED COMPONENTS regex) +##find_dependency(RapidJSON 1.0 REQUIRED MODULE) +##find_package(Boost 1.55 REQUIRED COMPONENTS regex) +##find_package(RapidJSON 1.0 REQUIRED MODULE) +#list(REMOVE_AT CMAKE_MODULE_PATH -1) +# +#if(NOT TARGET HCANA::PODD) +# include("${HCANA_CMAKE_DIR}/PODDTargets.cmake") +#endif() +# +#set(HCANA_LIBRARIES PODD::PODD) diff --git a/cmake/modules/CompileTimeInfo.cmake b/cmake/modules/CompileTimeInfo.cmake new file mode 100644 index 0000000..3b181c0 --- /dev/null +++ b/cmake/modules/CompileTimeInfo.cmake @@ -0,0 +1,67 @@ +cmake_minimum_required(VERSION 2.8) + +# Return the date (yyyy-mm-dd) +macro(DATE RESULT) + if(WIN32) + execute_process(COMMAND "cmd" " /C date /T" OUTPUT_VARIABLE ${RESULT}) + string(REGEX REPLACE "(..)/(..)/(....).*" "\\3-\\2-\\1" ${RESULT} ${${RESULT}}) + elseif(UNIX) + execute_process(COMMAND "date" "+%Y-%m-%d" OUTPUT_VARIABLE ${RESULT}) + else() + message(SEND_ERROR "Unable to detect date") + set(${RESULT} UNKNOWN) + endif() +endmacro() + +# Return the time (hh:mm:ss) +macro(TIME RESULT) + if(WIN32) + execute_process(COMMAND "cmd" " /C echo %TIME%" OUTPUT_VARIABLE ${RESULT}) + string(REGEX REPLACE "(..:..:..),(..)" "\\1" ${RESULT} ${${RESULT}}) + elseif(UNIX) + execute_process(COMMAND "date" "+%H:%M:%S" OUTPUT_VARIABLE ${RESULT}) + else() + message(SEND_ERROR "Unable to detect time") + set(${RESULT} UNKNOWN) + endif() +endmacro() + + +execute_process(COMMAND "date" "+%b:%d:%Y" + OUTPUT_VARIABLE HCANA_BUILD_DATE + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "date" "+%a %b %d %H:%M:%S %Z %Y" + OUTPUT_VARIABLE HCANA_BUILD_DATETIME + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "bash" "-c" "echo $(uname -s)-$(uname -r)-$(uname -m)" + OUTPUT_VARIABLE HCANA_PLATFORM + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "uname" "-n" + OUTPUT_VARIABLE HCANA_NODE + OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND "pwd" + OUTPUT_VARIABLE HCANA_BUILD_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) +execute_process(COMMAND "whoami" + OUTPUT_VARIABLE HCANA_BUILD_USER + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "bash" "-c" "echo $(git rev-parse HEAD 2>/dev/null | cut -c1-7)" + OUTPUT_VARIABLE HCANA_GIT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "bash" "-c" "echo $(${CMAKE_CXX_COMPILER} --version 2>/dev/null | head -1)" + OUTPUT_VARIABLE HCANA_CXX_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "bash" "-c" "echo $(root-config --version)" + OUTPUT_VARIABLE HCANA_ROOT_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + +execute_process(COMMAND "bash" "-c" "printf '%02d%02d%02d' ${PROJECT_VERSION_MAJOR} ${PROJECT_VERSION_MINOR} ${PROJECT_VERSION_PATCH}" + OUTPUT_VARIABLE HCANA_VERCODE + OUTPUT_STRIP_TRAILING_WHITESPACE) + diff --git a/cmake/modules/FindLZ4.cmake b/cmake/modules/FindLZ4.cmake new file mode 100644 index 0000000..4658a35 --- /dev/null +++ b/cmake/modules/FindLZ4.cmake @@ -0,0 +1,39 @@ +# Finds liblz4. +# +# This module defines: +# LZ4_FOUND +# LZ4_INCLUDE_DIR +# LZ4_LIBRARY +# + +find_path(LZ4_INCLUDE_DIR NAMES lz4.h) +find_library(LZ4_LIBRARY NAMES lz4) + +# We require LZ4_compress_default() which was added in v1.7.0 +if (LZ4_LIBRARY) + include(CheckCSourceRuns) + set(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR}) + set(CMAKE_REQUIRED_LIBRARIES ${LZ4_LIBRARY}) + check_c_source_runs(" +#include <lz4.h> +int main() { + int good = (LZ4_VERSION_MAJOR > 1) || + ((LZ4_VERSION_MAJOR == 1) && (LZ4_VERSION_MINOR >= 7)); +return !good; +}" LZ4_GOOD_VERSION) + set(CMAKE_REQUIRED_INCLUDES) + set(CMAKE_REQUIRED_LIBRARIES) +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS( + LZ4 DEFAULT_MSG + LZ4_LIBRARY LZ4_INCLUDE_DIR LZ4_GOOD_VERSION) + +if (NOT LZ4_FOUND) + message(STATUS "Using third-party bundled LZ4") +else() + message(STATUS "Found LZ4: ${LZ4_LIBRARY}") +endif (NOT LZ4_FOUND) + +mark_as_advanced(LZ4_INCLUDE_DIR LZ4_LIBRARY) diff --git a/cmake/os.cmake b/cmake/os.cmake new file mode 100644 index 0000000..14fc676 --- /dev/null +++ b/cmake/os.cmake @@ -0,0 +1,10 @@ +## OSX/homebrew version of root6 installs its cmake macros in a non-standard +## location. This might be an issue on other systems as well. +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} $ENV{ROOTSYS}/etc/root/cmake) +endif() + +## Get rid of rpath warning on OSX +if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + set(CMAKE_MACOSX_RPATH 1) +endif() diff --git a/cmake/root.cmake b/cmake/root.cmake new file mode 100644 index 0000000..e64cbaa --- /dev/null +++ b/cmake/root.cmake @@ -0,0 +1,20 @@ +## Override root's ROOT_GENERATE_DICTIONARY macro to be less error-prone. This +## is done by only allowing for explicitly speficied header locations/include +## directories, instead of using the full search path for this module. +function(ROOT_GENERATE_DICTIONARY dictionary) + CMAKE_PARSE_ARGUMENTS(ARG "" "" "INCLUDEDIRS;LINKDEF;OPTIONS" "" ${ARGN}) + ## Get all include directories + get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) + set(dirs ${dirs} ${ARG_INCLUDEDIRS}) + set(extra_includes "") + foreach(dir ${dirs}) + set(extra_includes ${extra_includes} "-I${dir}") + endforeach() + ## find and call ROOTCLING + find_program(ROOTCLING rootcling) + add_custom_command( + OUTPUT ${dictionary}.cxx ${dictionary}_rdict.pcm + COMMAND ${ROOTCLING} -f ${dictionary}.cxx -s ${dictionary}.pcm + ${ARG_OPTIONS} ${extra_includes} ${ARG_UNPARSED_ARGUMENTS} ${ARG_LINKDEF} + DEPENDS ${includes} ${linkdefs}) +endfunction() diff --git a/hc_compiledata.h.in b/hc_compiledata.h.in new file mode 100644 index 0000000..b11ee59 --- /dev/null +++ b/hc_compiledata.h.in @@ -0,0 +1,39 @@ +#ifndef HCANA_COMPILEDATA_H +#define HCANA_COMPILEDATA_H + +#define HC_INCLUDEPATH "@CMAKE_INSTALL_PREFIX@/include" +#define HC_VERSION "@PROJECT_VERSION@" +#define HC_DATE "@HCANA_BUILD_DATE@" +#define HC_DATETIME "@HCANA_BUILD_DATETIME@" +#define HC_PLATFORM "@HCANA_PLATFORM@" +#define HC_BUILDNODE "@HCANA_NODE@" +#define HC_BUILDDIR "@HCANA_BUILD_DIR@" +#define HC_BUILDUSER "@HCANA_BUILD_USER@" +#define HC_GITVERS "@HCANA_GIT_VERSION@" +#define HC_CXXVERS "@HCANA_CXX_VERSION@" +#define HC_ROOTVERS "@HCANA_ROOT_VERSION@" + +#define HCANA_VERSION_CODE @HCANA_VERCODE@ +#define HCANA_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#endif + + +// Example: +//#ifndef ANALYZER_COMPILEDATA_H +//#define ANALYZER_COMPILEDATA_H +// +//#define HA_INCLUDEPATH "/mnt/old_home/whit/projects/hall_AC_projects/hcana/HCANA/src /mnt/old_home/whit/projects/hall_AC_projects/hcana/HCANA/hana_decode" +//#define HA_VERSION "1.6.0" +//#define HA_DATE "Jun 26 2018" +//#define HA_DATETIME "Tue Jun 26 2018" +//#define HA_PLATFORM "Linux-4.13.0-45-generic-x86_64-with-Ubuntu-17.10-artful" +//#define HA_BUILDNODE "wpad" +//#define HA_BUILDDIR "/mnt/old_home/whit/projects/hall_AC_projects/hcana/HCANA" +//#define HA_BUILDUSER "whit" +//#define HA_GITVERS "5b48832" +//#define HA_CXXVERS "c++ (GCC) 8.1.0" +//#define HA_ROOTVERS "6.15/01" +//#define ANALYZER_VERSION_CODE 67072 +//#define ANALYZER_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +// +//#endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..7614583 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,112 @@ +cmake_minimum_required(VERSION 3.5) + +set(HCANA_src +Scaler9001.cxx Scaler9250.cxx THcAerogel.cxx THcAerogelHit.cxx THcAnalyzer.cxx THcBCMCurrent.cxx THcCherenkov.cxx +THcCherenkovHit.cxx THcCoinTime.cxx THcConfigEvtHandler.cxx THcDC.cxx THcDCHit.cxx THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx +THcDCTrack.cxx THcDCWire.cxx THcDetectorMap.cxx THcDriftChamber.cxx THcDriftChamberPlane.cxx THcDummySpectrometer.cxx THcExtTarCor.cxx +THcFormula.cxx THcHallCSpectrometer.cxx THcHitList.cxx THcHodoEff.cxx THcHodoHit.cxx THcHodoscope.cxx THcInterface.cxx +THcParmList.cxx THcPeriodicReport.cxx THcPrimaryKine.cxx THcRaster.cxx THcRasteredBeam.cxx THcRasterRawHit.cxx THcRawAdcHit.cxx +THcRawDCHit.cxx THcRawHit.cxx THcRawHodoHit.cxx THcRawShowerHit.cxx THcRawTdcHit.cxx THcReactionPoint.cxx THcRun.cxx +THcRunParameters.cxx THcScalerEvtHandler.cxx THcScintillatorPlane.cxx THcSecondaryKine.cxx THcShowerArray.cxx THcShower.cxx THcShowerHit.cxx +THcShowerPlane.cxx THcSignalHit.cxx THcSpacePoint.cxx THcTimeSyncEvtHandler.cxx THcTrigApp.cxx THcTrigDet.cxx THcTrigRawHit.cxx TIBlobModule.cxx + ) + +# This would be alot easier if there was an "include" directory +set(headers + Scaler9001.h Scaler9250.h THcAerogel.h THcAerogelHit.h THcAnalyzer.h THcBCMCurrent.h THcCherenkov.h THcCherenkovHit.h THcCoinTime.h THcConfigEvtHandler.h + THcDC.h THcDCHit.h THcDCLookupTTDConv.h THcDCTimeToDistConv.h THcDCTrack.h THcDCWire.h THcDetectorMap.h + THcDriftChamber.h THcDriftChamberPlane.h THcDummySpectrometer.h THcExtTarCor.h THcFormula.h THcGlobals.h THcHallCSpectrometer.h + THcHitList.h THcHodoEff.h THcHodoHit.h THcHodoscope.h THcInterface.h THcParmList.h THcPeriodicReport.h + THcPrimaryKine.h THcRasteredBeam.h THcRaster.h THcRasterRawHit.h THcRawAdcHit.h THcRawDCHit.h THcRawHit.h + THcRawHodoHit.h THcRawShowerHit.h THcRawTdcHit.h THcReactionPoint.h THcRun.h THcRunParameters.h THcScalerEvtHandler.h THcScintillatorPlane.h + THcSecondaryKine.h THcShowerArray.h THcShower.h THcShowerHit.h THcShowerPlane.h THcSignalHit.h THcSpacePoint.h THcTimeSyncEvtHandler.h + THcTrigApp.h THcTrigDet.h THcTrigRawHit.h TIBlobModule.h + ) + + +ROOT_GENERATE_DICTIONARY(HallCDict ${headers} + INCLUDEDIRS include ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/include + LINKDEF include/HallC_LinkDef.h + OPTIONS -p) +set(PCM_FILE ${CMAKE_CURRENT_BINARY_DIR}/HallCDict_rdict.pcm) + +#SET(lib_HEADERS ${lib_HEADERS}) +#SET(lib_SRCS ${lib_Fortran_SRCs} ${lib_SRCS} ${lib_DICTIONARY_SRC}) +#SET(lib_VERSION "${${PROJECT_NAME}_VERSION}") +#SET(lib_MAJOR_VERSION "${${PROJECT_NAME}_MAJOR_VERSION}") +#SET(lib_LIBRARY_PROPERTIES +# VERSION "${lib_VERSION}" +# SOVERSION "${lib_MAJOR_VERSION}" +# SUFFIX ".so") + +ADD_CUSTOM_TARGET(HallC_ROOTDICTS DEPENDS ${HCANA_src} ${headers} include/HallC_LinkDef.h HallCDict.cxx) +add_library(HallC SHARED + ${HCANA_src} HallCDict.cxx + ) + +add_library(HCANA::HallC ALIAS HallC) + +#Set target properties +target_include_directories(HallC + PUBLIC + $<INSTALL_INTERFACE:include> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} +) + +#target_compile_features(HallC PRIVATE cxx_auto_type) +target_compile_options(HallC PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>) + +target_link_libraries(HallC + #PUBLIC ${EXPAT_LIBRARIES} + #PUBLIC ${CMAKE_THREAD_LIBS_INIT} + PUBLIC ${ROOT_LIBRARIES} + PUBLIC PODD::HallA + PUBLIC PODD::Decode +) +#This is required so that the exported target has the name JSONUtils and not jsonutils +#set_target_properties(HallC PROPERTIES EXPORT_NAME hallC) + +add_executable(hc_analyzer main.C) +target_include_directories(hc_analyzer + PUBLIC + $<INSTALL_INTERFACE:include> + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} +) + +#target_compile_features(HallC PRIVATE cxx_auto_type) +target_compile_options(hc_analyzer PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>) +target_link_libraries(hc_analyzer + PUBLIC HallC + PUBLIC PODD::HallA + PUBLIC PODD::Decode + PUBLIC ${ROOT_LIBRARIES} +) + +install(TARGETS HallC hc_analyzer + EXPORT HCANA-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) + + +install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hcana) +install(FILES ${PCM_FILE} DESTINATION lib) + +#Export the targets to a script +install(EXPORT HCANA-targets + FILE + HCANATargets.cmake + NAMESPACE + HCANA:: + DESTINATION + ${INSTALL_CONFIGDIR} +) diff --git a/src/HallC_LinkDef.h b/src/HallC_LinkDef.h new file mode 100644 index 0000000..36bbc62 --- /dev/null +++ b/src/HallC_LinkDef.h @@ -0,0 +1,70 @@ +// Preamble to HallC_LinkDef.h file + +#ifdef __CINT__ + +#pragma link off all globals; +#pragma link off all classes; +#pragma link off all functions; + +#pragma link C++ global gHcParms; +#pragma link C++ global gHcDetectorMap; + +#pragma link C++ class Decoder::Scaler9001+; +#pragma link C++ class Decoder::Scaler9250+; +#pragma link C++ class THcAerogel+; +#pragma link C++ class THcAerogelHit+; +#pragma link C++ class THcAnalyzer+; +#pragma link C++ class THcBCMCurrent+; +#pragma link C++ class THcCherenkov+; +#pragma link C++ class THcCherenkovHit+; +#pragma link C++ class THcCoinTime+; +#pragma link C++ class THcConfigEvtHandler+; +#pragma link C++ class THcDC+; +#pragma link C++ class THcDCHit+; +#pragma link C++ class THcDCLookupTTDConv+; +#pragma link C++ class THcDCTimeToDistConv+; +#pragma link C++ class THcDCTrack+; +#pragma link C++ class THcDCWire+; +#pragma link C++ class THcDetectorMap+; +#pragma link C++ class THcDriftChamber+; +#pragma link C++ class THcDriftChamberPlane+; +#pragma link C++ class THcDummySpectrometer+; +#pragma link C++ class THcExtTarCor+; +#pragma link C++ class THcFormula+; +#pragma link C++ class THcHallCSpectrometer+; +#pragma link C++ class THcHitList+; +#pragma link C++ class THcHodoEff+; +#pragma link C++ class THcHodoHit+; +#pragma link C++ class THcHodoscope+; +#pragma link C++ class THcInterface+; +#pragma link C++ class THcParmList+; +#pragma link C++ class THcPeriodicReport+; +#pragma link C++ class THcPrimaryKine+; +#pragma link C++ class THcRaster+; +#pragma link C++ class THcRasteredBeam+; +#pragma link C++ class THcRasterRawHit+; +#pragma link C++ class THcRawAdcHit+; +#pragma link C++ class THcRawDCHit+; +#pragma link C++ class THcRawHit+; +#pragma link C++ class THcRawHodoHit+; +#pragma link C++ class THcRawShowerHit+; +#pragma link C++ class THcRawTdcHit+; +#pragma link C++ class THcReactionPoint+; +#pragma link C++ class THcRun+; +#pragma link C++ class THcRunParameters+; +#pragma link C++ class THcScalerEvtHandler+; +#pragma link C++ class THcScintillatorPlane+; +#pragma link C++ class THcSecondaryKine+; +#pragma link C++ class THcShowerArray+; +#pragma link C++ class THcShower+; +#pragma link C++ class THcShowerHit+; +#pragma link C++ class THcShowerPlane+; +#pragma link C++ class THcSignalHit+; +#pragma link C++ class THcSpacePoint+; +#pragma link C++ class THcTimeSyncEvtHandler+; +#pragma link C++ class THcTrigApp+; +#pragma link C++ class THcTrigDet+; +#pragma link C++ class THcTrigRawHit+; +#pragma link C++ class Decoder::TIBlobModule+; +// Postamble for HallC_Linkdef.h file +#endif diff --git a/src/include/HallC_LinkDef.h b/src/include/HallC_LinkDef.h new file mode 100644 index 0000000..36bbc62 --- /dev/null +++ b/src/include/HallC_LinkDef.h @@ -0,0 +1,70 @@ +// Preamble to HallC_LinkDef.h file + +#ifdef __CINT__ + +#pragma link off all globals; +#pragma link off all classes; +#pragma link off all functions; + +#pragma link C++ global gHcParms; +#pragma link C++ global gHcDetectorMap; + +#pragma link C++ class Decoder::Scaler9001+; +#pragma link C++ class Decoder::Scaler9250+; +#pragma link C++ class THcAerogel+; +#pragma link C++ class THcAerogelHit+; +#pragma link C++ class THcAnalyzer+; +#pragma link C++ class THcBCMCurrent+; +#pragma link C++ class THcCherenkov+; +#pragma link C++ class THcCherenkovHit+; +#pragma link C++ class THcCoinTime+; +#pragma link C++ class THcConfigEvtHandler+; +#pragma link C++ class THcDC+; +#pragma link C++ class THcDCHit+; +#pragma link C++ class THcDCLookupTTDConv+; +#pragma link C++ class THcDCTimeToDistConv+; +#pragma link C++ class THcDCTrack+; +#pragma link C++ class THcDCWire+; +#pragma link C++ class THcDetectorMap+; +#pragma link C++ class THcDriftChamber+; +#pragma link C++ class THcDriftChamberPlane+; +#pragma link C++ class THcDummySpectrometer+; +#pragma link C++ class THcExtTarCor+; +#pragma link C++ class THcFormula+; +#pragma link C++ class THcHallCSpectrometer+; +#pragma link C++ class THcHitList+; +#pragma link C++ class THcHodoEff+; +#pragma link C++ class THcHodoHit+; +#pragma link C++ class THcHodoscope+; +#pragma link C++ class THcInterface+; +#pragma link C++ class THcParmList+; +#pragma link C++ class THcPeriodicReport+; +#pragma link C++ class THcPrimaryKine+; +#pragma link C++ class THcRaster+; +#pragma link C++ class THcRasteredBeam+; +#pragma link C++ class THcRasterRawHit+; +#pragma link C++ class THcRawAdcHit+; +#pragma link C++ class THcRawDCHit+; +#pragma link C++ class THcRawHit+; +#pragma link C++ class THcRawHodoHit+; +#pragma link C++ class THcRawShowerHit+; +#pragma link C++ class THcRawTdcHit+; +#pragma link C++ class THcReactionPoint+; +#pragma link C++ class THcRun+; +#pragma link C++ class THcRunParameters+; +#pragma link C++ class THcScalerEvtHandler+; +#pragma link C++ class THcScintillatorPlane+; +#pragma link C++ class THcSecondaryKine+; +#pragma link C++ class THcShowerArray+; +#pragma link C++ class THcShower+; +#pragma link C++ class THcShowerHit+; +#pragma link C++ class THcShowerPlane+; +#pragma link C++ class THcSignalHit+; +#pragma link C++ class THcSpacePoint+; +#pragma link C++ class THcTimeSyncEvtHandler+; +#pragma link C++ class THcTrigApp+; +#pragma link C++ class THcTrigDet+; +#pragma link C++ class THcTrigRawHit+; +#pragma link C++ class Decoder::TIBlobModule+; +// Postamble for HallC_Linkdef.h file +#endif -- GitLab