From 02496711b4274027e3b8182a78677b6a65e7255b Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Thu, 1 Apr 2021 14:26:26 +0200 Subject: [PATCH] make PRgeHandler to a shared libs. Adopted Nonlocal and PMagProximity accordingly. --- src/classes/CMakeLists.txt | 38 +++- src/classes/PRgeHandler.pc.in | 10 + src/external/MagProximity/CMakeLists.txt | 4 +- src/external/MagProximity/PMPRgeHandler.cpp | 212 ------------------ src/external/MagProximity/PMPRgeHandler.h | 53 ----- .../MagProximity/PMagProximityFitter.cpp | 2 +- .../MagProximity/PMagProximityFitter.h | 8 +- .../MagProximity/mag_proximity_startup.xml | 7 +- src/external/Nonlocal/CMakeLists.txt | 18 +- 9 files changed, 58 insertions(+), 294 deletions(-) create mode 100644 src/classes/PRgeHandler.pc.in delete mode 100644 src/external/MagProximity/PMPRgeHandler.cpp delete mode 100644 src/external/MagProximity/PMPRgeHandler.h diff --git a/src/classes/CMakeLists.txt b/src/classes/CMakeLists.txt index 60f7b06b..122782a1 100644 --- a/src/classes/CMakeLists.txt +++ b/src/classes/CMakeLists.txt @@ -1,4 +1,4 @@ -#--- build the PMusr and PUserFcnBase libs ------------------------------------ +#--- build the PMusr, PUserFcnBase, and PRgeHandler libs ---------------------- #--- generate necessary dictionaries ------------------------------------------ set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include) @@ -53,6 +53,18 @@ root_generate_dictionary( -I${FFTW3_INCLUDE_DIR} -I${MUSRFIT_INC} MODULE PUserFcnBase ) +root_generate_dictionary( + PRgeHandlerDict + PRgeHandler.h + OPTIONS + -I${NONLOCAL_INC} + -I${MUSRFIT_INC} + -I${CMAKE_CURRENT_SOURCE_DIR} + -inlineInputHeader + LINKDEF ${MUSRFIT_INC}/PRgeHandlerLinkDef.h + MODULE PRgeHandler +) + #--- create pkg-config info --------------------------------------------------- set(prefix "${CMAKE_INSTALL_PREFIX}") @@ -64,6 +76,8 @@ set(MUSR_LIBRARY_NAME "PMusr") configure_file("PMusr.pc.in" "PMusr.pc" @ONLY) set(USERFCN_LIBRARY_NAME "PUserFcnBase") configure_file("PUserFcnBase.pc.in" "PUserFcnBase.pc" @ONLY) +set(PRGEHANDLER_LIBRARY_NAME "PRgeHandler") +configure_file("PRgeHandler.pc.in" "PRgeHandler.pc" @ONLY) #--- lib creation ------------------------------------------------------------- add_library(PMusr SHARED @@ -119,6 +133,11 @@ add_library(PUserFcnBase SHARED PUserFcnBaseDict.cxx ) +add_library(PRgeHandler SHARED + PRgeHandler.cpp + PRgeHandlerDict.cxx +) + #--- set target properties, e.g. version -------------------------------------- set_target_properties(PMusr PROPERTIES @@ -128,11 +147,20 @@ set_target_properties(PUserFcnBase PROPERTIES VERSION ${MUSR_VERSION} ) +set_target_properties(PRgeHandler + PROPERTIES + VERSION ${MUSR_VERSION} +) + #--- make sure that the include directory is found ---------------------------- target_include_directories( PUserFcnBase BEFORE PRIVATE $ ) +target_include_directories( + PRgeHandler BEFORE PRIVATE $ +) + #--- add OpenMP compile options if needed ------------------------------------- if (OpenMP_FOUND) target_compile_options(PMusr PUBLIC ${OpenMP_CXX_FLAGS}) @@ -174,11 +202,15 @@ if (DKS_FOUND) endif (DKS_FOUND) target_link_libraries(PUserFcnBase ${ROOT_LIBRARIES}) +target_link_libraries(PRgeHandler ${ROOT_LIBRARIES}) target_link_libraries(PMusr ${DependOnLibs}) #--- install PUserFcnBase solib ----------------------------------------------- install(TARGETS PUserFcnBase DESTINATION lib) +#--- install PRgeHandler solib ----------------------------------------------- +install(TARGETS PRgeHandler DESTINATION lib) + #--- install PMusr solib ------------------------------------------------------ install(TARGETS PMusr DESTINATION lib) @@ -190,6 +222,8 @@ install( ${CMAKE_CURRENT_BINARY_DIR}/libPMusrCanvas.rootmap ${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0_rdict.pcm ${CMAKE_CURRENT_BINARY_DIR}/libPMusrT0.rootmap + ${CMAKE_CURRENT_BINARY_DIR}/libPRgeHandler_rdict.pcm + ${CMAKE_CURRENT_BINARY_DIR}/libPRgeHandler.rootmap ${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandler_rdict.pcm ${CMAKE_CURRENT_BINARY_DIR}/libPStartupHandler.rootmap ${CMAKE_CURRENT_BINARY_DIR}/libPUserFcnBase_rdict.pcm @@ -212,6 +246,7 @@ install( ${MUSRFIT_INC}/PMusr.h ${MUSRFIT_INC}/PMusrT0.h ${MUSRFIT_INC}/PPrepFourier.h + ${MUSRFIT_INC}/PRgeHandler.h ${MUSRFIT_INC}/PRunAsymmetry.h ${MUSRFIT_INC}/PRunAsymmetryBNMR.h ${MUSRFIT_INC}/PRunAsymmetryRRF.h @@ -231,6 +266,7 @@ install( #--- install pkg-config info -------------------------------------------------- install( FILES ${CMAKE_CURRENT_BINARY_DIR}/PUserFcnBase.pc + ${CMAKE_CURRENT_BINARY_DIR}/PRgeHandler.pc ${CMAKE_CURRENT_BINARY_DIR}/PMusr.pc DESTINATION lib/pkgconfig ) diff --git a/src/classes/PRgeHandler.pc.in b/src/classes/PRgeHandler.pc.in new file mode 100644 index 00000000..674345df --- /dev/null +++ b/src/classes/PRgeHandler.pc.in @@ -0,0 +1,10 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: PRgeHandler +Description: C++ shared library providing the support for handling of TrimSP rge-files +Version: @MUSR_VERSION@ +Libs: -L${libdir} -l@PRGEHANDLER_LIBRARY_NAME@ +Cflags: -I${includedir} diff --git a/src/external/MagProximity/CMakeLists.txt b/src/external/MagProximity/CMakeLists.txt index 2e09a573..9da18aa6 100644 --- a/src/external/MagProximity/CMakeLists.txt +++ b/src/external/MagProximity/CMakeLists.txt @@ -38,7 +38,6 @@ configure_file("PMagProximityFitter.pc.in" "PMagProximityFitter.pc" @ONLY) add_library(PMagProximityFitter SHARED PMagProximityFitter.cpp PMagProximityFitterDict.cxx - PMPRgeHandler.cpp PMPStartupHandler.cpp PMPStartupHandlerDict.cxx ) @@ -57,7 +56,7 @@ set_target_properties(PMagProximityFitter ) #--- add library dependencies ------------------------------------------------- -target_link_libraries(PMagProximityFitter ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PUserFcnBase) +target_link_libraries(PMagProximityFitter ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PRgeHandler PUserFcnBase) #--- install PMagProximityFitter solib ---------------------------------------- install(TARGETS PMagProximityFitter DESTINATION lib) @@ -76,7 +75,6 @@ install( FILES PMagProximity.h PMagProximityFitter.h - PMPRgeHandler.h PMPStartupHandler.h DESTINATION include diff --git a/src/external/MagProximity/PMPRgeHandler.cpp b/src/external/MagProximity/PMPRgeHandler.cpp deleted file mode 100644 index fad7a898..00000000 --- a/src/external/MagProximity/PMPRgeHandler.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/*************************************************************************** - - PMPRgeHandler.cpp - - Author: Andreas Suter - e-mail: andreas.suter@psi.ch - -***************************************************************************/ - -/*************************************************************************** - * Copyright (C) 2011-2021 by Andreas Suter * - * andreas.suter@psi.ch * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include - -#include -#include - -#include "PMPRgeHandler.h" - -//-------------------------------------------------------------------------- -// Constructor -//-------------------------------------------------------------------------- -/** - * - */ -PMPRgeHandler::PMPRgeHandler(const PStringVector &rgeDataPathList, const PDoubleVector &rgeDataEnergyList) -{ - fIsValid = false; - - fIsValid = LoadRgeData(rgeDataPathList, rgeDataEnergyList); -} - -//-------------------------------------------------------------------------- -// Destructor -//-------------------------------------------------------------------------- -/** - * - */ -PMPRgeHandler::~PMPRgeHandler() -{ - fRgeDataList.clear(); -} - -//-------------------------------------------------------------------------- -// GetRgeEnergyIndex -//-------------------------------------------------------------------------- -/** - * - * \param energy in (keV) - */ -Int_t PMPRgeHandler::GetRgeEnergyIndex(const Double_t energy) -{ - Int_t idx = -1; - - for (UInt_t i=0; i(dist/(fRgeDataList[index].stoppingDistance[1]-fRgeDataList[index].stoppingDistance[0])); - - if (distIdx >= fRgeDataList[index].stoppingDistance.size()) { - rgeVal = 0.0; - } else { - rgeVal = fRgeDataList[index].stoppingAmplitude[distIdx] + - (fRgeDataList[index].stoppingAmplitude[distIdx+1] - fRgeDataList[index].stoppingAmplitude[distIdx]) * - (dist-fRgeDataList[index].stoppingDistance[distIdx])/(fRgeDataList[index].stoppingDistance[distIdx+1]-fRgeDataList[index].stoppingDistance[distIdx]); - } - - return rgeVal; -} - -//-------------------------------------------------------------------------- -// GetRgeValue -//-------------------------------------------------------------------------- -/** - * - * \param energy in (keV) - * \param dist in (nm) - */ -Double_t PMPRgeHandler::GetRgeValue(const Double_t energy, const Double_t dist) -{ - // check if energy is present in rge data list - Int_t idx = -1; - - for (UInt_t i=0; iGetTrimSpDataPathList(), fStartupHandler->GetTrimSpDataVectorList()); + fRgeHandler = new PRgeHandler(); if (!fRgeHandler->IsValid()) { std::cout << std::endl << ">> PMagProximityFitterGlobal::PMagProximityFitterGlobal **PANIC ERROR**"; std::cout << std::endl << ">> rge data handler too unhappy. Will terminate unfriendly, sorry."; diff --git a/src/external/MagProximity/PMagProximityFitter.h b/src/external/MagProximity/PMagProximityFitter.h index cdcce124..fdd34d63 100644 --- a/src/external/MagProximity/PMagProximityFitter.h +++ b/src/external/MagProximity/PMagProximityFitter.h @@ -32,7 +32,7 @@ #include "PUserFcnBase.h" #include "PMPStartupHandler.h" -#include "PMPRgeHandler.h" +#include "PRgeHandler.h" class PMagProximityFitterGlobal { @@ -42,15 +42,15 @@ class PMagProximityFitterGlobal Bool_t IsValid() { return fValid; } virtual void CalculateField(const std::vector ¶m) const; - virtual Int_t GetEnergyIndex(const Double_t energy) { return fRgeHandler->GetRgeEnergyIndex(energy); } - virtual Double_t GetMuonStoppingDensity(const Int_t energyIndex, const Double_t z) const { return fRgeHandler->GetRgeValue(energyIndex, z); } + virtual Int_t GetEnergyIndex(const Double_t energy) { return fRgeHandler->GetEnergyIndex(energy); } + virtual Double_t GetMuonStoppingDensity(const Int_t energyIndex, const Double_t z) const { return fRgeHandler->Get_n(energyIndex, z); } virtual Double_t GetMagneticField(const Double_t z) const; private: Bool_t fValid; PMPStartupHandler *fStartupHandler; - PMPRgeHandler *fRgeHandler; + PRgeHandler *fRgeHandler; mutable std::vector fPreviousParam; diff --git a/src/external/MagProximity/mag_proximity_startup.xml b/src/external/MagProximity/mag_proximity_startup.xml index d23326f3..402ac07e 100644 --- a/src/external/MagProximity/mag_proximity_startup.xml +++ b/src/external/MagProximity/mag_proximity_startup.xml @@ -3,13 +3,14 @@ contains meta file infromation of the needed trim.sp files. - - /mnt/home/nemu/analysis/2010/EuS-Co/trimsp2/EuS-Co_E + + /afs/psi.ch/project/nemu/analysis/2010/EuS-Co/trimsp2 + EuS-Co_E 5030 6330 7530 8730 - + diff --git a/src/external/Nonlocal/CMakeLists.txt b/src/external/Nonlocal/CMakeLists.txt index e4fc1ee9..f55827a9 100644 --- a/src/external/Nonlocal/CMakeLists.txt +++ b/src/external/Nonlocal/CMakeLists.txt @@ -2,7 +2,6 @@ #--- generate necessary dictionaries ------------------------------------------ set(MUSRFIT_INC ${CMAKE_SOURCE_DIR}/src/include) -set(MUSRFIT_CLASSES ${CMAKE_SOURCE_DIR}/src/classes) set(NONLOCAL_INC ${CMAKE_SOURCE_DIR}/src/external/Nonlocal) # ROOT requires that the dictonary header files are found at configuration time. # Hence, target_include_directories cannot be used here because, targets are @@ -31,17 +30,6 @@ root_generate_dictionary( LINKDEF PNL_StartupHandlerLinkDef.h MODULE PNL_StartupHandler ) -root_generate_dictionary( - PRgeHandlerDict - PRgeHandler.h - OPTIONS - -I${NONLOCAL_INC} - -I${MUSRFIT_INC} - -I${CMAKE_CURRENT_SOURCE_DIR} - -inlineInputHeader - LINKDEF ${MUSRFIT_INC}/PRgeHandlerLinkDef.h - MODULE PRgeHandler -) #--- create pkg-config info --------------------------------------------------- set(prefix "${CMAKE_INSTALL_PREFIX}") @@ -56,8 +44,6 @@ configure_file("PNL_PippardFitter.pc.in" "PNL_PippardFitter.pc" @ONLY) add_library(PNL_PippardFitter SHARED PNL_PippardFitter.cpp PNL_PippardFitterDict.cxx - ${MUSRFIT_CLASSES}/PRgeHandler.cpp - PRgeHandlerDict.cxx PNL_StartupHandler.cpp PNL_StartupHandlerDict.cxx ) @@ -77,7 +63,7 @@ set_target_properties(PNL_PippardFitter ) #--- add library dependencies ------------------------------------------------- -target_link_libraries(PNL_PippardFitter ${Boost_LIBRARIES} ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PUserFcnBase) +target_link_libraries(PNL_PippardFitter ${Boost_LIBRARIES} ${FFTW3_LIBRARY} ${ROOT_LIBRARIES} PRgeHandler PUserFcnBase) #--- install PNL_PippardFitter solib ------------------------------------------ install(TARGETS PNL_PippardFitter DESTINATION lib) @@ -87,8 +73,6 @@ install( FILES ${CMAKE_CURRENT_BINARY_DIR}/libPNL_PippardFitter_rdict.pcm ${CMAKE_CURRENT_BINARY_DIR}/libPNL_PippardFitter.rootmap ${CMAKE_CURRENT_BINARY_DIR}/libPNL_StartupHandler_rdict.pcm - ${CMAKE_CURRENT_BINARY_DIR}/libPRgeHandler.rootmap - ${CMAKE_CURRENT_BINARY_DIR}/libPRgeHandler_rdict.pcm ${CMAKE_CURRENT_BINARY_DIR}/libPNL_StartupHandler.rootmap DESTINATION lib )