diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..faebd40 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: + pull_request: + workflow_dispatch: + +jobs: + build: + name: Build (prof) + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install Apptainer + run: | + sudo add-apt-repository -y ppa:apptainer/ppa + sudo apt-get update -qq + sudo apt-get install -y apptainer + + - name: Setup CVMFS + uses: cvmfs-contrib/github-action-cvmfs@v4 + with: + cvmfs_repositories: "dune.opensciencegrid.org,larsoft.opensciencegrid.org,fermilab.opensciencegrid.org,oasis.opensciencegrid.org,singularity.opensciencegrid.org" + + # NOTE: bash -c (no -e) is required. UPS products/setup uses &&/|| chains + # that return non-zero when running under sh (e.g. "test $ss = csh && ..."). + # bash -e would treat those as fatal errors. Interactive singularity shells + # work because set -e is off by default. cmake exits are checked explicitly. + - name: Build + run: | + apptainer exec \ + --bind /cvmfs \ + --bind "${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}" \ + /cvmfs/singularity.opensciencegrid.org/fermilab/fnal-wn-sl7:latest \ + bash -c " + cd '${GITHUB_WORKSPACE}' + source ndcaf_setup.sh prof + cmake -S . -B build -DCMAKE_BUILD_TYPE=Release || exit \$? + cmake --build build -j\$(nproc) || exit \$? + " 2>&1 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..dc1e318 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,196 @@ +cmake_minimum_required(VERSION 3.20) +project(ND_CAFMaker LANGUAGES CXX) +set(${PROJECT_NAME}_CMAKE_PROJECT_VERSION_STRING 5.0.0) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +option(ENABLE_TMS "Enable TMS reconstruction branch filler" ON) +option(ENABLE_TESTEXE "Build the testHDF test executable" OFF) + +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +string( + APPEND + CMAKE_CXX_FLAGS + " -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion" + " -Wshadow -Wimplicit-fallthrough -Wextra-semi -Wold-style-cast" + " -fno-omit-frame-pointer") + +string(APPEND CMAKE_CXX_FLAGS_DEBUG " -fsanitize=address,undefined") + +string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " -fsanitize=address,undefined") + +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + string(APPEND CMAKE_CXX_FLAGS_DEBUG " -D_GLIBCXX_SANITIZE_STD_ALLOCATOR") +endif() + +add_compile_definitions(NO_ART) + +include(cmake/FindUPSPackage.cmake) + +# ROOT — always via ROOTConfig.cmake (ships with ROOT >= 6) +find_package(ROOT 6 REQUIRED COMPONENTS Core MathMore Geom EGPythia6 GenVector) +add_library(deps::root_glibs INTERFACE IMPORTED) +set_target_properties( + deps::root_glibs + PROPERTIES + INTERFACE_LINK_LIBRARIES + "ROOT::Core;ROOT::MathMore;ROOT::Geom;ROOT::EGPythia6;ROOT::GenVector") + +# Versions are pinned by ndcaf_setup.sh; env vars are set by UPS at runtime. + +find_program(GENIE_CONFIG genie-config HINTS "$ENV{GENIE_FQ_DIR}/bin" + REQUIRED) + +execute_process( + COMMAND ${GENIE_CONFIG} --libs + OUTPUT_VARIABLE _genie_libs + OUTPUT_STRIP_TRAILING_WHITESPACE) +add_library(deps::genie INTERFACE IMPORTED) +set_target_properties( + deps::genie PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "$ENV{GENIE_FQ_DIR}/include/GENIE" + INTERFACE_LINK_LIBRARIES "${_genie_libs}") + +if("$ENV{HDF5_FQ_DIR}" MATCHES "debug") + set(_hdf5_lib hdf5_cpp_debug) +else() + set(_hdf5_lib hdf5_cpp) +endif() + +find_ups_package( + TARGET_NAME deps::hdf5 + INC_VAR HDF5_INC + LIB_VAR HDF5_LIB + LIBS ${_hdf5_lib} + REQUIRED) + +find_ups_package( + TARGET_NAME deps::log4cpp + INC_VAR LOG4CPP_INC + LIB_VAR LOG4CPP_LIB + LIBS log4cpp + REQUIRED) + +find_ups_package( + TARGET_NAME deps::edepsim + INC_VAR EDEPSIM_INC + LIB_VAR EDEPSIM_LIB + LIBS edepsim + INC_SUFFIX EDepSim + REQUIRED) + +find_ups_package( + TARGET_NAME deps::boost_po + INC_VAR BOOST_INC + LIB_VAR BOOST_LIB + LIBS boost_program_options + REQUIRED) + +find_ups_package( + TARGET_NAME deps::fhiclcpp + INC_VAR FHICLCPP_INC + LIB_VAR FHICLCPP_LIB + LIBS fhiclcpp fhiclcpp_types + REQUIRED) + +find_ups_package( + TARGET_NAME deps::duneanaobj + INC_VAR DUNEANAOBJ_INC + LIB_VAR DUNEANAOBJ_LIB + LIBS duneanaobj_StandardRecord duneanaobj_StandardRecordFlat + REQUIRED) + +find_ups_package( + TARGET_NAME deps::tbb + LIB_VAR TBB_LIB + LIBS tbb + REQUIRED) + +find_ups_package( + TARGET_NAME deps::gsl + LIB_VAR GSL_LIB + LIBS gsl gslcblas + REQUIRED) + +find_ups_package( + TARGET_NAME deps::lhapdf + LIB_VAR LHAPDF_LIB + LIBS LHAPDF + REQUIRED) + +find_ups_package(TARGET_NAME deps::nlohmann INC_VAR NLOHMANN_JSON_INC) + +find_ups_package(TARGET_NAME deps::srproxy INC_VAR SRPROXY_INC) + +find_library( + CETLIB_LIB_PATH + NAMES cetlib + PATHS "$ENV{CETLIB_LIB}" + NO_DEFAULT_PATH) + +find_library( + CETLIB_EXCEPT_LIB_PATH + NAMES cetlib_except + PATHS "$ENV{CETLIB_EXCEPT_LIB}" + NO_DEFAULT_PATH) + +add_library(deps::cetlib INTERFACE IMPORTED) + +set_target_properties( + deps::cetlib + PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "$ENV{CETLIB_INC};$ENV{CETLIB_EXCEPT_INC}" + INTERFACE_LINK_LIBRARIES + "${CETLIB_LIB_PATH};${CETLIB_EXCEPT_LIB_PATH}") + +find_library( + LIBXML2_LIB_PATH + NAMES xml2 + PATHS "$ENV{LIBXML2_FQ_DIR}/lib" + NO_DEFAULT_PATH) +add_library(deps::libxml2 INTERFACE IMPORTED) +set_target_properties(deps::libxml2 PROPERTIES INTERFACE_LINK_LIBRARIES + "${LIBXML2_LIB_PATH}") + +find_library( + PYTHIA6_LIB_PATH + NAMES Pythia6 + PATHS "$ENV{PYTHIA6_LIBRARY}" + NO_DEFAULT_PATH) +add_library(deps::pythia6 INTERFACE IMPORTED) +set_target_properties(deps::pythia6 PROPERTIES INTERFACE_LINK_LIBRARIES + "${PYTHIA6_LIB_PATH}") + +find_library( + CURL_LIB_PATH + NAMES curl + PATHS /usr/lib64 + NO_DEFAULT_PATH) +add_library(deps::curl INTERFACE IMPORTED) +set_target_properties( + deps::curl PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "/usr/include/curl" + INTERFACE_LINK_LIBRARIES "${CURL_LIB_PATH}") + +# SANDReco — optional, auto-detected from environment (both modes) +if(DEFINED ENV{SANDRECO_INC} OR DEFINED ENV{SANDRECO_LIB}) + set(SAND_ENABLED TRUE) + find_library( + SANDRECO_LIB_PATH + NAMES Struct + PATHS "$ENV{SANDRECO_LIB}" + NO_DEFAULT_PATH) + add_library(deps::sand INTERFACE IMPORTED) + set_target_properties( + deps::sand PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "$ENV{SANDRECO_INC}" + INTERFACE_LINK_LIBRARIES "${SANDRECO_LIB_PATH}") + message(STATUS "SANDReco: enabled (SANDRECO_INC=$ENV{SANDRECO_INC})") +else() + set(SAND_ENABLED FALSE) + add_library(deps::sand INTERFACE IMPORTED) # no-op target for unconditional + # linking + message(STATUS "SANDReco: disabled (SANDRECO_INC/LIB not set)") +endif() + +add_subdirectory(src) diff --git a/Makefile b/Makefile deleted file mode 100644 index c16a2d7..0000000 --- a/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -export CXX = g++ -export CXXFLAGS = -g -Wall -fPIC -DNO_ART -O2 -export ROOTFLAGS = $(shell root-config --cflags) -export INCLUDE = -I$(HDF5_INC) -INCLUDE += -I$(GENIE_INC)/GENIE -INCLUDE += -I$(LOG4CPP_INC) -INCLUDE += -I$(EDEPSIM_INC)/EDepSim -#INCLUDE += -I$(NUSYST) -I$(NUSYST)/build/systematicstools/src/systematicstools -#INCLUDE += -I$(NUSYST)/build/Linux/include/ -INCLUDE += -I$(BOOST_INC) -INCLUDE += -I$(CETLIB_INC) -INCLUDE += -I$(CETLIB_EXCEPT_INC) -INCLUDE += -I$(NLOHMANN_JSON_INC) -INCLUDE += -I$(FHICLCPP_INC) -INCLUDE += -I$(NLOHMANN_JSON_INC) -INCLUDE += -I$(DUNEANAOBJ_INC) -INCLUDE += -I$src -export LDLIBS += -L$(LOG4CPP_LIB) -llog4cpp -LDLIBS += -L$(TBB_LIB) -ltbb -LDLIBS += -L$(LIBXML2_FQ_DIR)/lib -lxml2 - -# the library name is different in debug mode, ugh -ifeq ($(findstring debug, $(HDF5_FQ_DIR)), debug) - LDLIBS += -L$(HDF5_LIB) -lhdf5_cpp_debug -else - LDLIBS += -L$(HDF5_LIB) -lhdf5_cpp -endif - -LDLIBS += -L$(PYTHIA6) -lPythia6 - -#LDLIBS += -L$(NUSYST)/build/Linux/lib -lsystematicstools_utility -lsystematicstools_interpreters -lsystematicstools_interface -lsystematicstools_systproviders -#LDLIBS += -L$(NUSYST)/build/nusystematics/artless -lnusystematics_systproviders -LDLIBS += -L$(DUNEANAOBJ_LIB) -lduneanaobj_StandardRecord -lduneanaobj_StandardRecordFlat - -LDLIBS += -L$(GSL_LIB) -lgsl -lgslcblas -LDLIBS += -L$(LHAPDF_LIB) -lLHAPDF -LDLIBS += $(shell genie-config --libs) -LDLIBS += $(shell root-config --glibs) -LDLIBS += -lMathMore -LDLIBS += -lGeom -lEGPythia6 -lGenVector -LDLIBS += -L$(BOOST_LIB) -lboost_program_options -LDLIBS += -L$(CETLIB_LIB) -L$(CETLIB_EXCEPT_LIB) -lcetlib -lcetlib_except -LDLIBS += -L$(FHICLCPP_LIB) -lfhiclcpp -lfhiclcpp_types -LDLIBS += -L$(EDEPSIM_LIB) -ledepsim -export LIBDIR = $(PWD)/lib -export BINDIR = $(PWD)/bin - -SUBDIRS = src - -all: - test -d $(LIBDIR) || mkdir $(LIBDIR) - test -d $(BINDIR) || mkdir $(BINDIR) - +make -C src $(MAKECMDGOALS) - -clean: - rm -f $(LIBDIR)/* - rm -f $(BINDIR)/* - rm -f $(wildcard AutoDict_*) - +make -C src clean - -test: - +make -C src $(MAKECMDGOALS) diff --git a/README.md b/README.md index 80cba2c..7f0c779 100644 --- a/README.md +++ b/README.md @@ -34,11 +34,62 @@ To add variables and inspect what is set and how, check `src/Params.h`. ## Building -Once you've set up your environment, it's just a matter of typing + +### Build environment + +The build requires the UPS dependencies provided by the Fermilab software stack. +The recommended way to get a compatible environment is via the Singularity image: + +``` +singularity shell --bind /cvmfs /cvmfs/singularity.opensciencegrid.org/fermilab/fnal-wn-sl7:latest +``` + +Once inside the container, source the setup script as usual before configuring: + ``` -make +source ndcaf_setup.sh {prof|debug} ``` -in the `ND_CAFMaker` folder, which goes through and builds the objects, library and single `makeCAF` executable. + +### CMake configuration + +Once you've set up your environment, configure and build with CMake: + +``` +cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug +cmake --build build +``` + +The build products are installed under `build/` by default. The `makeCAF` executable will be at `build/bin/makeCAF`. + +### CMake build options + +| Option | Default | Description | +|--------|---------|-------------| +| `ENABLE_TMS` | `ON` | Enable TMS reconstruction branch filler | +| `ENABLE_TESTEXE` | `OFF` | Build the `testHDF` test executable | +| `CMAKE_BUILD_TYPE` | — | Set to `Debug` or `Release` (overrides the `-g -O2` defaults) | + +Example: disable TMS and build the test executable: + +``` +cmake -S . -B build -DENABLE_TMS=OFF -DENABLE_TESTEXE=ON +cmake --build build +``` + +### Installing + +To install the library and executables to a custom prefix: + +``` +cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/install +cmake --build build --target install +``` + +This will place: +- `libND_CAFMaker.so` → `/lib/` +- `makeCAF` (and optionally `testHDF`) → `/bin/` + +If no `CMAKE_INSTALL_PREFIX` is given, the default system prefix (`/usr/local`) is used. # Running There is currently only one main executable, `makeCAF`, which is controlled entirely by the input `fhicl` file. To run with the `fhicl` file that was specified under `Inputs`, do diff --git a/cmake/FindUPSPackage.cmake b/cmake/FindUPSPackage.cmake new file mode 100644 index 0000000..d6a9444 --- /dev/null +++ b/cmake/FindUPSPackage.cmake @@ -0,0 +1,59 @@ +# cmake-format: off +# ── find_ups_package ─────────────────────────────────────────────────────────── +# Creates an INTERFACE IMPORTED target from a UPS package located via +# environment variables set by ndcaf_setup.sh (NOT from system paths). +# +# Usage: +# find_ups_package( +# TARGET_NAME # e.g. deps::hdf5 +# [INC_VAR ] # include dir env var, e.g. HDF5_INC +# [INC_SUFFIX ] # appended to inc dir, e.g. EDepSim +# [LIB_VAR ] # lib dir env var, e.g. HDF5_LIB +# [LIBS ...] # library names without lib prefix / .so +# [REQUIRED] +# ) +# cmake-format: on + +function(find_ups_package) + cmake_parse_arguments(UPS "REQUIRED" "TARGET_NAME;INC_VAR;INC_SUFFIX;LIB_VAR" + "LIBS" ${ARGN}) + + if(NOT UPS_TARGET_NAME) + message(FATAL_ERROR "find_ups_package: TARGET_NAME is required") + endif() + + if(UPS_INC_VAR) + set(_inc_dir "$ENV{${UPS_INC_VAR}}") + if(UPS_INC_SUFFIX) + set(_inc_dir "${_inc_dir}/${UPS_INC_SUFFIX}") + endif() + endif() + + set(_libs "") + if(UPS_LIB_VAR AND UPS_LIBS) + foreach(_lib IN LISTS UPS_LIBS) + find_library( + _found_${_lib} + NAMES ${_lib} + PATHS "$ENV{${UPS_LIB_VAR}}" + NO_DEFAULT_PATH) + if(_found_${_lib}) + list(APPEND _libs "${_found_${_lib}}") + elseif(UPS_REQUIRED) + message( + FATAL_ERROR + "find_ups_package: '${_lib}' not found in $ENV{${UPS_LIB_VAR}}") + endif() + endforeach() + endif() + + add_library(${UPS_TARGET_NAME} INTERFACE IMPORTED) + if(_inc_dir) + set_target_properties( + ${UPS_TARGET_NAME} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_inc_dir}") + endif() + if(_libs) + set_target_properties(${UPS_TARGET_NAME} PROPERTIES INTERFACE_LINK_LIBRARIES + "${_libs}") + endif() +endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..fac9f7b --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,79 @@ +# Shared library libND_CAFMaker.so +set(LIB_SOURCES + CAF.cxx + beam/IFBeam.cxx + reco/DLP_h5_classes.cxx + reco/MINERvARecoBranchFiller.cxx + reco/MLNDLArRecoBranchFiller.cxx + reco/NDLArDLPH5DatasetReader.cxx + reco/NDLArMINERvAMatchRecoFiller.cxx + reco/NDLArTMSMatchRecoFiller.cxx + reco/NDLArTMSUniqueMatchRecoFiller.cxx + reco/PandoraLArRecoNDBranchFiller.cxx + reco/SANDRecoBranchFiller.cxx # always compiled; ENABLE_SAND gates behaviout + reco/TMSRecoBranchFiller.cxx + reco/readH5/DatasetBuffer.cxx + reco/readH5/H5DataView.cxx + reco/readH5/IH5Viewer.cxx + truth/FillTruth.cxx + util/FloatMath.cxx + util/GENIEBannerBypass.cxx + util/GENIEQuiet.cxx + util/IFBeamUtils.cxx + util/Loggable.cxx + util/Logger.cxx + util/Progress.cxx) + +add_library(ND_CAFMaker SHARED ${LIB_SOURCES}) + +# Expose src/ itself so #include "CAF.h" etc. work for consumers +target_include_directories(ND_CAFMaker PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") + +# Enable SAND code paths only when the library was detected at configure time +if(SAND_ENABLED) + target_compile_definitions(ND_CAFMaker PRIVATE ENABLE_SAND) +endif() + +target_link_libraries( + ND_CAFMaker + PUBLIC deps::log4cpp + deps::tbb + deps::libxml2 + deps::hdf5 + deps::pythia6 + deps::duneanaobj + deps::gsl + deps::lhapdf + deps::genie + deps::root_glibs + deps::boost_po + deps::cetlib + deps::fhiclcpp + deps::edepsim + deps::nlohmann + deps::srproxy + deps::curl + deps::sand) + +# Executable makeCAF +set_source_files_properties(makeCAF.C PROPERTIES LANGUAGE CXX) +add_executable(makeCAF makeCAF.C) +target_include_directories(makeCAF PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") +target_link_libraries(makeCAF PRIVATE ND_CAFMaker) + +# Executable testHDF (optional, off by default) +if(ENABLE_TESTEXE) + set_source_files_properties(testHDF.C PROPERTIES LANGUAGE CXX) + add_executable(testHDF testHDF.C) + target_include_directories(testHDF PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}") + target_link_libraries(testHDF PRIVATE ND_CAFMaker) +endif() + +# Install rules +install(TARGETS ND_CAFMaker LIBRARY DESTINATION lib) + +install(TARGETS makeCAF RUNTIME DESTINATION bin) + +if(ENABLE_TESTEXE) + install(TARGETS testHDF RUNTIME DESTINATION bin) +endif() diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 3a630c3..0000000 --- a/src/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -SRCDIR = $(shell pwd) -SOURCES = $(shell find $(SRCDIR) -name '*.cxx') -HEADERS = $(shell find $(SRCDIR) -name '*.h') -OBJS = $(patsubst %.cxx, %.o, $(SOURCES)) - -INCLUDE += -I$(SRCDIR) -I$(SRPROXY_INC) -I/usr/include/curl -LDLIBS += -L$(SANDRECO_LIB) -lStruct -L/usr/lib64 -lcurl - -ENABLE_TMS := 1 -ifneq ($(ENABLE_TMS),1) - CXXFLAGS += -DDISABLE_TMS -endif - -LIBNAME = ND_CAFMaker -LIBS = $(LIBDIR)/lib$(LIBNAME).so -BINS = $(BINDIR)/makeCAF - -ENABLE_SAND_DICT ?= 0 - -DEPSDIR = $(SRCDIR)/deps -STRUCT_HDR = $(DEPSDIR)/struct.h -STRUCT_LINKDEF = $(DEPSDIR)/StructLinkDef.h -STRUCT_DICT_SRC = $(LIBDIR)/StructDict.cxx -STRUCT_DICT_OBJ = $(LIBDIR)/StructDict.o -STRUCT_LIB = $(LIBDIR)/libStruct.so -STRUCT_PCM = $(LIBDIR)/libStruct_rdict.pcm - - -SANDRECO_TAG := v02_00_00 -SANDRECO_BASE := https://raw.githubusercontent.com/DUNE/sandreco/$(SANDRECO_TAG)/include - -ifeq ($(ENABLE_SAND_DICT),1) - - $(shell mkdir -p $(DEPSDIR)) - $(shell wget -N $(SANDRECO_BASE)/struct.h -P $(DEPSDIR)) - $(shell wget -N $(SANDRECO_BASE)/StructLinkDef.h -P $(DEPSDIR)) - - INCLUDE += -I$(DEPSDIR) - SAND_OPT = -DENABLE_SAND - LDLIBS_EXEC += -L$(LIBDIR) -lStruct - DICT_TARGETS = $(STRUCT_LIB) - -else - - DICT_TARGETS = - LDLIBS_EXEC = - SAND_OPT = - -endif - -RPATH_FLAG = -Wl,-rpath,$(LIBDIR) - -all: $(BINS) - -test: $(BINDIR)/testHDF - -%.o : %.cxx $(if $(wildcard %.h),%.h,) - $(CXX) $(CXXFLAGS) $(ROOTFLAGS) $(INCLUDE) -fPIC $(SAND_OPT) -o $@ -c $< - - -$(LIBDIR)/lib$(LIBNAME).so: $(OBJS) $(HEADERS) - $(CXX) $(CXXFLAGS) $(ROOTFLAGS) -shared $(RPATH_FLAG) -o $@ $(OBJS) - -ifeq ($(ENABLE_SAND_DICT),1) - - $(STRUCT_DICT_SRC): $(STRUCT_HDR) $(STRUCT_LINKDEF) - $(ROOTSYS)/bin/rootcling -f $@ -s $(STRUCT_LIB) -rml libStruct.so -c $(INCLUDE) $^ - - $(STRUCT_DICT_OBJ): $(STRUCT_DICT_SRC) - $(CXX) $(CXXFLAGS) $(ROOTFLAGS) $(INCLUDE) -fPIC -o $@ -c $< - - $(STRUCT_LIB): $(STRUCT_DICT_OBJ) - $(CXX) -shared -o $@ $^ - -endif - - -$(BINDIR)/makeCAF: $(LIBS) makeCAF.C $(DICT_TARGETS) - $(CXX) $(CXXFLAGS) $(ROOTFLAGS) $(INCLUDE) \ - -L$(LIBDIR) -l$(LIBNAME) \ - $(LDLIBS) $(LDLIBS_EXEC) \ - $(RPATH_FLAG) \ - -o $@ makeCAF.C - -$(BINDIR)/testHDF: $(LIBS) testHDF.C $(DICT_TARGETS) - $(CXX) $(CXXFLAGS) $(ROOTFLAGS) $(INCLUDE) \ - -L$(LIBDIR) -l$(LIBNAME) \ - $(LDLIBS) $(LDLIBS_EXEC) \ - $(RPATH_FLAG) \ - -o $@ testHDF.C - -# should *really* make a .d rule for the objects -# to get their dependencies on the headers right, but ... not now - - -clean: - rm -f $(OBJS) - rm -f $(LIBS) - rm -f $(BINS) - rm -f $(wildcard AutoDict_*) - rm -f $(STRUCT_DICT_SRC) $(STRUCT_DICT_OBJ) - rm -f $(STRUCT_LIB) $(STRUCT_PCM) - rm -f $(STRUCT_HDR) $(STRUCT_LINKDEF) \ No newline at end of file diff --git a/src/reco/SANDRecoBranchFiller.cxx b/src/reco/SANDRecoBranchFiller.cxx index 48fc764..5951805 100644 --- a/src/reco/SANDRecoBranchFiller.cxx +++ b/src/reco/SANDRecoBranchFiller.cxx @@ -208,7 +208,7 @@ SANDRecoBranchFiller::SANDRecoBranchFiller(const std::string &) std::cerr << "[WARNING] SANDRecoBranchFiller: SAND code is not enabled in this build.\n" "To enable SAND support, build with 'make ENABLE_SAND_DICT=1'.\n"; } -std::deque SANDRecoBranchFiller::GetTriggers(int) const { return {}; } +std::deque SANDRecoBranchFiller::GetTriggers(int, bool) const { return {}; } void SANDRecoBranchFiller::_FillRecoBranches(const Trigger &, caf::StandardRecord &, const cafmaker::Params &, const TruthMatcher *) const {} } #endif