Skip to content
Snippets Groups Projects
Commit b8df39a0 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Added cmake build.

This repo along with hallac_evio and analyzer all have "cmake" branches
with complete cmake builds.
parent 96fa894d
No related branches found
No related tags found
No related merge requests found
......@@ -58,3 +58,4 @@ examples/cache
# Working directory
work
build/
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)
@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)
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)
# 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)
## 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()
## 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()
#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
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}
)
// 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
// 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment