Angular analysis of B+->K*+(K+pi0)mumu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
9.4 KiB

  1. # - Find ROOT instalation
  2. # This module tries to find the ROOT installation on your system.
  3. # It tries to find the root-config script which gives you all the needed information.
  4. # If the system variable ROOTSYS is set this is straight forward.
  5. # If not the module uses the pathes given in ROOT_CONFIG_SEARCHPATH.
  6. # If you need an other path you should add this path to this varaible.
  7. # The root-config script is then used to detect basically everything else.
  8. # This module defines a number of key variables and macros.
  9. # F.Uhlig@gsi.de (fairroot.gsi.de)
  10. MESSAGE(STATUS "Looking for Root...")
  11. SET(ROOT_CONFIG_SEARCHPATH
  12. ${SIMPATH}/tools/root/bin
  13. $ENV{ROOTSYS}/bin
  14. /usr/bin
  15. )
  16. SET(ROOT_DEFINITIONS "")
  17. SET(ROOT_INSTALLED_VERSION_TOO_OLD FALSE)
  18. SET(ROOT_CONFIG_EXECUTABLE ROOT_CONFIG_EXECUTABLE-NOTFOUND)
  19. FIND_PROGRAM(ROOT_CONFIG_EXECUTABLE NAMES root-config PATHS
  20. ${ROOT_CONFIG_SEARCHPATH}
  21. NO_DEFAULT_PATH)
  22. IF (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
  23. MESSAGE( FATAL_ERROR "ROOT not installed in the searchpath and ROOTSYS is not set. Please
  24. set ROOTSYS or add the path to your ROOT installation in the Macro FindROOT.cmake in the
  25. subdirectory cmake/modules.")
  26. ELSE (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
  27. STRING(REGEX REPLACE "(^.*)/bin/root-config" "\\1" test ${ROOT_CONFIG_EXECUTABLE})
  28. SET( ENV{ROOTSYS} ${test})
  29. set( ROOTSYS ${test})
  30. ENDIF (${ROOT_CONFIG_EXECUTABLE} MATCHES "ROOT_CONFIG_EXECUTABLE-NOTFOUND")
  31. IF (ROOT_CONFIG_EXECUTABLE)
  32. SET(ROOT_FOUND FALSE)
  33. EXEC_PROGRAM(${ROOT_CONFIG_EXECUTABLE} ARGS "--version" OUTPUT_VARIABLE ROOTVERSION)
  34. MESSAGE(STATUS "Looking for Root... - found $ENV{ROOTSYS}/bin/root")
  35. MESSAGE(STATUS "Looking for Root... - version ${ROOTVERSION} ")
  36. # we need at least version 6.00/00
  37. IF (NOT ROOT_MIN_VERSION)
  38. SET(ROOT_MIN_VERSION "6.00/00")
  39. ENDIF (NOT ROOT_MIN_VERSION)
  40. # now parse the parts of the user given version string into variables
  41. STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+" "\\1" req_root_major_vers "${ROOT_MIN_VERSION}")
  42. STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" req_root_minor_vers "${ROOT_MIN_VERSION}")
  43. STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+)" "\\1" req_root_patch_vers "${ROOT_MIN_VERSION}")
  44. # and now the version string given by qmake
  45. STRING(REGEX REPLACE "^([0-9]+)\\.[0-9][0-9]+\\/[0-9][0-9]+.*" "\\1" found_root_major_vers "${ROOTVERSION}")
  46. STRING(REGEX REPLACE "^[0-9]+\\.([0-9][0-9])+\\/[0-9][0-9]+.*" "\\1" found_root_minor_vers "${ROOTVERSION}")
  47. STRING(REGEX REPLACE "^[0-9]+\\.[0-9][0-9]+\\/([0-9][0-9]+).*" "\\1" found_root_patch_vers "${ROOTVERSION}")
  48. IF (found_root_major_vers LESS 5)
  49. MESSAGE( FATAL_ERROR "Invalid ROOT version \"${ROOTERSION}\", at least major version 4 is required, e.g. \"5.00/00\"")
  50. ENDIF (found_root_major_vers LESS 5)
  51. # compute an overall version number which can be compared at once
  52. MATH(EXPR req_vers "${req_root_major_vers}*10000 + ${req_root_minor_vers}*100 + ${req_root_patch_vers}")
  53. MATH(EXPR found_vers "${found_root_major_vers}*10000 + ${found_root_minor_vers}*100 + ${found_root_patch_vers}")
  54. IF (found_vers LESS req_vers)
  55. SET(ROOT_FOUND FALSE)
  56. SET(ROOT_INSTALLED_VERSION_TOO_OLD TRUE)
  57. ELSE (found_vers LESS req_vers)
  58. SET(ROOT_FOUND TRUE)
  59. ENDIF (found_vers LESS req_vers)
  60. ENDIF (ROOT_CONFIG_EXECUTABLE)
  61. IF (ROOT_FOUND)
  62. # ask root-config for the library dir
  63. # Set ROOT_LIBRARY_DIR
  64. EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
  65. ARGS "--libdir"
  66. OUTPUT_VARIABLE ROOT_LIBRARY_DIR_TMP )
  67. IF(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
  68. SET(ROOT_LIBRARY_DIR ${ROOT_LIBRARY_DIR_TMP} )
  69. ELSE(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
  70. MESSAGE("Warning: ROOT_CONFIG_EXECUTABLE reported ${ROOT_LIBRARY_DIR_TMP} as library path,")
  71. MESSAGE("Warning: but ${ROOT_LIBRARY_DIR_TMP} does NOT exist, ROOT must NOT be installed correctly.")
  72. ENDIF(EXISTS "${ROOT_LIBRARY_DIR_TMP}")
  73. # ask root-config for the binary dir
  74. EXEC_PROGRAM(${ROOT_CONFIG_EXECUTABLE}
  75. ARGS "--bindir"
  76. OUTPUT_VARIABLE root_bins )
  77. SET(ROOT_BINARY_DIR ${root_bins})
  78. # ask root-config for the include dir
  79. EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
  80. ARGS "--incdir"
  81. OUTPUT_VARIABLE root_headers )
  82. SET(ROOT_INCLUDE_DIR ${root_headers})
  83. # CACHE INTERNAL "")
  84. # ask root-config for the library varaibles
  85. EXEC_PROGRAM( ${ROOT_CONFIG_EXECUTABLE}
  86. # ARGS "--noldflags --noauxlibs --libs"
  87. ARGS "--glibs"
  88. OUTPUT_VARIABLE root_flags )
  89. # STRING(REGEX MATCHALL "([^ ])+" root_libs_all ${root_flags})
  90. # STRING(REGEX MATCHALL "-L([^ ])+" root_library ${root_flags})
  91. # REMOVE_FROM_LIST(root_flags "${root_libs_all}" "${root_library}")
  92. SET(ROOT_LIBRARIES ${root_flags})
  93. # Make variables changeble to the advanced user
  94. MARK_AS_ADVANCED( ROOT_LIBRARY_DIR ROOT_INCLUDE_DIR ROOT_DEFINITIONS)
  95. # Set ROOT_INCLUDES
  96. SET( ROOT_INCLUDES ${ROOT_INCLUDE_DIR})
  97. SET(LD_LIBRARY_PATH ${LD_LIBRARY_PATH} ${ROOT_LIBRARY_DIR})
  98. #######################################
  99. #
  100. # Check the executables of ROOT
  101. # ( rootcint )
  102. #
  103. #######################################
  104. FIND_PROGRAM(ROOT_CINT_EXECUTABLE
  105. NAMES rootcint
  106. PATHS ${ROOT_BINARY_DIR}
  107. NO_DEFAULT_PATH
  108. )
  109. ENDIF (ROOT_FOUND)
  110. ###########################################
  111. #
  112. # Macros for building ROOT dictionary
  113. #
  114. ###########################################
  115. MACRO (ROOT_GENERATE_DICTIONARY_OLD )
  116. set(INFILES "")
  117. foreach (_current_FILE ${ARGN})
  118. IF (${_current_FILE} MATCHES "^.*\\.h$")
  119. IF (${_current_FILE} MATCHES "^.*Link.*$")
  120. set(LINKDEF_FILE ${_current_FILE})
  121. ELSE (${_current_FILE} MATCHES "^.*Link.*$")
  122. set(INFILES ${INFILES} ${_current_FILE})
  123. ENDIF (${_current_FILE} MATCHES "^.*Link.*$")
  124. ELSE (${_current_FILE} MATCHES "^.*\\.h$")
  125. IF (${_current_FILE} MATCHES "^.*\\.cxx$")
  126. set(OUTFILE ${_current_FILE})
  127. ELSE (${_current_FILE} MATCHES "^.*\\.cxx$")
  128. set(INCLUDE_DIRS ${INCLUDE_DIRS} -I${_current_FILE})
  129. ENDIF (${_current_FILE} MATCHES "^.*\\.cxx$")
  130. ENDIF (${_current_FILE} MATCHES "^.*\\.h$")
  131. endforeach (_current_FILE ${ARGN})
  132. # MESSAGE("INFILES: ${INFILES}")
  133. # MESSAGE("OutFILE: ${OUTFILE}")
  134. # MESSAGE("LINKDEF_FILE: ${LINKDEF_FILE}")
  135. # MESSAGE("INCLUDE_DIRS: ${INCLUDE_DIRS}")
  136. STRING(REGEX REPLACE "(^.*).cxx" "\\1.h" bla "${OUTFILE}")
  137. # MESSAGE("BLA: ${bla}")
  138. SET (OUTFILES ${OUTFILE} ${bla})
  139. ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
  140. COMMAND ${ROOT_CINT_EXECUTABLE}
  141. ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES})
  142. # MESSAGE("ROOT_CINT_EXECUTABLE has created the dictionary ${OUTFILE}")
  143. ENDMACRO (ROOT_GENERATE_DICTIONARY_OLD)
  144. ###########################################
  145. #
  146. # Macros for building ROOT dictionary
  147. #
  148. ###########################################
  149. MACRO (ROOT_GENERATE_DICTIONARY INFILES LINKDEF_FILE OUTFILE INCLUDE_DIRS_IN)
  150. set(INCLUDE_DIRS)
  151. foreach (_current_FILE ${INCLUDE_DIRS_IN})
  152. set(INCLUDE_DIRS ${INCLUDE_DIRS} -I${_current_FILE})
  153. endforeach (_current_FILE ${INCLUDE_DIRS_IN})
  154. # MESSAGE("INFILES: ${INFILES}")
  155. # MESSAGE("OutFILE: ${OUTFILE}")
  156. # MESSAGE("LINKDEF_FILE: ${LINKDEF_FILE}")
  157. # MESSAGE("INCLUDE_DIRS: ${INCLUDE_DIRS}")
  158. STRING(REGEX REPLACE "^(.*)\\.(.*)$" "\\1.h" bla "${OUTFILE}")
  159. # MESSAGE("BLA: ${bla}")
  160. SET (OUTFILES ${OUTFILE} ${bla})
  161. if (CMAKE_SYSTEM_NAME MATCHES Linux)
  162. ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
  163. COMMAND LD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} ROOTSYS=${ROOTSYS} ${ROOT_CINT_EXECUTABLE}
  164. ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES} ${LINKDEF_FILE})
  165. else (CMAKE_SYSTEM_NAME MATCHES Linux)
  166. if (CMAKE_SYSTEM_NAME MATCHES Darwin)
  167. ADD_CUSTOM_COMMAND(OUTPUT ${OUTFILES}
  168. COMMAND DYLD_LIBRARY_PATH=${ROOT_LIBRARY_DIR} ROOTSYS=${ROOTSYS} ${ROOT_CINT_EXECUTABLE}
  169. ARGS -f ${OUTFILE} -c -DHAVE_CONFIG_H ${INCLUDE_DIRS} ${INFILES} ${LINKDEF_FILE} DEPENDS ${INFILES} ${LINKDEF_FILE})
  170. endif (CMAKE_SYSTEM_NAME MATCHES Darwin)
  171. endif (CMAKE_SYSTEM_NAME MATCHES Linux)
  172. ENDMACRO (ROOT_GENERATE_DICTIONARY)
  173. MACRO (GENERATE_ROOT_TEST_SCRIPT SCRIPT_FULL_NAME)
  174. get_filename_component(path_name ${SCRIPT_FULL_NAME} PATH)
  175. get_filename_component(file_extension ${SCRIPT_FULL_NAME} EXT)
  176. get_filename_component(file_name ${SCRIPT_FULL_NAME} NAME_WE)
  177. set(shell_script_name "${file_name}.sh")
  178. #MESSAGE("PATH: ${path_name}")
  179. #MESSAGE("Ext: ${file_extension}")
  180. #MESSAGE("Name: ${file_name}")
  181. #MESSAGE("Shell Name: ${shell_script_name}")
  182. string(REPLACE ${PROJECT_SOURCE_DIR}
  183. ${PROJECT_BINARY_DIR} new_path ${path_name}
  184. )
  185. #MESSAGE("New PATH: ${new_path}")
  186. file(MAKE_DIRECTORY ${new_path}/data)
  187. CONVERT_LIST_TO_STRING(${LD_LIBRARY_PATH})
  188. set(MY_LD_LIBRARY_PATH ${output})
  189. set(my_script_name ${SCRIPT_FULL_NAME})
  190. if(CMAKE_SYSTEM MATCHES Darwin)
  191. configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro_macos.sh.in
  192. ${new_path}/${shell_script_name}
  193. )
  194. else(CMAKE_SYSTEM MATCHES Darwin)
  195. configure_file(${PROJECT_SOURCE_DIR}/cmake/scripts/root_macro.sh.in
  196. ${new_path}/${shell_script_name}
  197. )
  198. endif(CMAKE_SYSTEM MATCHES Darwin)
  199. EXEC_PROGRAM(/bin/chmod ARGS "u+x ${new_path}/${shell_script_name}")
  200. ENDMACRO (GENERATE_ROOT_TEST_SCRIPT)