cmake_minimum_required(VERSION 3.5) project(HypoTestInv LANGUAGES CXX) # Using ROOT's CONFIG mode search # The Makefile method also included (non-explicitly, though): Foam Html MathMore Minuit XMLParser list(APPEND CMAKE_PREFIX_PATH /Users/cashcrusaders/Applications/root-6.16.00) find_package(ROOT CONFIG REQUIRED COMPONENTS RooStats RooFit RooFitCore HistFactory) if(TARGET ROOT::Minuit2) message(STATUS "Minuit2 included in ROOT") else() message(STATUS "Minuit2 missing from ROOT, using standalone edition") find_package(Minuit2 CONFIG REQUIRED) endif() # Set flags and things automagically (not ideal, but simplest for now) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/) include("${ROOT_USE_FILE}") message(STATUS "Root use_file Path is: " ${ROOT_USE_FILE}) # This function adds a LinkDef and ROOT dictionary for a library function(ADD_LIBRARY_LINK_DEF NAME) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/RootDict/${NAME}Dict_LinkDef.h" "#ifdef __CINT__\n" "#pragma link C++ nestedclasses;\n" "#pragma link C++ nestedtypedefs;\n" "#pragma link C++ defined_in \"${CMAKE_CURRENT_SOURCE_DIR}/inc/${NAME}.h\";\n" "#endif\n") root_generate_dictionary( G__${NAME} ${NAME}.h LINKDEF "${CMAKE_CURRENT_BINARY_DIR}/RootDict/${NAME}Dict_LinkDef.h" ) add_library(${NAME} G__${NAME} ${NAME}) target_link_libraries(${NAME} INTERFACE ${ROOT_LIBRARIES}) # Link to ROOT's Minuit 2 if available, otherwise standalone edition if(TARGET ROOT::Minuit2) target_link_libraries(${NAME} INTERFACE ROOT::Minuit2) else() target_link_libraries(${NAME} INTERFACE Minuit2::Minuit2) endif() endfunction() # Adding core libraries add_library_link_def(WorkspaceCalculator) add_library_link_def(ProfileLikelihoodTestStatEnhanced) add_library_link_def(LimitCalculator) add_library_link_def(LikelihoodCalculator) add_library_link_def(PValueCalculator) add_library_link_def(FrequentistCalculator) add_library_link_def(AsymptoticCalculator) add_library_link_def(HybridCalculator) add_library_link_def(HypoTestInverter) add_library_link_def(HypoTestCalculatorGeneric) add_library_link_def(ToyMCSampler) add_library_link_def(RooSimultaneous) add_library_link_def(HistFactorySimultaneous) #add_library_link_def(RooAbsBinning) #add_library_link_def(RooAbsCache) #add_library_link_def(RooAbsCacheElement) #add_library_link_def(RooAbsCategoryLValue) #add_library_link_def(RooAbsCollection) ##add_library_link_def(RooAbsData) #add_library_link_def(RooAbsLValue) #add_library_link_def(RooAbsProxy) #add_library_link_def(RooAbsReal) #add_library_link_def(RooAbsRealLValue) #add_library_link_def(RooAbsStudy) #add_library_link_def(RooAICRegistry) #add_library_link_def(RooArgList) #add_library_link_def(RooArgProxy) #add_library_link_def(RooArgSet) #add_library_link_def(RooCacheManager) ##add_library_link_def(RooCategory) #add_library_link_def(RooCategoryProxy) #add_library_link_def(RooCategorySharedProperties) #add_library_link_def(RooCatType) #add_library_link_def(RooCmdArg) #add_library_link_def(RooCurve) ##add_library_link_def(RooDataHist) ##add_library_link_def(RooDataSet) #add_library_link_def(RooDirItem) #add_library_link_def(RooExpensiveObjectCache) #add_library_link_def(RooFormula) #add_library_link_def(RooFormulaVar) #add_library_link_def(RooGlobalFunc) #add_library_link_def(RooHashTable) ##add_library_link_def(RooLinkedList) #add_library_link_def(RooLinkedListElem) #add_library_link_def(RooLinkedListIter) #add_library_link_def(RooList) #add_library_link_def(RooListProxy) #add_library_link_def(RooMsgService) #add_library_link_def(RooNameReg) #add_library_link_def(RooNameSet) #add_library_link_def(RooNormSetCache) #add_library_link_def(RooNumber) #add_library_link_def(RooObjCacheManager) ##add_library_link_def(RooPlot) #add_library_link_def(RooPlotable) #add_library_link_def(RooPrintable) #add_library_link_def(RooProdPdf) #add_library_link_def(RooRandom) #add_library_link_def(RooRealProxy) ##add_library_link_def(RooRealVar) #add_library_link_def(RooRealVarSharedProperties) #add_library_link_def(RooRefCountList) #add_library_link_def(RooSetProxy) #add_library_link_def(RooSharedProperties) #add_library_link_def(RooStatsUtils) #add_library_link_def(RooStudyManager) #add_library_link_def(RooStudyPackage) #add_library_link_def(RooTrace) #add_library_link_def(RooUniformBinning) ##add_library_link_def(RooWorkspace) #add_library_link_def(SamplingDistribution) #add_library_link_def(ModelConfig) #add_library_link_def(DetailedOutputAggregator) #add_library_link_def(ToyMCStudy) #add_library_link_def(RooAbsPdf) #add_library_link_def(RooAbsCategory) #add_library_link_def(RooSharedPropertiesList) # Adding executables add_executable(StandardHypoTestInv StandardHypoTestInv ToyMCSampler) target_link_libraries(StandardHypoTestInv PUBLIC WorkspaceCalculator ProfileLikelihoodTestStatEnhanced LimitCalculator FrequentistCalculator AsymptoticCalculator HybridCalculator HypoTestCalculatorGeneric HypoTestInverter ToyMCSampler) #target_link_libraries(StandardFrequentistDiscovery PUBLIC # WorkspaceCalculator ProfileLikelihoodTestStatEnhanced PValueCalculator) #add_executable(LikelihoodScan LikelihoodScan) #target_link_libraries(LikelihoodScan PUBLIC # WorkspaceCalculator ProfileLikelihoodTestStatEnhanced LikelihoodCalculator) #add_executable(SimpleFit SimpleFit) #target_link_libraries(SimpleFit PUBLIC # WorkspaceCalculator ProfileLikelihoodTestStatEnhanced FitCalculator)