Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
450a5c9d1b | |||
9232d96246 |
24
ChangeLog
24
ChangeLog
@ -2,7 +2,9 @@
|
||||
# ChangeLog
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
rather than updating this document, the changes can be followed here:
|
||||
The ChangeLog will describe feature changes rather than coding detail changes.
|
||||
|
||||
For detailed information about changes have a look here:
|
||||
|
||||
https://gitlab.psi.ch/nemu/musrfit/activity
|
||||
|
||||
@ -10,6 +12,24 @@ or
|
||||
|
||||
https://bitbucket.org/muonspin/musrfit/commits/all
|
||||
|
||||
Release of V1.0.0, 2017/05/18
|
||||
=============================
|
||||
|
||||
I feel that musrfit has majored enough to lift it to its first full version, i.e. V1.0.0.
|
||||
|
||||
A lot of bug fixing went into it since 0.18.0. It is now also fully ROOT 6 compatible which
|
||||
is also the main supported version now.
|
||||
|
||||
New features:
|
||||
|
||||
* musrWiz: a wizard which will help the user to get started to generate msr-files.
|
||||
* musrStep: a little helper program which allows to reset the step size of a msr-file.
|
||||
This is useful if you deal with a lot of detectors (e.g. HAL-9500 at PSI).
|
||||
* auto-phase correction of Fourier transforms: this is still in its early stage but will
|
||||
eventually provide a real phase corrected Fourier transform, which will allow
|
||||
a real Fourier detector average.
|
||||
* the startup file handling has improved substantially.
|
||||
|
||||
changes since 0.18.0
|
||||
===================================
|
||||
|
||||
@ -35,7 +55,6 @@ NEW 2016-04-28 msr2data gets a new option: paramList which allows to
|
||||
extract a subset of all the parameters of a collection
|
||||
of msr-files.
|
||||
NEW 2016-04-22 Added the theory function muMinusExpTF for mu minus fits
|
||||
NEW 2016-03-08 added a theory translator for DKS
|
||||
NEW 2016-02-23 It is now possible to export the averaged data/Fourier
|
||||
CHANGED 2016-12-18 updated the docu.
|
||||
CHANGED 2016-12-18 a couple of little improvements in musredit.
|
||||
@ -43,7 +62,6 @@ CHANGED 2016-08-10 drop NeXus support for Version < 4.4
|
||||
CHANGED 2016-04-26 start-/endTimeBin are now class members. This reduces
|
||||
the number of recalculations.
|
||||
FIXED 2016-08-02 run lists are now properly loaded if containing nS-nE elements.
|
||||
FIXED 2016-04-14 added missing DKS selector in GetPhaseOptRealFourier.
|
||||
|
||||
changes since 0.16.0
|
||||
===================================
|
||||
|
181
configure.ac
181
configure.ac
@ -1,7 +1,7 @@
|
||||
AC_REVISION([m4_esyscmd_s([git describe --always])])
|
||||
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([musrfit],[1.1.0],[andreas.suter@psi.ch])
|
||||
AC_INIT([musrfit],[1.0.0],[andreas.suter@psi.ch])
|
||||
AC_CONFIG_AUX_DIR(admin)
|
||||
AC_CANONICAL_HOST
|
||||
#AC_MSG_RESULT([${host} ${host_cpu} ${host_vendor} ${host_os}])
|
||||
@ -35,7 +35,7 @@ dnl -----------------------------------------------
|
||||
|
||||
#release versioning
|
||||
MUSR_MAJOR_VERSION=1
|
||||
MUSR_MINOR_VERSION=1
|
||||
MUSR_MINOR_VERSION=0
|
||||
MUSR_MICRO_VERSION=0
|
||||
|
||||
#release versioning
|
||||
@ -359,7 +359,7 @@ AC_ARG_WITH([boostinc],
|
||||
)
|
||||
AC_SUBST(BOOST_INCLUDE)
|
||||
if test "${BOOST_FOUND}" != "1"; then
|
||||
BOOST_LIBS="-lboost_system-mt"
|
||||
BOOST_LIBS=""
|
||||
BOOST_CFLAGS="-I${BOOST_INCLUDE}"
|
||||
fi
|
||||
AC_SUBST(BOOST_LIBS)
|
||||
@ -421,7 +421,7 @@ dnl -----------------------------------------------
|
||||
dnl Check for ROOT
|
||||
dnl -----------------------------------------------
|
||||
|
||||
ROOT_PATH([6.06/00], [], AC_MSG_ERROR([Either ROOT is not installed correctly or the version is too old... please check!]))
|
||||
ROOT_PATH([5.22/00], [], AC_MSG_ERROR([Either ROOT is not installed correctly or the version is too old... please check!]))
|
||||
|
||||
ROOT_LIBS="-L${ROOTLIBDIR} ${ROOTGLIBS} ${ROOTAUXLIBS} -lMinuit2 -lMathMore -lXMLParser"
|
||||
ROOT_CFLAGS="-I${ROOTINCDIR} ${ROOTCFLAGS} ${ROOTAUXCFLAGS}"
|
||||
@ -864,163 +864,6 @@ if test "x$enable_omp" != "xno"; then
|
||||
[CXXFLAGS="$SAVED_CXXFLAGS" LIBS="$SAVED_LIBS"], [])
|
||||
fi
|
||||
|
||||
dnl -----------------------------------------------
|
||||
dnl Ask user if DKS support should be enabled (DKS = Dynamic Kernel Scheduler. Used to interface GPU's, MIC, etc)
|
||||
dnl -----------------------------------------------
|
||||
|
||||
AC_ARG_ENABLE([dks], [AS_HELP_STRING([--enable-dks],[build musrfit with DKS (GPU/MIC) support [default=no]])], [
|
||||
DKS_LIBDIR=""
|
||||
DKS_INCDIR=""
|
||||
DKS_LIBS=""
|
||||
DKS_CFLAGS=""
|
||||
|
||||
dnl ---------------------------------------------
|
||||
dnl Check (i) that Cuda is found, if not check OpenCL. (ii) that DKS is found
|
||||
dnl This could also mean openCL without GPU, e.g. on Mac OS X
|
||||
dnl ---------------------------------------------
|
||||
|
||||
dnl ---------------------------------------------
|
||||
dnl check for Cuda
|
||||
dnl ---------------------------------------------
|
||||
AC_ARG_WITH([cuda],
|
||||
[AS_HELP_STRING([--with-cuda],[prefix of the CUDA installation, e.g. /usr/local/cuda])],
|
||||
[cuda_prefix=$withval],
|
||||
[cuda_prefix="/usr/local/cuda"])
|
||||
|
||||
dnl Setting the prefix to the default if only --with-cuda was given
|
||||
AC_MSG_CHECKING([whether CUDA is installed in a standard location])
|
||||
if test "$cuda_prefix" == "yes"; then
|
||||
if test "$withval" == "yes"; then
|
||||
cuda_prefix="/usr/local/cuda"
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([${cuda_prefix}])
|
||||
|
||||
dnl Checking for nvcc
|
||||
AC_MSG_CHECKING([nvcc in $cuda_prefix/bin])
|
||||
if test -x "$cuda_prefix/bin/nvcc"; then
|
||||
AC_MSG_RESULT([found])
|
||||
AC_DEFINE_UNQUOTED([NVCC_PATH], ["$cuda_prefix/bin/nvcc"], [path to nvcc binary])
|
||||
CUDA_FOUND="yes"
|
||||
CUDA_CFLAGS="-I$cuda_prefix/include"
|
||||
CXXFLAGS="$CUDA_CFLAGS $CXXFLAGS"
|
||||
CUDA_LDFLAGS="-L$cuda_prefix/lib64"
|
||||
LDFLAGS="$CUDA_LDFLAGS $LDFLAGS"
|
||||
else
|
||||
AC_MSG_RESULT([not found!])
|
||||
AC_MSG_WARN([nvcc was not found in $cuda_prefix/bin])
|
||||
fi
|
||||
|
||||
dnl if cuda has been found check the header and the lib
|
||||
if test "$CUDA_FOUND" == "yes"; then
|
||||
AC_CHECK_HEADER([cuda.h], [], AC_MSG_FAILURE([Couldn't find cuda.h]), [#include <cuda.h>])
|
||||
AC_CHECK_LIB([cuda], [cuInit], [], AC_MSG_FAILURE([Couldn't find libcuda]))
|
||||
fi
|
||||
|
||||
dnl ---------------------------------------------
|
||||
dnl check for openCL in case CUDA is not found
|
||||
dnl ---------------------------------------------
|
||||
AC_ARG_WITH([opencl],
|
||||
[AS_HELP_STRING([--with-opencl],[prefix of the OpenCL installation, e.g. /opt/AMDAPPSDK-3.0/])],
|
||||
[opencl_prefix=$withval],
|
||||
[opencl_prefix="/opt/AMDAPPSDK-3.0"])
|
||||
|
||||
if test ! "$CUDA_FOUND" == "yes"; then
|
||||
AC_MSG_NOTICE([CUDA not found, will try to find OpenCL])
|
||||
AC_MSG_CHECKING([whether OpenCL is installed in a standard location])
|
||||
if test "$opencl_prefix" == "yes"; then
|
||||
if test "$withval" == "yes"; then
|
||||
opencl_prefix="/opt/AMDAPPSDK-3.0"
|
||||
fi
|
||||
fi
|
||||
AC_MSG_RESULT([${opencl_prefix}])
|
||||
|
||||
dnl Checking for opencl.h and libOpenCL.so
|
||||
AC_MSG_NOTICE([host_os=ARCH=$host_os])
|
||||
case "$host_os" in
|
||||
darwin*)
|
||||
AC_MSG_NOTICE([macOS like system])
|
||||
if test -r /System/Library/Frameworks/OpenCL.framework/Headers/opencl.h; then
|
||||
opencl_prefix="/System/Library/Frameworks/OpenCL.framework/"
|
||||
AC_MSG_NOTICE([OpenCL header found: ${opencl_prefix}])
|
||||
dnl OPENCL_CFLAGS="-I$opencl_prefix/Headers/ -framework opencl"
|
||||
dnl OPENCL_CFLAGS="-I$opencl_prefix/Headers/"
|
||||
dnl CXXFLAGS="$OPENCL_CFLAGS $CXXFLAGS"
|
||||
dnl OPENCL_LDFLAGS="-L$opencl_prefix/Libraries"
|
||||
dnl LDFLAGS="$OPENCL_LDFLAGS $LDFLAGS"
|
||||
else
|
||||
AC_MSG_RESULT([not found!])
|
||||
AC_MSG_FAILURE([neither CUDA nor OpenCL found])
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
AC_MSG_NOTICE([linux like system])
|
||||
if test -x "$opencl_prefix/include/CL/opencl.h"; then
|
||||
AC_MSG_NOTICE([OpenCL header found: ${opencl_prefix}])
|
||||
OPENCL_CFLAGS="-I$opencl_prefix/include/"
|
||||
CXXFLAGS="$OPENCL_CFLAGS $CXXFLAGS"
|
||||
OPENCL_LDFLAGS="-L$opencl_prefix/lib/x86_64/"
|
||||
LDFLAGS="$OPENCL_LDFLAGS $LDFLAGS"
|
||||
else
|
||||
AC_MSG_RESULT([not found!])
|
||||
AC_MSG_FAILURE([neither CUDA nor OpenCL found])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
dnl -------------------------------------------
|
||||
dnl check for DKS
|
||||
dnl -------------------------------------------
|
||||
AC_ARG_WITH([dks],
|
||||
[AS_HELP_STRING([--with-dks],[prefix of the DKS installation, e.g. /usr/local/DKS/build])],
|
||||
[dks_prefix=$withval],
|
||||
[dks_prefix="/usr/local/DKS/build"])
|
||||
|
||||
dnl Setting the prefix to the default if only --with-dks was given
|
||||
AC_MSG_CHECKING([whether DKS is installed in a standard location])
|
||||
if test "$dks_prefix" == "yes"; then
|
||||
if test "$withval" == "yes"; then
|
||||
dks_prefix="/usr/local/DKS/build"
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -x "$dks_prefix"; then
|
||||
AC_MSG_RESULT([found])
|
||||
else
|
||||
AC_MSG_RESULT([not found!])
|
||||
AC_MSG_FAILURE([$dks_prefix not present])
|
||||
fi
|
||||
|
||||
AC_DEFINE([HAVE_DKS], [1], [Define to 1 if DKS is available])
|
||||
DKS_INCDIR="$dks_prefix/include"
|
||||
DKS_LIBDIR="$dks_prefix/lib"
|
||||
if test "$CUDA_FOUND" == "yes"; then
|
||||
DKS_CUDADIR="$cuda_prefix"
|
||||
DKS_CFLAGS="-DDKS_OPENCL -DDKS_CUDA -I${DKS_INCDIR} ${CUDA_CFLAGS}"
|
||||
DKS_LIBS="${CUDA_LDFLAGS} -lOpenCL -L${DKS_LIBDIR} -ldksshared"
|
||||
else
|
||||
DKS_OPENCLDIR="$opencl_prefix"
|
||||
case "$host_os" in
|
||||
darwin*)
|
||||
DKS_CFLAGS="-DDKS_OPENCL -I${DKS_INCDIR} ${OPENCL_CFLAGS}"
|
||||
DKS_LIBS="${OPENCL_LDFLAGS} -framework opencl -L${DKS_LIBDIR} -ldksshared"
|
||||
;;
|
||||
*)
|
||||
DKS_CFLAGS="-DDKS_OPENCL -I${DKS_INCDIR} ${OPENCL_CFLAGS}"
|
||||
DKS_LIBS="${OPENCL_LDFLAGS} -lOpenCL -L${DKS_LIBDIR} -ldksshared"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_SUBST(DKS_CFLAGS)
|
||||
AC_SUBST(DKS_LIBS)
|
||||
|
||||
DKS_ENABLED=1
|
||||
],
|
||||
[DKS_ENABLED=0]
|
||||
)
|
||||
|
||||
dnl -----------------------------------------------
|
||||
dnl Ask user if the building of musredit/musrgui should be disabled
|
||||
dnl -----------------------------------------------
|
||||
@ -1375,7 +1218,6 @@ AM_CONDITIONAL([BUILD_CUBALIB], [test "${BUILD_CUBA}" = "1"])
|
||||
AM_CONDITIONAL([BUILD_BMWLIBS], [test "${BUILD_BMW_LIBS}" = "1"])
|
||||
AM_CONDITIONAL([BUILD_ASLIBS], [test "${BUILD_AS_LIBS}" = "1"])
|
||||
AM_CONDITIONAL([BUILD_BNMRLIBS], [test "${BUILD_BNMR_LIBS}" = "1"])
|
||||
AM_CONDITIONAL([DKS_ENABLED], [test "${DKS_ENABLED}" = "1"])
|
||||
|
||||
AC_CONFIG_FILES([Makefile \
|
||||
src/Makefile \
|
||||
@ -1384,7 +1226,7 @@ AC_CONFIG_FILES([Makefile \
|
||||
src/classes/PUserFcnBase.pc \
|
||||
src/external/Makefile \
|
||||
src/external/MusrRoot/Makefile \
|
||||
src/external/MusrRoot/TMusrRunHeader.pc \
|
||||
src/external/MusrRoot/TMusrRunHeader.pc \
|
||||
src/external/TLemRunHeader/Makefile \
|
||||
src/external/TLemRunHeader/TLemRunHeader.pc \
|
||||
src/external/MuSR_software/Makefile \
|
||||
@ -1412,8 +1254,8 @@ AC_CONFIG_FILES([Makefile \
|
||||
src/external/libCalcMeanFieldsLEM/Makefile \
|
||||
src/external/Nonlocal/Makefile \
|
||||
src/external/MagProximity/Makefile \
|
||||
src/external/libSpinValve/Makefile \
|
||||
src/external/libSpinValve/classes/Makefile \
|
||||
src/external/libSpinValve/Makefile \
|
||||
src/external/libSpinValve/classes/Makefile \
|
||||
src/external/libPhotoMeissner/Makefile \
|
||||
src/external/libPhotoMeissner/classes/Makefile \
|
||||
src/external/libGbGLF/Makefile \
|
||||
@ -1518,17 +1360,11 @@ else
|
||||
echo " Qt not needed (Qt editors disabled)"
|
||||
fi
|
||||
echo ""
|
||||
if test "${DKS_ENABLED}" = "1"; then
|
||||
echo " DKS enabled and found at ${dks_prefix}"
|
||||
else
|
||||
echo " DKS disabled"
|
||||
fi
|
||||
echo ""
|
||||
echo ""
|
||||
echo " Features:"
|
||||
echo " ---------"
|
||||
echo ""
|
||||
echo " musrfit (including musrfit, musrview, musrFT, musrt0,"
|
||||
echo " musrfit (including musrfit, musrview, musrt0,"
|
||||
echo " msr2msr, msr2data, any2many, dump_header,"
|
||||
echo " musrRootValidation, write_musrRoot_runHeader): yes"
|
||||
echo ""
|
||||
@ -1599,4 +1435,3 @@ if test "x$enable_editor" != "xno" && test "x${QMAKEBIN}" != "x" && test "x${QTE
|
||||
echo \#define MUSRFIT_PREFIX \"${INSTALLDIR}\" > src/musredit/musrfit-info.h
|
||||
echo \#define MUSRFIT_DOC_DIR \"${DOCDIR}\" >> src/musredit/musrfit-info.h
|
||||
fi
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -12,4 +12,4 @@
|
||||
|
||||
#pragma link C++ class PUserFcn+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
|
@ -1,107 +1,107 @@
|
||||
MnSi, FLC68.2, 50 K
|
||||
153
|
||||
###############################################################
|
||||
FITPARAMETER
|
||||
# Nr. Name Value Step Pos_Error Boundaries
|
||||
1 Rate_1 1.6686 -0.0085 0.0086
|
||||
2 Field_1 73089.883 -0.090 0.090
|
||||
3 Rate_2 1.967 -0.032 0.032
|
||||
4 Field_2 72289.02 -0.24 0.24
|
||||
1 Rate_1 1.6687 0.0083 none
|
||||
2 Field_1 73089.883 0.089 none
|
||||
3 Rate_2 1.968 0.031 none
|
||||
4 Field_2 72289.02 0.24 none
|
||||
|
||||
5 Asym_1 0.2949 -0.0030 0.0030
|
||||
6 Frc_1 0.7316 -0.0058 0.0059
|
||||
7 Phase_1 55.61 -0.52 0.52
|
||||
8 N0_1 940.35 -0.54 0.54
|
||||
9 Bkg_1 1.523 -0.064 0.064
|
||||
5 Asym_1 0.2949 0.0027 none
|
||||
6 Frc_1 0.7316 0.0052 none
|
||||
7 Phase_1 55.61 0.52 none
|
||||
8 N0_1 940.35 0.44 none
|
||||
9 Bkg_1 1.523 0.052 none
|
||||
|
||||
10 Asym_2 0.2960 -0.0030 0.0030
|
||||
11 Frc_2 0.7475 -0.0058 0.0059
|
||||
12 Phase_2 30.77 -0.50 0.50
|
||||
13 N0_2 961.49 -0.55 0.55
|
||||
14 Bkg_2 1.928 -0.065 0.065
|
||||
10 Asym_2 0.2960 0.0026 none
|
||||
11 Frc_2 0.7475 0.0051 none
|
||||
12 Phase_2 30.77 0.50 none
|
||||
13 N0_2 961.49 0.45 none
|
||||
14 Bkg_2 1.928 0.053 none
|
||||
|
||||
15 Asym_3 0.3002 -0.0029 0.0029
|
||||
16 Frc_3 0.7462 -0.0056 0.0057
|
||||
17 Phase_3 18.03 -0.48 0.48
|
||||
18 N0_3 1024.28 -0.57 0.57
|
||||
19 Bkg_3 1.919 -0.067 0.067
|
||||
15 Asym_3 0.3002 0.0026 none
|
||||
16 Frc_3 0.7462 0.0050 none
|
||||
17 Phase_3 18.03 0.48 none
|
||||
18 N0_3 1024.28 0.46 none
|
||||
19 Bkg_3 1.919 0.055 none
|
||||
|
||||
20 Asym_4 0.3088 -0.0029 0.0029
|
||||
21 Frc_4 0.7333 -0.0053 0.0054
|
||||
22 Phase_4 336.94 -0.48 0.47
|
||||
23 N0_4 1029.36 -0.57 0.57
|
||||
24 Bkg_4 1.863 -0.067 0.067
|
||||
20 Asym_4 0.3088 0.0026 none
|
||||
21 Frc_4 0.7333 0.0048 none
|
||||
22 Phase_4 336.94 0.47 none
|
||||
23 N0_4 1029.36 0.46 none
|
||||
24 Bkg_4 1.863 0.055 none
|
||||
|
||||
25 Asym_5 0.3094 -0.0029 0.0029
|
||||
26 Frc_5 0.7416 -0.0054 0.0055
|
||||
27 Phase_5 280.33 -0.48 0.48
|
||||
28 N0_5 1002.69 -0.56 0.56
|
||||
29 Bkg_5 1.979 -0.067 0.067
|
||||
25 Asym_5 0.3094 0.0026 none
|
||||
26 Frc_5 0.7416 0.0049 none
|
||||
27 Phase_5 280.32 0.48 none
|
||||
28 N0_5 1002.69 0.46 none
|
||||
29 Bkg_5 1.979 0.054 none
|
||||
|
||||
30 Asym_6 0.3153 -0.0032 0.0032
|
||||
31 Frc_6 0.7403 -0.0057 0.0058
|
||||
32 Phase_6 211.07 -0.51 0.51
|
||||
33 N0_6 853.43 -0.52 0.52
|
||||
34 Bkg_6 1.656 -0.061 0.061
|
||||
30 Asym_6 0.3153 0.0028 none
|
||||
31 Frc_6 0.7403 0.0051 none
|
||||
32 Phase_6 211.07 0.50 none
|
||||
33 N0_6 853.43 0.42 none
|
||||
34 Bkg_6 1.656 0.050 none
|
||||
|
||||
35 Asym_7 0.3118 -0.0032 0.0032
|
||||
36 Frc_7 0.7377 -0.0058 0.0059
|
||||
37 Phase_7 161.75 -0.51 0.51
|
||||
38 N0_7 858.76 -0.52 0.52
|
||||
39 Bkg_7 1.594 -0.061 0.062
|
||||
35 Asym_7 0.3118 0.0028 none
|
||||
36 Frc_7 0.7378 0.0052 none
|
||||
37 Phase_7 161.74 0.51 none
|
||||
38 N0_7 858.76 0.42 none
|
||||
39 Bkg_7 1.594 0.050 none
|
||||
|
||||
40 Asym_8 0.2985 -0.0031 0.0031
|
||||
41 Frc_8 0.7373 -0.0060 0.0061
|
||||
42 Phase_8 133.70 -0.53 0.53
|
||||
43 N0_8 871.20 -0.52 0.52
|
||||
44 Bkg_8 1.746 -0.062 0.062
|
||||
40 Asym_8 0.2985 0.0028 none
|
||||
41 Frc_8 0.7373 0.0053 none
|
||||
42 Phase_8 133.70 0.53 none
|
||||
43 N0_8 871.20 0.42 none
|
||||
44 Bkg_8 1.746 0.051 none
|
||||
|
||||
45 Asym_9 0.2874 -0.0027 0.0027
|
||||
46 Frc_9 0.7340 -0.0054 0.0055
|
||||
47 Phase_9 158.63 -0.47 0.47
|
||||
48 N0_9 1184.29 -0.61 0.61
|
||||
49 Bkg_9 2.542 -0.073 0.073
|
||||
45 Asym_9 0.2874 0.0024 none
|
||||
46 Frc_9 0.7341 0.0048 none
|
||||
47 Phase_9 158.63 0.47 none
|
||||
48 N0_9 1184.29 0.50 none
|
||||
49 Bkg_9 2.542 0.060 none
|
||||
|
||||
50 Asym_10 0.2845 -0.0027 0.0027
|
||||
51 Frc_10 0.7452 -0.0055 0.0055
|
||||
52 Phase_10 128.05 -0.47 0.47
|
||||
53 N0_10 1193.66 -0.61 0.61
|
||||
54 Bkg_10 2.394 -0.073 0.073
|
||||
50 Asym_10 0.2846 0.0026 none
|
||||
51 Frc_10 0.7453 0.0053 none
|
||||
52 Phase_10 128.05 0.49 none
|
||||
53 N0_10 1193.66 0.50 none
|
||||
54 Bkg_10 2.394 0.060 none
|
||||
|
||||
55 Asym_11 0.2877 -0.0026 0.0026
|
||||
56 Frc_11 0.7462 -0.0052 0.0053
|
||||
57 Phase_11 102.42 -0.45 0.45
|
||||
58 N0_11 1280.00 -0.63 0.63
|
||||
59 Bkg_11 2.730 -0.075 0.075
|
||||
55 Asym_11 0.2876 0.0024 none
|
||||
56 Frc_11 0.7463 0.0049 none
|
||||
57 Phase_11 102.57 0.46 none
|
||||
58 N0_11 1280.00 0.52 none
|
||||
59 Bkg_11 2.730 0.061 none
|
||||
|
||||
60 Asym_12 0.2919 -0.0025 0.0025
|
||||
61 Frc_12 0.7405 -0.0050 0.0050
|
||||
62 Phase_12 42.97 -0.44 0.43
|
||||
63 N0_12 1383.96 -0.66 0.66
|
||||
64 Bkg_12 2.807 -0.078 0.078
|
||||
60 Asym_12 0.2919 0.0022 none
|
||||
61 Frc_12 0.7405 0.0045 none
|
||||
62 Phase_12 42.97 0.44 none
|
||||
63 N0_12 1383.96 0.54 none
|
||||
64 Bkg_12 2.807 0.064 none
|
||||
|
||||
65 Asym_13 0.2903 -0.0025 0.0025
|
||||
66 Frc_13 0.7493 -0.0050 0.0050
|
||||
67 Phase_13 350.74 -0.43 0.43
|
||||
68 N0_13 1393.01 -0.66 0.66
|
||||
69 Bkg_13 2.737 -0.078 0.079
|
||||
65 Asym_13 0.2903 0.0021 none
|
||||
66 Frc_13 0.7494 0.0044 none
|
||||
67 Phase_13 350.74 0.43 none
|
||||
68 N0_13 1393.01 0.55 none
|
||||
69 Bkg_13 2.738 0.064 none
|
||||
|
||||
70 Asym_14 0.2968 -0.0025 0.0025
|
||||
71 Frc_14 0.7327 -0.0049 0.0050
|
||||
72 Phase_14 288.57 -0.43 0.43
|
||||
73 N0_14 1374.46 -0.66 0.66
|
||||
74 Bkg_14 2.768 -0.078 0.078
|
||||
70 Asym_14 0.2968 0.0022 none
|
||||
71 Frc_14 0.7327 0.0045 none
|
||||
72 Phase_14 288.56 0.43 none
|
||||
73 N0_14 1374.46 0.54 none
|
||||
74 Bkg_14 2.768 0.064 none
|
||||
|
||||
75 Asym_15 0.2799 -0.0025 0.0025
|
||||
76 Frc_15 0.7427 -0.0052 0.0053
|
||||
77 Phase_15 282.56 -0.45 0.45
|
||||
78 N0_15 1365.97 -0.66 0.65
|
||||
79 Bkg_15 2.809 -0.078 0.078
|
||||
75 Asym_15 0.2799 0.0021 none
|
||||
76 Frc_15 0.7427 0.0044 none
|
||||
77 Phase_15 282.56 0.47 none
|
||||
78 N0_15 1365.97 0.54 none
|
||||
79 Bkg_15 2.809 0.063 none
|
||||
|
||||
80 Asym_16 0.2771 -0.0026 0.0026
|
||||
81 Frc_16 0.7344 -0.0054 0.0055
|
||||
82 Phase_16 212.46 -0.48 0.48
|
||||
83 N0_16 1256.94 -0.63 0.63
|
||||
84 Bkg_16 2.458 -0.074 0.075
|
||||
80 Asym_16 0.2771 0.0023 none
|
||||
81 Frc_16 0.7344 0.0048 none
|
||||
82 Phase_16 212.46 0.47 none
|
||||
83 N0_16 1256.93 0.52 none
|
||||
84 Bkg_16 2.458 0.062 none
|
||||
|
||||
###############################################################
|
||||
THEORY
|
||||
@ -257,27 +257,25 @@ t0 20039.0
|
||||
|
||||
###############################################################
|
||||
COMMANDS
|
||||
OpenCL-GPU
|
||||
MAX_LIKELIHOOD
|
||||
PRINT_LEVEL 2
|
||||
MINIMIZE
|
||||
MINOS
|
||||
SAVE
|
||||
|
||||
###############################################################
|
||||
PLOT 0 (single histo plot)
|
||||
lifetimecorrection
|
||||
runs 1 11
|
||||
runs 1 11
|
||||
range 0 9.07 -0.5 0.5
|
||||
|
||||
###############################################################
|
||||
FOURIER
|
||||
units Tesla # units either 'Gauss', 'Tesla', 'MHz', or 'Mc/s'
|
||||
units Tesla # units either 'Gauss', 'MHz', or 'Mc/s'
|
||||
fourier_power 12
|
||||
apodization STRONG # NONE, WEAK, MEDIUM, STRONG
|
||||
plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE, PHASE_OPT_REAL
|
||||
plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
|
||||
range 7.1 7.5
|
||||
|
||||
###############################################################
|
||||
STATISTIC --- 2017-08-21 15:43:50
|
||||
STATISTIC --- 2014-12-03 15:42:56
|
||||
maxLH = 1286508.7, NDF = 1246064, maxLH/NDF = 1.032458
|
||||
|
@ -54,20 +54,20 @@ SAVE
|
||||
|
||||
###############################################################
|
||||
FOURIER
|
||||
units Gauss # units either 'Gauss', 'Tesla', 'MHz', or 'Mc/s'
|
||||
units Gauss # units either 'Gauss', 'MHz', or 'Mc/s'
|
||||
fourier_power 10
|
||||
apodization STRONG # NONE, WEAK, MEDIUM, STRONG
|
||||
plot REAL # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE, PHASE_OPT_REAL
|
||||
plot REAL # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
|
||||
range 0 200
|
||||
phase par2
|
||||
|
||||
###############################################################
|
||||
PLOT 0 (single histo plot)
|
||||
lifetimecorrection
|
||||
runs 1 2
|
||||
runs 1 2
|
||||
range 0 14 -0.22 0.22
|
||||
view_packing 2
|
||||
|
||||
###############################################################
|
||||
STATISTIC --- 2017-08-17 13:47:22
|
||||
STATISTIC --- 2013-11-12 10:25:57
|
||||
maxLH = 2585.1, NDF = 1696, maxLH/NDF = 1.524236
|
||||
|
@ -47,7 +47,6 @@ t0 202.0
|
||||
|
||||
###############################################################
|
||||
COMMANDS
|
||||
CUDA
|
||||
SCALE_N0_BKG TRUE
|
||||
MINIMIZE
|
||||
MINOS
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:26 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/BmwLibs?t=1503504096" type="application/x-wiki" title="edit BmwLibs" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/BmwLibs?t=1494785300" type="application/x-wiki" title="edit BmwLibs" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -105,11 +105,11 @@
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -149,5 +149,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:27 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/BmwLibs?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:19 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/CiteMusrFit?t=1503504095" type="application/x-wiki" title="edit CiteMusrFit" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/CiteMusrFit?t=1494785299" type="application/x-wiki" title="edit CiteMusrFit" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -102,14 +102,14 @@
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -123,19 +123,13 @@
|
||||
<p></p>
|
||||
Since quite some effort is going into the development and maintenance of the <code>musrfit</code> package, you should at least acknowledge it in your publication if you have used it to analyze your data. Even better of course is to cite it properly by the reference given beneath
|
||||
<p></p> <ul>
|
||||
<li> <a href="http://dx.doi.org/10.1016/j.phpro.2012.04.042">A. Suter, B.M. Wojek, "Musrfit: A Free Platform-Independent Framework for μSR Data Analysis", Physics Procedia <strong>30</strong>, 69 (2012).</a>
|
||||
</li></ul>
|
||||
<p></p>
|
||||
The GPU high speed <code>musrfit</code> version is utilizing <code>DKS</code>. In case you are using this version, please also add the following citations
|
||||
<p></p> <ul>
|
||||
<li> <a href="https://doi.org/10.1016/j.cpc.2016.05.013">A. Adelmann, U. Locans, A. Suter, "The Dynamic Kernel Scheduler—Part 1", Computer Physics Communications <strong>207</strong>, 83 (2016).</a>
|
||||
</li> <li> <a href="https://doi.org/10.1016/j.cpc.2017.02.007">U. Locans, <strong><em>et al.</em></strong>, "Real-time computation of parameter fitting and image reconstruction using graphical processing units", Computer Physics Communications <strong>215</strong>, 71 (2017).</a>
|
||||
<li> <a href="http://dx.doi.org/10.1016/j.phpro.2012.04.042">A. Suter, B.M. Wojek, "Musrfit: A Free Platform-Independent Framework for μSR Data Analysis", Physics Procedia 30, 69 (2012).</a>
|
||||
</li></ul> </div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>CiteMusrFit <br />
|
||||
Topic revision: <span class='patternRevInfo'>22 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>19 Jun 2012, suter_a</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -153,5 +147,5 @@ Topic revision: <span class='patternRevInfo'>22 Aug 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:19 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/CiteMusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:20 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:04 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibFitPofB?t=1503504096" type="application/x-wiki" title="edit LibFitPofB" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibFitPofB?t=1494785299" type="application/x-wiki" title="edit LibFitPofB" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -101,15 +101,15 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
@ -428,5 +428,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:26 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibFitPofB?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:43 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:26 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibZFRelaxation?t=1503504093" type="application/x-wiki" title="edit LibZFRelaxation" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/LibZFRelaxation?t=1494785294" type="application/x-wiki" title="edit LibZFRelaxation" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -104,15 +104,15 @@
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -233,5 +233,5 @@ Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:45 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/LibZFRelaxation?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:30 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:19 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,12 +14,12 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/Msr2Data?t=1503504095" type="application/x-wiki" title="edit Msr2Data" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/Msr2Data?t=1494785299" type="application/x-wiki" title="edit Msr2Data" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
@ -34,9 +34,6 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<style class='head TABLEPLUGIN_specific' type="text/css" media="all">
|
||||
body .foswikiTable#tableMsr2Data1 td {vertical-align:middle; vertical-align:top}
|
||||
body .foswikiTable#tableMsr2Data1 td.foswikiTableCol0 {text-align:left}
|
||||
@ -55,6 +52,9 @@ body .foswikiTable#tableMsr2Data1 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -135,19 +135,19 @@ body .foswikiTable#tableMsr2Data1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -435,5 +435,5 @@ Topic revision: <span class='patternRevInfo'>28 Apr 2016, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:20 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/Msr2Data?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,13 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFit?t=1503504095" type="application/x-wiki" title="edit MusrFit" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFit?t=1494785298" type="application/x-wiki" title="edit MusrFit" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
@ -36,7 +35,8 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -116,18 +116,18 @@ body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-col
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -165,9 +165,7 @@ body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-col
|
||||
</li> <li> <a href="MusrFit.html#A_4.4_The_FUNCTIONS_Block"> 4.4 The FUNCTIONS Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.5_The_GLOBAL_Block"> 4.5 The GLOBAL Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.6_The_RUN_Block"> 4.6 The RUN Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.7_The_COMMANDS_Block"> 4.7 The COMMANDS Block </a> <ul>
|
||||
<li> <a href="MusrFit.html#A_4.7.1_DKS_extensions_of_the_COMMANDS_block_enabling_GPU_and_general_OpenCL_support"> 4.7.1 DKS extensions of the COMMANDS block enabling GPU and general OpenCL support </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFit.html#A_4.7_The_COMMANDS_Block"> 4.7 The COMMANDS Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.8_The_FOURIER_Block"> 4.8 The FOURIER Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.9_The_PLOT_Block"> 4.9 The PLOT Block </a>
|
||||
</li> <li> <a href="MusrFit.html#A_4.10_The_STATISTIC_Block"> 4.10 The STATISTIC Block </a>
|
||||
@ -556,8 +554,6 @@ Notes
|
||||
<h2 id="A_4.3_The_THEORY_Block"> 4.3 The THEORY Block </h2>
|
||||
The THEORY block is used to define the fit function. There is a set of predefined functions available. It is also possible to use externally defined functions. How to use them will be explained afterwards, here only the predefined functions are described.
|
||||
<p></p>
|
||||
Theory functions which show a <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> are not yet DKS ready, i.e. cannot be run on the GPU if the <code>musrfit</code> / DKS version is installed.
|
||||
<p></p>
|
||||
<span id="TheoryTable"></span>
|
||||
<table border="1" class="foswikiTable" rules="none">
|
||||
<thead>
|
||||
@ -612,14 +608,14 @@ Theory functions which show a <img class='smily' src='../pub/Main/SmiliesPluginP
|
||||
<td class="foswikiTableCol1"> sgktlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_6b6bbc4add4da0bde8220c54594658f3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="G_{\mathrm{G,LF}}(t) \equiv 1-\frac{2\sigma^2}{(2\pi\nu)^2}\left[1-\exp\left(-\frac{1}{2}\sigma^2t^2\right)\cos(2\pi\nu t)\right]+\frac{2\sigma^4}{(2\pi\nu)^3}\int^t_0 \exp\left(-\frac{1}{2}\sigma^2\tau^2\right)\sin(2\pi\nu\tau)\mathrm{d}\tau" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_e9a0c0aa5d84cb4ea67265a3b06b9af5.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote3text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]] "><a class="foswikiCurrentTopicLink" href="#FootNote3note">(4)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote3text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]] "><a class="foswikiCurrentTopicLink" href="#FootNote3note">(4)</a></span> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> dynGssKTLF </td>
|
||||
<td class="foswikiTableCol1"> dgktlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_6b6bbc4add4da0bde8220c54594658f3.png" />, <img alt="\Gamma\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_f87b1352f663a35bf263bc7e9a214ca3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{G}}(s+\Gamma)}{1-\Gamma f_{\mathrm{G}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{G}}(s)\equiv \int_0^{\infty}G_{\mathrm{G,LF}}(t)\exp(-s t) \mathrm{d}t" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_cb688f85a062f09bfaff5cf9144860a9.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote4text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]]; A. Keren, [[http://link.aps.org/doi/10.1103/PhysRevB.50.10039][Phys. Rev. B *50* (1994) 10039]] "><a class="foswikiCurrentTopicLink" href="#FootNote4note">(5)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote4text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]]; A. Keren, [[http://link.aps.org/doi/10.1103/PhysRevB.50.10039][Phys. Rev. B *50* (1994) 10039]] "><a class="foswikiCurrentTopicLink" href="#FootNote4note">(5)</a></span> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> statExpKT </td>
|
||||
@ -633,14 +629,14 @@ Theory functions which show a <img class='smily' src='../pub/Main/SmiliesPluginP
|
||||
<td class="foswikiTableCol1"> sektlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="a\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_26a5ae8799badcc3bcbe1823265a9053.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="1-\frac{a}{2\pi\nu}j_1(2\pi\nu t)\exp\left(-at\right)-\left(\frac{a}{2\pi\nu}\right)^2 \left[j_0(2\pi\nu t)\exp\left(-at\right)-1\right]-a\left[1+\left(\frac{a}{2\pi\nu}\right)^2\right]\int^t_0 \exp\left(-a\tau\right)j_0(2\pi\nu\tau)\mathrm{d}\tau \equiv G_{\mathrm{L,LF}}(t)" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_df4770dd7b14577f14410b4f7ab59721.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote6text"></a><span class="FootNoteTextLink" title=" Y. J. Uemura _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.31.546][Phys. Rev. B *31* (1985) 546]] "><a class="foswikiCurrentTopicLink" href="#FootNote6note">(7)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote6text"></a><span class="FootNoteTextLink" title=" Y. J. Uemura _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.31.546][Phys. Rev. B *31* (1985) 546]] "><a class="foswikiCurrentTopicLink" href="#FootNote6note">(7)</a></span> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> dynExpKTLF </td>
|
||||
<td class="foswikiTableCol1"> dektlf </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="a\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_26a5ae8799badcc3bcbe1823265a9053.png" />, <img alt="\Gamma\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_f87b1352f663a35bf263bc7e9a214ca3.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{1}{2\pi \imath}\int_{\gamma-\imath\infty}^{\gamma+\imath\infty} \frac{f_{\mathrm{L}}(s+\Gamma)}{1-\Gamma f_{\mathrm{L}}(s+\Gamma)} \exp(s t) \mathrm{d}s,\mathrm{where}\,f_{\mathrm{L}}(s)\equiv \int_0^{\infty}G_{\mathrm{L,LF}}(t)\exp(-s t) \mathrm{d}t" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_c5c6dea10611dae1d470a5615869073a.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote7text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]] "><a class="foswikiCurrentTopicLink" href="#FootNote7note">(8)</a></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a name="FootNote7text"></a><span class="FootNoteTextLink" title=" R. S. Hayano _et al._, [[http://link.aps.org/doi/10.1103/PhysRevB.20.850][Phys. Rev. B *20* (1979) 850]]; P. Dalmas de R&eacute;otier and A. Yaouanc, [[http://dx.doi.org/10.1088/0953-8984/4/18/020][J. Phys.: Condens. Matter *4* (1992) 4533]] "><a class="foswikiCurrentTopicLink" href="#FootNote7note">(8)</a></span> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> combiLGKT </td>
|
||||
@ -710,7 +706,7 @@ Theory functions which show a <img class='smily' src='../pub/Main/SmiliesPluginP
|
||||
<td class="foswikiTableCol1"> skg </td>
|
||||
<td class="foswikiTableCol2"> <img alt="\varphi\,(^{\circ})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_61136f20673ad20f955c43e43b8cec9d.png" />, <img alt="\nu\,(\mathrm{MHz})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7188605a647615e4fb92cc89274b22a0.png" />, <img alt="\sigma_{-}\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_bd5c765027d46aa1433dda03f540c17e.png" />, <img alt="\sigma_{+}\,(\mu\text{s}^{-1})" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_82adbab00b6a057f04037b44746e33eb.png" /> </td>
|
||||
<td class="foswikiTableCol3"> <img alt="\frac{\sigma_{-}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{-}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)+\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{-}t}{\sqrt{2}}\right)\right\rbrace+ \frac{\sigma_{+}}{\sigma_{+}+\sigma_{-}}\exp\left[-\frac{\sigma_{+}^2t^2}{2}\right]\left\lbrace\cos\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)-\sin\left(2\pi\nu t+\frac{\pi\varphi}{180}\right)\mathrm{Erfi}\left(\frac{\sigma_{+}t}{\sqrt{2}}\right)\right\rbrace" class="mmpImage" src="../pub/MUSR/MusrFit/_MathModePlugin_7f4cd42199fbf712ad5a86f9d94bd698.png" /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a href="http://lmu.web.psi.ch/musrfit/memos/skewedGaussian.pdf">memo</a> <span class='foswikiIcon'><img src='../pub/System/DocumentGraphics/pdf.png' width='16' height='16' alt='pdf' /></span> <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> </td>
|
||||
<td class="foswikiTableCol4 foswikiLastCol"> <a href="http://lmu.web.psi.ch/musrfit/memos/skewedGaussian.pdf">memo</a> <span class='foswikiIcon'><img src='../pub/System/DocumentGraphics/pdf.png' width='16' height='16' alt='pdf' /></span> </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> staticNKZF </td>
|
||||
@ -1247,41 +1243,6 @@ For debug purposes it is possible to force MINUIT2 to print out additional infor
|
||||
</pre>
|
||||
Here the <code>MINOS</code> command will print out lot of additional information to the standard output. Notice there are 2 <code>SAVE</code> commands here. This will write the result of <code>MIGRAD</code> to the <code>MINUIT2.OUTPUT</code> file and at the end <em>append</em> the <code>MINOS</code> results to this file.
|
||||
<p></p>
|
||||
<h3 id="A_4.7.1_DKS_extensions_of_the_COMMANDS_block_enabling_GPU_and_general_OpenCL_support"> 4.7.1 DKS extensions of the COMMANDS block enabling GPU and general OpenCL support </h3>
|
||||
<p></p>
|
||||
In case you are running the <code>musrfit</code> / DKS version, there are a couple commands which allow you to control the way how the fit shall be performed. These commands are:
|
||||
<span class='foswikiMaroonFG'>
|
||||
<table border="1" class="foswikiTable" rules="none">
|
||||
<thead>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<th class="foswikiTableCol0 foswikiFirstCol"> <a href="https://intranet.psi.ch/MUSR/MusrFit?cover=print;sortcol=0;table=3;up=0#sorted_table" rel="nofollow" title="Sort by this column">Command</a> </th>
|
||||
<th class="foswikiTableCol1 foswikiLastCol"> <a href="https://intranet.psi.ch/MUSR/MusrFit?cover=print;sortcol=1;table=3;up=0#sorted_table" rel="nofollow" title="Sort by this column">Purpose</a> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> OpenMP </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run multi-threading via OpenMP if available </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> CUDA </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run the fit on a NVIDIA card as the Tesla K40c </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableEven foswikiTableRowdataBgSorted0 foswikiTableRowdataBg0">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol"> OpenCL-CPU </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol"> tries to run multi-threading via OpenCL on the CPU. This is useful for macOS </td>
|
||||
</tr>
|
||||
<tr class="foswikiTableOdd foswikiTableRowdataBgSorted1 foswikiTableRowdataBg1">
|
||||
<td class="foswikiTableCol0 foswikiFirstCol foswikiLast"> OpenCL-GPU </td>
|
||||
<td class="foswikiTableCol1 foswikiLastCol foswikiLast"> tries to run multi-threading via OpenCL on the GPU. This is used for AMD cards, but also works for NVIDIA </td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
<p></p>
|
||||
OpenMP is the default if none of these tags are found in the COMMANDS block.
|
||||
</span>
|
||||
<p></p>
|
||||
In case the defined THEORY is <strong>not</strong> ready to run on the accelerator, <code>musrfit</code> will fall back to the default behaviour. In the <a class="foswikiCurrentTopicLink" href="#TheoryTable">THEORY table</a> all the functions which are currently <strong>not</strong> GPU ready are marked by <img class='smily' src='../pub/Main/SmiliesPluginPSI/no.gif' alt='no' title='no' /> in the reference column.
|
||||
<p></p>
|
||||
<span id="TheFourierBlock"></span>
|
||||
<h2 id="A_4.8_The_FOURIER_Block"> 4.8 The FOURIER Block </h2>
|
||||
The Fourier transform is done and the results are plotted within <code>musrview</code> —as input data the actual data shown in <code>musrview</code> is used. In the FOURIER block of the msr file all necessary parameters for calculating and presenting the Fourier transform of the data specified in the <a class="foswikiCurrentTopicLink" href="#ThePlotBlock">PLOT block</a> is given. If the FOURIER block is not present in the msr file, either the parameters set in the <a class="foswikiCurrentTopicLink" href="#MusrfitStartupXml">XML startup file</a> or the system defaults are taken when the Fourier transform is performed. The block starts with the FOURIER keyword and may contain the following entries on the successive lines: <dl>
|
||||
@ -1752,7 +1713,7 @@ For reporting bugs or requesting new features and improvements please use the <a
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>MusrFit <br />
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>30 Apr 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1770,5 +1731,5 @@ Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:19 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFit?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:03 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,13 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitAcknowledgements?t=1503504094" type="application/x-wiki" title="edit MusrFitAcknowledgements" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitAcknowledgements?t=1494785298" type="application/x-wiki" title="edit MusrFitAcknowledgements" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -102,13 +102,13 @@
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
@ -122,15 +122,12 @@
|
||||
<div class="patternContent"><div class="foswikiTopic"> <h1 id="Acknowledgements_45_61_61musrfit_61_61"> Acknowledgements - <code><b>musrfit</b></code> </h1>
|
||||
<p></p> <dl>
|
||||
<dt> Bastian M. Wojek </dt><dd> I am very much indebted to <a href="http://www.fsf.org/register_form?referrer=8369">BMW</a> for his rigorous testing of <code><a href="MusrFit.html">musrfit</a></code>, his many useful suggestions, contributions, and for the largest part of the <a class="foswikiCurrentWebHomeLink" href="WebHome.html">user manual of <code>musrfit</code></a> which makes it accessible to a broader audience! Many thanks Bastian!
|
||||
</dd></dl>
|
||||
<p></p> <dl>
|
||||
<dt> Uldis Locans </dt><dd> I am very much indebted to Uldis work on <a href="CiteMusrFit.html">DKS</a> enabling the GPU support for <code><a href="MusrFit.html">musrfit</a></code>. His kind, calm, and extremely competent way to deal with his projects as well as to deal with the chaos of physicists way to think is admirable. Many thanks Uldis!
|
||||
</dd></dl> </div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a> > <a href="MusrFit.html">MusrFit</a><span class='foswikiSeparator'> > </span>MusrFitAcknowledgements <br />
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>03 Jul 2015, suter_a</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -148,5 +145,5 @@ Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitAcknowledgements?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetup?t=1503504094" type="application/x-wiki" title="edit MusrFitSetup" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetup?t=1494785297" type="application/x-wiki" title="edit MusrFitSetup" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -101,18 +101,18 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -136,7 +136,7 @@
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.2_61_61musrfit_61_61"> 3.2 musrfit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.3_61_61musredit_61_61"> 3.3 musredit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.4_61_61musrgui_61_61_40obsolete_41"> 3.4 musrgui (obsolete) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.4_61_61musrgui_61_61"> 3.4 musrgui </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_3.5_Check_of_the_installation"> 3.5 Check of the installation </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4_MS_Windows"> 4 MS Windows </a> <ul>
|
||||
@ -151,24 +151,16 @@
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.5_Check_of_the_installation"> 4.5 Check of the installation </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_4.6_Possible_problems"> 4.6 Possible problems </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5_Mac_OS_X_47_macOS"> 5 Mac OS X / macOS </a> <ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5_Mac_OS_X"> 5 Mac OS X </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1_Requirements_40_61_61MacPorts_61_61_41"> 5.1 Requirements (MacPorts) </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.1.1 Everything but ROOT and NeXus </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.1.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3_61_61ROOT_61_61"> 5.1.3 ROOT </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.1.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.1.3.1 ROOT installed via package installer </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3.2_61_61ROOT_61_61_installed_from_source"> 5.1.3.2 ROOT installed from source </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.1.3.3 Setting up Environment Variables for ROOT and musrfit </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.1.3_61_61ROOT_61_61"> 5.1.3 ROOT </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2_Requirements_40_61_61Fink_61_61_41"> 5.2 Requirements (Fink) </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.2.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.2.1 Everything but ROOT and NeXus </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.2.2 Installation of NeXus requirements (optional) </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3_61_61ROOT_61_61"> 5.2.3 ROOT </a> <ul>
|
||||
<li> <a href="MusrFitSetup.html#A_5.2.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.2.3.1 ROOT installed via package installer </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3.2_61_61ROOT_61_61_installed_from_source"> 5.2.3.2 ROOT installed from source </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.2.3.3 Setting up Environment Variables for ROOT and musrfit </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.2.3_61_61ROOT_61_61"> 5.2.3 ROOT </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.3_61_61musrfit_61_61"> 5.3 musrfit </a>
|
||||
</li> <li> <a href="MusrFitSetup.html#A_5.4_61_61musredit_61_61"> 5.4 musredit </a>
|
||||
@ -404,10 +396,10 @@ export MUSRFITPATH=/opt/root-system/bin
|
||||
<p></p>
|
||||
<span id="MusrGuiInstallLinux"></span>
|
||||
<h2 id="A_3.3_61_61musredit_61_61"> 3.3 <code><b>musredit</b></code> </h2>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically the highest available Qt version. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt5" option or install this editor separately:</span>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically if <code>Qt4.6</code> or higher is set up on the machine. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt4" option or install this editor separately:</span>
|
||||
<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit/src/musredit_qt5
|
||||
$ # for some distributions you will need qmake-qt5 for the next command
|
||||
$ cd $HOME/Apps/musrfit/src/musredit
|
||||
$ # for some distributions you will need qmake-qt4 for the next command
|
||||
$ qmake musredit.pro
|
||||
</pre>
|
||||
If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
@ -418,7 +410,7 @@ If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
In case one does not like the executable <strong>musredit</strong> to be copied to the default installation directory $ROOTSYS/bin the last "make install" can be skipped and the executable can be copied somewhere else instead. However, the <strong>musredit_startup.xml</strong> should go to the installation directory <strong>MUSRFITPATH</strong> of the <code>musrfit</code> executables.
|
||||
Eventually, in the installed <strong>musredit_startup.xml</strong> the path specifications should be adjusted to match the local <code>musrfit</code> installation. For detailed information on this XML file refer to the <a href="MusrGui.html#MusrguiStartupXml">manual</a>.
|
||||
<p></p>
|
||||
<h2 id="A_3.4_61_61musrgui_61_61_40obsolete_41"> 3.4 <code><b>musrgui</b></code> (obsolete) </h2>
|
||||
<h2 id="A_3.4_61_61musrgui_61_61"> 3.4 <code><b>musrgui</b></code> </h2>
|
||||
If <code>Qt4.6</code> or higher is not available but <code>Qt3</code> is set up <code>musrgui</code> can be installed. For this please follow the instructions for the <a class="foswikiCurrentTopicLink" href="#MusrGuiInstallLinux">musredit installation</a> where simply every <code>musredit</code> occurrence has to be replaced by <code>musrgui</code>.<br>
|
||||
If there are problems during the <code>qmake</code> step, e.g. "uic: File generated with too old version of Qt Designer", this most probably means the <code>Qt4</code> version of qmake is being used. In order to use the <code>Qt3</code> version it should be enough to specify the full path to its location when calling it. Within the most GNU/Linux distributions this location will be something like /usr/lib/qt-3.3/bin/qmake.
|
||||
<p></p>
|
||||
@ -633,21 +625,20 @@ In this case, try to do the following: Close all Cygwin programs (including the
|
||||
</pre>
|
||||
If this does not resolve the problem, try to change the compatibility settings of <strong>C:\cygwin\bin\sh.exe</strong> and <strong>C:\cygwin\bin\bash.exe</strong> so that they are executed with administrator privileges.
|
||||
<p></p>
|
||||
<h1 id="A_5_Mac_OS_X_47_macOS"> 5 Mac OS X / macOS </h1>
|
||||
<h1 id="A_5_Mac_OS_X"> 5 Mac OS X </h1>
|
||||
<p></p>
|
||||
With Mac OS X / macOS the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—<i>either</i> <code><a href="http://www.macports.org/">MacPorts</a></code> <em>or</em> <code><a href="http://www.finkproject.org/">Fink</a></code>—which provides open-source software is employed to fulfill the basic software requirements of <code>musrfit</code>. <span class='foswikiRedFG'>In the following, both possibilities (using <code>MacPorts</code> or <code>Fink</code>) are described but it is emphasized here that it should be followed <em>only one of the possible routes</em> </span>.
|
||||
With Mac OS X the situation is up to some extent similar like on MS Windows but still different since Mac OS X is a UNIX system. The similarity is that also on OS X a helping framework—<i>either</i> <code><a href="http://www.macports.org/">MacPorts</a></code> <em>or</em> <code><a href="http://www.finkproject.org/">Fink</a></code>—which provides open-source software is employed to fulfill the basic software requirements of <code>musrfit</code>. <span class='foswikiRedFG'>In the following, both possibilities (using <code>MacPorts</code> or <code>Fink</code>) are described but it is emphasized here that it should be followed <em>only one of the possible routes</em>.
|
||||
<p></p>
|
||||
WARNING: The instruction for <code>Fink</code> haven't been updated/tested for quite a while and likely are slightly outdated.
|
||||
</span>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<p></p>
|
||||
<h2 id="A_5.1_Requirements_40_61_61MacPorts_61_61_41"> 5.1 Requirements (<code><b>MacPorts</b></code>) </h2>
|
||||
<h3 id="A_5.1.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.1.1 Everything but <code><b>ROOT</b></code> and <code><b>NeXus</b></code> </h3>
|
||||
Before proceeding with the usage of the <code><a href="http://www.macports.org/">MacPorts</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed: <dl>
|
||||
<dt> Xcode </dt><dd> Useful developer tools including for instance the GNU compiler collection. It can be installed via the Apple App store. Starting from XCode >= 4.3 the command line tools need to be installed manually. The necessary command line tools can be installed via the following commands entered in the terminal<pre class="bash">
|
||||
$ xcode-select --install
|
||||
$ sudo xcodebuild -license
|
||||
</pre>
|
||||
</dd> <dt> X11 </dt><dd> The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install <code><a href="http://xquartz.macosforge.org/trac">XQuartz</a></code>
|
||||
Before proceeding with the usage of the <code><a href="http://www.macports.org/">MacPorts</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
|
||||
$ <a href="http://developer.apple.com/technology/tools.html">Xcode tools</a>: Useful developer tools including for instance the GNU compiler collection. Starting from XCode >= 4.3 the command line tools need to be installed manually. <dl>
|
||||
<dt> X11 </dt><dd> The X-window system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard). For 10.7 and higher you also will need to install <code><a href="http://xquartz.macosforge.org/trac">XQuartz</a></code>
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
After installing the Xcode tools go to the <a href="http://www.macports.org/install.php">MacPorts install page</a>, download the installer for your system and follow the installation instructions on the page. By default the <code>MacPorts</code> system will be installed in <strong>/opt/local</strong>.<br>
|
||||
@ -672,9 +663,9 @@ file:///Users/username/dports
|
||||
Then the <code>MacPorts</code> system should be set up and can be used to install additional software.<br>
|
||||
The installation of the software mentioned <a class="foswikiCurrentTopicLink" href="#ReqSw">above</a> is then done in the terminal:
|
||||
<pre class="bash">
|
||||
$ sudo port -v install pkgconfig autoconf automake libtool cmake fftw-3 fftw-3-single gsl boost libxml2 qt5 qt5-qtsvg qt5-qtwebengine
|
||||
$ sudo port -v install pkgconfig autoconf automake libtool fftw-3 fftw-3-single gsl boost libxml2 qt4-mac
|
||||
</pre>
|
||||
With <code><b>qt5</b></code>, <code>musredit</code> will be installed. If it happens that you used <code>musrgui</code> in the past, please change over to <code>musredit</code> since there will be <strong>no</strong> further development for <code>musrgui</code> anymore!
|
||||
With <code><b>qt4-mac</b></code>, <code>musredit</code> will be installed. If it happens that you used <code>musrgui</code> in the past, please change over to <code>musredit</code> since there will be <strong>no</strong> further development for <code>musrgui</code> anymore!
|
||||
<p></p>
|
||||
<h3 id="A_5.1.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.1.2 Installation of <code><b>NeXus</b></code> requirements (optional) </h3>
|
||||
<p></p>
|
||||
@ -706,17 +697,6 @@ Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to
|
||||
<h3 id="A_5.1.3_61_61ROOT_61_61"> 5.1.3 <code><b>ROOT</b></code> </h3>
|
||||
ROOT 5.34/xx is supported as legacy version only! <strong>The default now will be ROOT 6.xx/yy!</strong>
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.1.3.1 <code><b>ROOT</b></code> installed via package installer </h4>
|
||||
The lazy way to get <code>ROOT</code> installed is via package installer. If your macOS is directly supported by the <code>ROOT</code> people you can download the package installer from the <code>ROOT</code> <a href="https://root.cern.ch/downloading-root">download page</a>. Choose the latest <code>ROOT</code> release and download you macOS version dmg-file, e.g. for macOS 10.12 (Sierra) it is at the time of writting <code>root_v6.10.02.macosx64-10.12-clang81.dmg</code>. After the installation <code>ROOT</code> will be installed under <code>/Application</code> as owner <code>root</code>. In order to ease your life for the steps to follow and assuming you are the only guy working on your Mac, you could change the <code>owner</code> and <code>group</code> of the <code>ROOT</code> directory:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd /Applications
|
||||
$ sudo chown -R <username> root_v6.10.02
|
||||
$ sudo chgrp -R staff root_v6.10.02
|
||||
$ sudo ln -s root_v6.10.02 root
|
||||
</pre>
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.2_61_61ROOT_61_61_installed_from_source"> 5.1.3.2 <code><b>ROOT</b></code> installed from source </h4>
|
||||
The best way to get <code>ROOT</code> exactly the way needed for <code>musrfit</code> is to install it from source. Before describing it, please make sure that you have installed all required packages listed under <a class="foswikiCurrentTopicLink" href="#ReqSw">Requested Software</a> (e.g. fftw, gsl, etc).
|
||||
<p></p>
|
||||
For the following it is assumed that <code>ROOT</code> shall be installed under <code>$HOME/Applications</code>. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do <strong>not</strong> enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
@ -725,9 +705,9 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
$ git clone http://root.cern.ch/git/root.git
|
||||
$ cd root
|
||||
$ git tag -l
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-10-xx
|
||||
$ # where xx is the highest listed number, e.g. v6-10-02
|
||||
$ git checkout -b v6-10-02 v6-10-02
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-08-xx
|
||||
$ # where xx is the highest listed number, e.g. v6-08-06
|
||||
$ git checkout -b v6-08-06 v6-08-06
|
||||
$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
|
||||
$ # We will use the cmake out-of-source approach here.
|
||||
$ mkdir root_build
|
||||
@ -743,12 +723,11 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
<p></p>
|
||||
For further details see <a href="https://root.cern.ch/building-root">Installing ROOT from Source</a>.
|
||||
<p></p>
|
||||
<h4 id="A_5.1.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.1.3.3 Setting up Environment Variables for <code><b>ROOT</b></code> and <code><b>musrfit</b></code> </h4>
|
||||
Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.
|
||||
<p></p>
|
||||
<strong>For Mac OS X < 10.8:</strong>
|
||||
<p></p>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Here it assumed that you installed <code>ROOT</code> from source. If you downloaded the binary package, you will need to adopt the paths accordingly. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
<pre class="html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@ -769,25 +748,17 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
One needs to add some system variables in <strong>~/.profile</strong>:
|
||||
<pre class="bash">
|
||||
export ROOTSYS=$HOME/Applications/root/root_exec
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
|
||||
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
launchctl setenv PATH $PATH
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
</pre>
|
||||
<p></p>
|
||||
<h2 id="A_5.2_Requirements_40_61_61Fink_61_61_41"> 5.2 Requirements (<code><b>Fink</b></code>) </h2>
|
||||
<h3 id="A_5.2.1_Everything_but_61_61ROOT_61_61_and_61_61NeXus_61_61"> 5.2.1 Everything but <code><b>ROOT</b></code> and <code><b>NeXus</b></code> </h3>
|
||||
Before proceeding with the usage of the <code><a href="http://www.finkproject.org/">Fink</a></code> system first a few useful tools provided by Apple together with OS X (on the installation DVD/CDs) should be installed:
|
||||
<p></p> <dl>
|
||||
<dt> <strong>Xcode</strong> </dt><dd> Useful developer tools including for instance the GNU compiler collection. It can be installed via the Apple App Store. Starting from XCode >= 4.3 the command line tools need to be installed manually. The necessary command line tools can be installed via the following commands entered in the terminal:<pre class="bash">
|
||||
$ xcode-select --install
|
||||
$ sudo xcodebuild -license
|
||||
</pre>
|
||||
</dd> <dt> <strong>X11</strong> </dt><dd> The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)
|
||||
$ <a href="http://developer.apple.com/technology/tools.html">Xcode tools</a>: Useful developer tools including for instance the GNU compiler collection <dl>
|
||||
<dt> X11 </dt><dd> The X-window-system (automatically installed on 10.5 Leopard and 10.6 Snow Leopard)
|
||||
</dd></dl>
|
||||
<p></p>
|
||||
After installing the Xcode tools go to the <a href="http://www.finkproject.org/download/index.php?phpLang=en">Fink download page</a>, download the installer for your system and follow the installation instructions on the page.
|
||||
@ -802,11 +773,9 @@ After applying the changes above to the configuration file, the <code>Fink</code
|
||||
Then the <code>Fink</code> system should be set up and can be used to install additional software.<br>
|
||||
The <code>Fink</code> installer package also contains a graphical user interface called <code>FinkCommander</code> and it is suggested to use that for installing the following packages (or packages with revisions close to the following)—it is necessary to compile a few packages from source since no binary packages are available, however, this is done automatically by the <code>FinkCommander</code> after you have chosen the software packages for installation:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
autoconf automake cmake boost1.63-nopython boost1.63.nopython-shlibs fftw3 fftw3-shlibs gsl gsl-shlibs libtool2 libtool2-shlibs libxml2 libxml2-bin libxml2-shlibs pkgconfig qt5-mac-qtbase qt5-mac-qtbase-dev-tools qt5-mac-qtsvg qt5-mac-qtsvg-shlibs qt5-mac-qtwebengine qt5-mac-qtwebengine-shlibs qt5-mac-qtwebenginecore-shlibs qt5-mac-qtwebenginewidgets-shlibs
|
||||
</pre>
|
||||
<code><b>autoconf automake boost1.41.nopython boost1.41.nopython-shlibs fftw3 fftw3-shlibs gsl gsl-shlibs libtool2 libtool2-shlibs libxml2 libxml2-bin libxml2-shlibs pkgconfig qt3mac qt3mac-shlibs</b></code>
|
||||
<p></p>
|
||||
Under OS X 10.6 Snow Leopard it will not be possible to install <code><b>qt3mac</b></code> since the system is by default a 64-bit system and the old <code><b>qt3-mac</b></code> depends on software which is only available for 32-bit systems. It is suggested to install <code><b>qt5-mac</b></code> instead and use <code>musredit</code>.
|
||||
Under OS X 10.6 Snow Leopard it will not be possible to install <code><b>qt3mac</b></code> since the system is by default a 64-bit system and the old <code><b>qt3-mac</b></code> depends on software which is only available for 32-bit systems. It is suggested to install <code><b>qt4mac</b></code> instead and use <code>musredit</code>.
|
||||
<p></p>
|
||||
Also, due to some not fulfilled dependencies, it might not be possible to install FFTW3 through Fink. In this case (<span class='foswikiRedFG'>and ONLY in THIS case</span>) simply download the FFTW3 source code from <a href="http://www.fftw.org/download.html">its download page</a> and install it from a terminal using the following commands (for the FFTW version 3.x.y):
|
||||
<pre class="bash">
|
||||
@ -821,15 +790,13 @@ Since later on the <code>boost</code> header files should be used and in the sta
|
||||
<pre class="bash">
|
||||
$ ln -sf /sw/include/boost-x_yy_z/boost /sw/include/boost
|
||||
</pre>
|
||||
where <strong>x_yy_z</strong> has to be substituted by the correct version number, e.g. <strong>1_63_0</strong>.
|
||||
where <strong>x_yy_z</strong> has to be substituted by the correct version number, e.g. <strong>1_41_0</strong>.
|
||||
<p></p>
|
||||
<h3 id="A_5.2.2_Installation_of_61_61NeXus_61_61_requirements_40optional_41"> 5.2.2 Installation of <code><b>NeXus</b></code> requirements (optional) </h3>
|
||||
<p></p>
|
||||
<span class='foswikiRedFG'>Only if</span> <code>musrfit</code> should support reading data files in the <code>NeXus</code> format the further <a class="foswikiCurrentTopicLink" href="#ReqSwNeXus">required</a> packages can be installed through <code>Fink</code> (check for the most recent versions):
|
||||
<span class='foswikiRedFG'>Only if</span> <code>musrfit</code> should support reading data files in the <code>NeXus</code> format the further <a class="foswikiCurrentTopicLink" href="#ReqSwNeXus">required</a> packages can be installed through <code>Fink</code>:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
libjpeg hdf hdf5-cpp11 hdf5-cpp11-shlibs
|
||||
</pre>
|
||||
<code><b>libjpeg hdf hdf5-18 hdf5-18-shlibs</b></code>
|
||||
<p></p>
|
||||
Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to be compiled and installed directly from the source code. Given the respective version numbers of <strong>2.9</strong> and <strong>4.3.2</strong> (which are subject to change with time) this can be achieved for example by:
|
||||
<pre class="bash">
|
||||
@ -853,21 +820,6 @@ Unfortunately, the <code>minixml</code> and <code>NeXus</code> libraries have to
|
||||
</pre>
|
||||
<p></p>
|
||||
<h3 id="A_5.2.3_61_61ROOT_61_61"> 5.2.3 <code><b>ROOT</b></code> </h3>
|
||||
<p></p>
|
||||
ROOT 5.34/xx is supported as legacy version only and will likely to be dropped in 2018. <strong>The default now is ROOT 6.xx/yy!</strong>
|
||||
<p></p>
|
||||
<h4 id="A_5.2.3.1_61_61ROOT_61_61_installed_via_package_installer"> 5.2.3.1 <code><b>ROOT</b></code> installed via package installer </h4>
|
||||
<p></p>
|
||||
The lazy way to get ROOT installed is via package installer. If your macOS is directly supported by the ROOT people you can download the package installer from the ROOT <a href="https://root.cern.ch/downloading-root">download page</a>. Choose the latest ROOT release and download you macOS version dmg-file, e.g. for macOS 10.12 (Sierra) it is at the time of writting root_v6.10.02.macosx64-10.12-clang81.dmg. After the installation ROOT will be installed under /Application as owner root. In order to ease your life for the steps to follow and assuming you are the only guy working on your Mac, you could change the owner and group of the ROOT directory:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ cd /Applications
|
||||
$ sudo chown -R <username> root_v6.10.02
|
||||
$ sudo chgrp -R staff root_v6.10.02
|
||||
$ sudo ln -s root_v6.10.02 root
|
||||
</pre>
|
||||
<h4 id="A_5.2.3.2_61_61ROOT_61_61_installed_from_source"> 5.2.3.2 <code><b>ROOT</b></code> installed from source </h4>
|
||||
<p></p>
|
||||
The best way to get <code>ROOT</code> exactly the way needed for <code>musrfit</code> is to install it from source. Before describing it, please make sure that you have installed all required packages listed under <a class="foswikiCurrentTopicLink" href="#ReqSw">Requested Software</a> (e.g. fftw, gsl, etc).
|
||||
<p></p>
|
||||
For the following it is assumed that <code>ROOT</code> shall be installed under <code>$HOME/Applications</code>. If you want to install it somewhere else, just systematically replace the related terms of the following description. For the following list of commands the '$' will be given, the command prompt. Do <strong>not</strong> enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
@ -876,9 +828,9 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
$ git clone http://root.cern.ch/git/root.git
|
||||
$ cd root
|
||||
$ git tag -l
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-10-02
|
||||
$ # where xx is the highest listed number, e.g. v6-10-02
|
||||
$ git checkout -b v6-10-06 v6-10-02
|
||||
$ # git tag -l will list all available tags. In the next command choose the tag v6-08-06
|
||||
$ # where xx is the highest listed number, e.g. v6-08-06
|
||||
$ git checkout -b v6-08-06 v6-08-06
|
||||
$ # now ROOT is ready to be configured. Below you will find the minimal ROOT configuration needed.
|
||||
$ # the out-of-source approach will be followed
|
||||
$ mkdir root_build
|
||||
@ -893,13 +845,11 @@ For the following it is assumed that <code>ROOT</code> shall be installed under
|
||||
<p></p>
|
||||
For further details see <a href="http://root.cern.ch/drupal/content/installing-root-source">Installing ROOT from Source</a>.
|
||||
<p></p>
|
||||
<h4 id="A_5.2.3.3_Setting_up_Environment_Variables_for_61_61ROOT_61_61_and_61_61musrfit_61_61"> 5.2.3.3 Setting up Environment Variables for <code><b>ROOT</b></code> and <code><b>musrfit</b></code> </h4>
|
||||
<p></p>
|
||||
Since Apple in its wisdom decided that programs started from a shell are treated differently than apps if it is coming to system variables, we need to work harder compared to a Linux system.
|
||||
<p></p>
|
||||
<strong>For Mac OS X < 10.8:</strong>
|
||||
<p></p>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Here it assumed that you installed ROOT from source. If you downloaded the binary package, you will need to adopt the paths accordingly. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
In order to finalize the <code>ROOT</code> installation and to prepare already the installation of <code>musrfit</code> and <code>musrgui</code> / <code>musredit</code> this is a good time for setting necessary environment variables for the use in Mac OS X. Put the following lines (without the comments in parentheses and with the paths adjusted to your local installation) into the file <strong>~/.MacOSX/environment.plist</strong> and <span class='foswikiRedFG'>re-login</span>:<br>
|
||||
<pre class="html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@ -908,7 +858,7 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
<key>MUSRFITPATH</key>
|
||||
<string>$HOME/Applications/root/root_exec/bin</string> (where to find the musrfit executables)
|
||||
<key>QTDIR</key>
|
||||
<string>/sw/lib/qt5-mac</string> (where to find Qt5)
|
||||
<string>/opt/local/lib/qt3mac</string> (where to find Qt3 (for musrgui) or Qt4 (for musredit))
|
||||
<key>ROOTSYS</key>
|
||||
<string>$HOME/Applications/root/root_exec</string> (where to find the ROOT system)
|
||||
</dict>
|
||||
@ -920,18 +870,10 @@ In order to finalize the <code>ROOT</code> installation and to prepare already t
|
||||
One needs to add some system variables in <strong>~/.profile</strong>:
|
||||
<pre class="bash">
|
||||
export ROOTSYS=$HOME/Applications/root/root_exec
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
export QTDIR=/sw/lib/qt5-mac
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
export PKG_CONFIG_PATH=$QTDIR/lib/pkgconfig:$PKG_CONFIG_PATH
|
||||
export LD_LIBRARY_PATH=$ROOTSYS/lib:$QTDIR/lib:$LD_LIBRARAY_PATH
|
||||
|
||||
launchctl setenv ROOTSYS $ROOTSYS
|
||||
export MUSRFITPATH=$ROOTSYS/bin
|
||||
launchctl setenv MUSRFITPATH $MUSRFITPATH
|
||||
launchctl setenv QTDIR $QTDIR
|
||||
launchctl setenv PKG_CONFIG_PATH $PKG_CONFIG_PATH
|
||||
launchctl setenv PATH $PATH
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
export PATH=$ROOTSYS/bin:$QTDIR/bin:$PATH
|
||||
</pre>
|
||||
<h2 id="A_5.3_61_61musrfit_61_61"> 5.3 <code><b>musrfit</b></code> </h2>
|
||||
First, the most recent source code should be downloaded. First, the most recent source code should be downloaded. The preferred way of doing so is to clone the musrfit repository via git. Assuming the code should be located in ~/Applications/musrfit this is achieved most easily calling from the terminal
|
||||
@ -993,9 +935,9 @@ In order to finish the installation of <code>musrfit</code> the paths where <cod
|
||||
<p></p>
|
||||
<span id="MusrGuiInstall"></span>
|
||||
<h2 id="A_5.4_61_61musredit_61_61"> 5.4 <code><b>musredit</b></code> </h2>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically highest available Qt version. In case this is found, the editor <code>musredit</code> is built together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt5" option or install this editor separately:</span>
|
||||
<span class='foswikiBlueFG'>In the latest version of <code>musrfit</code> the configure script tries to determine automatically if <code>Qt4.5</code> or higher is set up on the machine. In case this is found, the editor <code>musredit</code> is built already together with <code>musrfit</code>. <em>If not</em>, one can either try to call the configure script with the "--with-qt4" option (<strong>MacPort</strong>: for Mac OS X < 10.11 this is likley <strong>/opt/local/libexec/qt4</strong>, for Mac OS X >= 10.11 this is likely <strong>/usr/local/libexec/qt4</strong>) or install this editor separately:</span>
|
||||
<pre class="bash">
|
||||
$ cd ~/Applications/musrfit/src/musredit_qt5
|
||||
$ cd ~/Apps/musrfit/src/musredit
|
||||
$ qmake musredit.pro
|
||||
</pre>
|
||||
If everything went fine <code>musredit</code> can be compiled and installed:
|
||||
@ -1008,7 +950,7 @@ The last command copies <strong>musredit.app</strong> to the standard program di
|
||||
<h2 id="A_5.5_61_61musrgui_61_61_40obsolete_41"> 5.5 <code><b>musrgui</b></code> (obsolete) </h2>
|
||||
If <code>Qt3</code> is set up the installation of the <code>musrfit</code> editor can be done as follows from within the shell:
|
||||
<pre class="bash">
|
||||
$ cd ~/Applications/musrfit/src/musrgui
|
||||
$ cd ~/Apps/musrfit/src/musrgui
|
||||
$ qmake musrgui.pro
|
||||
$ make
|
||||
$ make install
|
||||
@ -1048,7 +990,7 @@ If <code>musrgui</code> has been installed, just open one of the <strong>test-&#
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a> > <a href="MusrFit.html">MusrFit</a><span class='foswikiSeparator'> > </span>MusrFitSetup <br />
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>27 Mar 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1066,5 +1008,5 @@ Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetup?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:39 GMT -->
|
||||
</html>
|
@ -1,358 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetupDKS?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:55 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
<title> MUSR :: MusrFitSetupDKS</title>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.5, user-scalable=yes" />
|
||||
<meta name="mobile-web-app-capable" content="yes" />
|
||||
<meta name="mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrFitSetupDKS?t=1503504094" type="application/x-wiki" title="edit MusrFitSetupDKS" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/colors.css');
|
||||
</style>
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkinTheme2009/column_left.css' media='all' type='text/css' />
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkinTheme2009/variant_twiki.css' media='all' type='text/css' /><style type="text/css" media="all">
|
||||
/* Styles that are set using variables */
|
||||
.patternBookView .foswikiTopRow,
|
||||
.patternWebIndicator,
|
||||
.patternWebIndicator a {
|
||||
background-color:#D0D0D0;
|
||||
}
|
||||
#patternTopBarContents { background-image:url(../pub/System/PatternSkin/header5.gif); background-repeat:repeat-x;}
|
||||
#patternTopBarContents { background-color:#ffffff;}
|
||||
.patternBookView {
|
||||
border-color:#D0D0D0;
|
||||
}
|
||||
.patternPreviewPage #patternMain {
|
||||
/* uncomment to set the preview image */
|
||||
/*background-image:url("/pub/System/PreviewBackground/preview2bg.gif");*/
|
||||
}
|
||||
</style>
|
||||
<style type="text/css" media="all">
|
||||
@import url("../pub/System/PsiSkin/psicolors.css");
|
||||
@import url("../pub/System/PsiSkin/psistyle.css");
|
||||
.foswikiTopic {overflow: hidden;}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='../pub/System/PatternSkin/print.css' media='all' type='text/css' />
|
||||
<!--[if IE 7 ]><style type="text/css" media="screen">
|
||||
.foswikiAttachments,
|
||||
.foswikiForm,
|
||||
.foswikiHelp,
|
||||
.foswikiPreviewArea,
|
||||
.patternPreviewPage .foswikiForm,
|
||||
.patternSigLine,
|
||||
.patternToolBar,
|
||||
.patternTop,
|
||||
.patternTopicAction,
|
||||
#patternSideBarContents .patternLeftBarPersonal,
|
||||
#patternSideBarContents h2,
|
||||
#patternSideBarContents li,
|
||||
#patternTopBarButtons ul {
|
||||
height:1%;
|
||||
}
|
||||
#patternSideBarContents .patternLeftBarPersonal {
|
||||
width:100%;
|
||||
}
|
||||
.foswikiFormStep {
|
||||
height:100%;
|
||||
}
|
||||
#foswikiLogin {
|
||||
margin-left: 25%;
|
||||
margin-right: 25%;
|
||||
}
|
||||
#foswikiLogin .foswikiFormSteps {
|
||||
width:auto;
|
||||
}
|
||||
#foswikiLogin input[type="text"],
|
||||
#foswikiLogin input[type="password"] {
|
||||
width: auto;
|
||||
}
|
||||
.patternShadow {
|
||||
border:10px solid #fff;
|
||||
margin-top:10px;
|
||||
margin-bottom:10px;
|
||||
border:2px solid #ccc;
|
||||
}
|
||||
</style><![endif]-->
|
||||
<!--[if lte IE 9]>
|
||||
|
||||
<![endif]-->
|
||||
<!--[if gt IE 9]><!-->
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
<div id="patternPageShadow">
|
||||
<div id="patternPage">
|
||||
<div id="patternOuter" class="clear">
|
||||
<div id="patternFloatWrap">
|
||||
<div id="patternMain">
|
||||
<div id="patternMainContents">
|
||||
<div class="patternContent"><div class="foswikiTopic"> <h1 id="Setting_up_61musrfit_61_47_61DKS_61:_high_speed_fitting_with_GPU_39s"> Setting up <code>musrfit</code> / <code>DKS</code>: high speed fitting with GPU's </h1>
|
||||
<p></p>
|
||||
<div class="foswikiToc" id="foswikiTOC"> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#Setting_up_61musrfit_61_47_61DKS_61:_high_speed_fitting_with_GPU_39s"> Setting up musrfit / DKS: high speed fitting with GPU's </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1_Setting_up_61_61musrfit_47DKS_61_61_for_a_Tesla_K40c_40NVIDIA_41"> 1 Setting up musrfit/DKS for a Tesla K40c (NVIDIA) </a> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#A_1.1_Driver_Installation_for_the_Tesla_K40c"> 1.1 Driver Installation for the Tesla K40c </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.2_Installation_of_CUDA"> 1.2 Installation of CUDA </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.3_Installation_of_DKS"> 1.3 Installation of DKS </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_1.4_Installation_of_61musrfit_61_for_DKS"> 1.4 Installation of musrfit for DKS </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2_Setting_up_61_61musrfit_47DKS_61_61_for_a_AMD_Graphic_Card_40Radeon_R9_390X_41"> 2 Setting up musrfit/DKS for a AMD Graphic Card (Radeon R9 390X) </a> <ul>
|
||||
<li> <a href="MusrFitSetupDKS.html#A_2.1_Driver_Installation_for_an_AMD_Graphic_Card_44_e.g._Radeon_R9_390X"> 2.1 Driver Installation for an AMD Graphic Card, e.g. Radeon R9 390X </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2.2_AMD_APP_Software_Development_Kit_40SDK_41_to_enable_OpenCL_support"> 2.2 AMD APP Software Development Kit (SDK) to enable OpenCL support </a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_2.3_Installation_of_DKS_and_61musrfit_61"> 2.3 Installation of DKS and musrfit </a>
|
||||
</li></ul>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html#A_3_Setting_up_61_61musrfit_47DKS_61_61_for_macOS_for_OpenCL_support"> 3 Setting up musrfit/DKS for macOS for OpenCL support </a>
|
||||
</li></ul>
|
||||
</div>
|
||||
<p></p>
|
||||
In the years 2016/2017 we explored ways to speed up current fitting frameworks, especially <code>musrfit</code>. This allows now to analyze histogram sets of high field spectrometers like HAL-9500 at PSI without the error-prone RRF fitting (see U. Locans and A. Suter, " <code>musrfit</code> - Real Time Parameter Fitting Using GPUs", accepted for the proceedings of the muSR2017 conference in Sapporo, and the Memo from A. Suter, "Rotating Reference Frame Fits", in the <code>musrfit</code> source code). At the same time it can help to speed-up elaborate global fits tremendously, and dealing properly with muonium. It also allows Apple Mac users to speed up their fitting code on the CPU. Currently it is not straight forward to get <code>musrfit</code> multi-threaded under macOS since Apple doesn't be default support OpenMP. DKS enables <code>musrfit</code> to utilize OpenCL instead which is present on macOS by default.
|
||||
<p></p>
|
||||
<strong>Warning</strong>: before you run into the shop to buy a gamer graphic card or a Tesla card, make sure that you have an appropriate server with a sufficiently strong power supply!
|
||||
<p></p>
|
||||
<strong>However, the current <code>musrfit/DKS</code> version doesn't yet support all theory functions on the GPU.</strong> In case the theory function is not yet available for the GPU, <code>musrfit</code> will fall back to the CPU implementation.
|
||||
<p></p>
|
||||
Conceptually the setup of <code>musrfit/DKS</code> is as following: <ol>
|
||||
<li> install the latest hardware driver for your graphic card.
|
||||
</li> <li> install the GPU SDK which enables number crunching (CUDA for NVIDIA, OpenCL for AMD)
|
||||
</li> <li> install DKS
|
||||
</li> <li> install the musrfit version which is DKS ready
|
||||
</li></ol>
|
||||
<p></p>
|
||||
In the following the description for the installation of <code>musrfit/DKS</code> for the following systems will be discussed in some more detail: <ul>
|
||||
<li> NVIDIA Tesla K40c
|
||||
</li> <li> AMD Graphic Card (Radeon R9 390X)
|
||||
</li> <li> macOS in order to get OpenCL support
|
||||
</li></ul>
|
||||
<p></p>
|
||||
The <strong>usage</strong> of <code>musrfit</code> with GPU acceleration and OpenCL support is described in the <a href="MusrFit.html">'User manual of the μSR data analysis software <code>musrfit</code> '</a>. The additional <code>musrfit</code> / DKS commands are labelled in <span class='foswikiMaroonFG'> <strong>MAROON</strong> </span>.
|
||||
<p></p>
|
||||
<h1 id="A_1_Setting_up_61_61musrfit_47DKS_61_61_for_a_Tesla_K40c_40NVIDIA_41"> 1 Setting up <code><b>musrfit/DKS</b></code> for a Tesla K40c (NVIDIA) </h1>
|
||||
<p></p>
|
||||
It is assumed that the Tesla K40c is already physically installed on your system. For now I only will discuss to set it up for a Linux based system. In order to check that your operating systems see the card, enter the following command in the terminal:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ lspci | grep NVIDIA
|
||||
</pre>
|
||||
<p></p>
|
||||
On the response you should find something like
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
05:00.0 3D controller: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1)
|
||||
</pre>
|
||||
<p></p>
|
||||
which means that the OS physically recognises your card.
|
||||
<p></p>
|
||||
<h2 id="A_1.1_Driver_Installation_for_the_Tesla_K40c"> 1.1 Driver Installation for the Tesla K40c </h2>
|
||||
<p></p>
|
||||
Next, you will need to download and install the driver for your card. Select the proper operating system, card, etc. from the <a href="http://www.nvidia.com/Download/index.aspx?lang=en-us">NVIDIA download center</a>. At PSI we are running currently Red Hat Enterprise Linux 7.x (RHEL) for which we will get a rpm (something like <code>nvidia-diag-driver-local-repo-rhel7-375.66-1.x86_64.rpm</code>). Install it and make sure there is no conflict with the nouveau driver of the system.
|
||||
<p></p>
|
||||
<h2 id="A_1.2_Installation_of_CUDA"> 1.2 Installation of CUDA </h2>
|
||||
<p></p>
|
||||
Download the <a href="https://developer.nvidia.com/cuda-downloads">CUDA SDK</a> form NVIDIA for your system. Again, for the RHEL 7.x this is an rpm. After the installation of the rpm you should reboot your machine. Afterwards you are ready for the installation of DKS.
|
||||
<p></p>
|
||||
<span id="DksInstall"></span>
|
||||
<h2 id="A_1.3_Installation_of_DKS"> 1.3 Installation of DKS </h2>
|
||||
<p></p>
|
||||
For the following list of commands the '$' will be given as the command prompt. Do not enter it! Also some comments will be added starting with a '#' which can be omitted. They are only there to explain what is going on.
|
||||
<code>DKS</code> stands for Dynamical Kernel Scheduler and provides a thin interface allowing host applications to incorporate GPU's and other hardware accelerators.
|
||||
<p></p>
|
||||
Details can be found in the papers listed <a href="CiteMusrFit.html">here</a>, or on the <a href="https://gitlab.psi.ch/uldis_l/DKS/wikis/home">DKS wiki page</a>.
|
||||
<p></p>
|
||||
In brief the installation should be something like this:<pre class="bash">
|
||||
# go to whatever directory you would like to clone/install DKS
|
||||
# For macOS DKS will likely to got to $HOME/Applications to be consistent with the musrfit docu for macOS
|
||||
$ cd $HOME/Apps
|
||||
$ git clone https://gitlab.psi.ch/uldis_l/DKS.git
|
||||
$ cd DKS
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ../ -DENABLE_MUSR=1 -DCMAKE_INSTALL_PREFIX=../exec
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
<p></p>
|
||||
Since <code>DKS</code> is installed in a non-standard path, a couple of additional small steps are required. This will be different for Linux compared to macOS.
|
||||
<p></p>
|
||||
For <strong>Linux</strong>:
|
||||
<p></p>
|
||||
add the <code>DKS</code> library path to <code>/etc/ld.so.conf.d/musrfit-x86_64.conf</code> and execute as super user
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ /sbin/ldconfig
|
||||
</pre>
|
||||
<p></p>
|
||||
For <strong>macOS</strong>:
|
||||
<p></p>
|
||||
add the <code>DKS</code> path to <code>$HOME/.profile</code>:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
export DKS=$HOME/Applications/DKS/exec
|
||||
export LD_LIBRARY_PATH=$DKS/lib:$LD_LIBRARY_PATH
|
||||
|
||||
launchctl setenv DKS $DKS
|
||||
launchctl setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH
|
||||
</pre>
|
||||
<p></p>
|
||||
<h2 id="A_1.4_Installation_of_61musrfit_61_for_DKS"> 1.4 Installation of <code>musrfit</code> for DKS </h2>
|
||||
<p></p>
|
||||
Most of the installation steps are the same as described for <a href="MusrFitSetup.html"><code>musrfit</code></a> without GPU support.
|
||||
Here only the differences are explained. First checkout <code>musrfit</code>, then you will need to switch the working branch which is done by<pre class="bash">
|
||||
$ cd $HOME/Apps/musrfit
|
||||
$ git checkout dks6
|
||||
</pre>
|
||||
<p></p>
|
||||
The configure script for <code>musrfit</code> has now a couple of more tags/options, which are: <ul>
|
||||
<li> <code><b>--enable-dks</b></code>: by default this is set to <code><b>no</b></code>, hence if you want to have GPU support you need to enable it.
|
||||
</li> <li> <code><b>--with-cuda</b></code>: with this tag you tell the configure script where it can find CUDA
|
||||
</li> <li> <code><b>--with-opencl</b></code>: with this tag you tell the configure script where it can find OpenCL
|
||||
</li> <li> <code><b>--with-dks</b></code>: with this tag you tell the configure script where it can find <code>DKS</code>
|
||||
</li></ul>
|
||||
<p></p>
|
||||
For a typical setup on a RHEL system it could look like this
|
||||
<pre class="bash">
|
||||
$ ./configure --enable-ASlibs --enable-BMWlibs --enable-NeXus --with-dks=$HOME/Apps/DKS/exec --enable-dks --prefix=$ROOTSYS
|
||||
</pre>
|
||||
whereas for macOS it would typically something like this
|
||||
<pre class="bash">
|
||||
$ ./configure --enable-ASlibs --enable-BMWlibs --enable-NeXus --with-dks=$HOME/Applications/DKS/exec --enable-dks --prefix=$ROOTSYS
|
||||
</pre>
|
||||
After
|
||||
<pre class="bash">
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
and updating the shared library lookup table (only needed for Linux)
|
||||
<pre class="bash">
|
||||
/sbin/ldconfig # as superuser / root
|
||||
</pre>
|
||||
you are done with the setup.
|
||||
<p></p>
|
||||
<h1 id="A_2_Setting_up_61_61musrfit_47DKS_61_61_for_a_AMD_Graphic_Card_40Radeon_R9_390X_41"> 2 Setting up <code><b>musrfit/DKS</b></code> for a AMD Graphic Card (Radeon R9 390X) </h1>
|
||||
<p></p>
|
||||
<h2 id="A_2.1_Driver_Installation_for_an_AMD_Graphic_Card_44_e.g._Radeon_R9_390X"> 2.1 Driver Installation for an AMD Graphic Card, e.g. Radeon R9 390X </h2>
|
||||
<p></p>
|
||||
This will depend slightly on the AMD Card and operating system. Here I will summaries how it was done on a RHEL (Linux) system using a Radeon R9 390X.
|
||||
<p></p>
|
||||
It is assumed that the Radeon R9 390X is already physically installed on your system. For now I only will discuss to set it up for a Linux based system. In order to check that your operating systems see the card, enter the following command in the terminal:
|
||||
<p></p>
|
||||
<pre class="bash">
|
||||
$ lspci | grep NVIDIA
|
||||
</pre>
|
||||
<p></p>
|
||||
On the response you should find something like
|
||||
<pre class="bash">
|
||||
84:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii XT / Grenada XT [Radeon R9 290X/390X] (rev 80)
|
||||
</pre>
|
||||
which means that the OS physically recognises your card.
|
||||
<p></p>
|
||||
For RHEL7.x the AMDGPU-PRO driver should be used. It can be downloaded from <a href="http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-RedHat-Install.aspx">here</a>.
|
||||
Unpack the driver
|
||||
<pre class="bash">
|
||||
$ tar -Jxvf amdgpu-pro-17.10-414273.tar.xz
|
||||
$ cd amdgpu-pro-17.10-414273
|
||||
</pre>
|
||||
<p></p>
|
||||
Install the driver as root
|
||||
<pre class="bash">
|
||||
$ ./amdgpu-pro-install --compute -y
|
||||
</pre>
|
||||
<p></p>
|
||||
Here I assume that the AMD graphic card is only used for computation. You need to add the following command in order that the user 'blabla' (chance this to the appropriate user name) can access the GPU (otherwise only root works):
|
||||
<pre class="bash">
|
||||
$ /sbin/usermod -a -G video blabla
|
||||
</pre>
|
||||
<p></p>
|
||||
Reboot the machine.
|
||||
<p></p>
|
||||
<h2 id="A_2.2_AMD_APP_Software_Development_Kit_40SDK_41_to_enable_OpenCL_support"> 2.2 AMD APP Software Development Kit (SDK) to enable OpenCL support </h2>
|
||||
<p></p>
|
||||
The AMD APP Software Development Kit (SDK) is a complete development platform created by AMD to allow you to quickly and easily develop applications accelerated by AMD APP technology. The SDK provides samples, documentation, and other materials to quickly get you started leveraging accelerated compute using OpenCL or <code>C++ AMP</code> in your <code>C/C++</code> applications.
|
||||
<p></p>
|
||||
Download the AMD APP SDK 3.0 from <a href="http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/">here</a>.
|
||||
<p></p>
|
||||
Extract the installer
|
||||
<pre class="bash">
|
||||
$ tar -xvjf AMD-APP-SDKInstaller-v3.0.130.136-GA-linux64.tar.bz2
|
||||
</pre>
|
||||
<p></p>
|
||||
Run the installer
|
||||
<pre class="bash">
|
||||
$ ./AMD-APP-SDK-v3.0.130.136-GA-linux64.sh
|
||||
</pre>
|
||||
<p></p>
|
||||
This will install the AMD APP SDK to /opt/AMDAPPSDK-3.0/ where you can find the OpenCL include and library files, as well as documentation and sample code.
|
||||
The install guide for AMD OpenCL SDK can be found <a href="http://developer.amd.com/wordpress/media/2012/10/AMD_APP_SDK_InstallationNotes.pdf">here</a>.
|
||||
<p></p>
|
||||
<h2 id="A_2.3_Installation_of_DKS_and_61musrfit_61"> 2.3 Installation of DKS and <code>musrfit</code> </h2>
|
||||
<p></p>
|
||||
To install DKS and <code>musrfit</code> follow the instructions <a class="foswikiCurrentTopicLink" href="#DksInstall">here</a>.
|
||||
<p></p>
|
||||
<h1 id="A_3_Setting_up_61_61musrfit_47DKS_61_61_for_macOS_for_OpenCL_support"> 3 Setting up <code><b>musrfit/DKS</b></code> for macOS for OpenCL support </h1>
|
||||
<p></p>
|
||||
Since Apple is not providing an out-of-the-box OpenMP support on their macOS compiler framework (Xcode), typically <code>musrfit</code> is just running single threaded. Here DKS can help since it delivers OpenCL support which is present on macOS. Hence, if you would like to run <code>musrfit</code> multi-threaded the easiest way is to use DKS.
|
||||
<p></p>
|
||||
Since there is no graphic card involved, you do not need any graphic card driver of additional SDK. The only thing you need DKS and the proper <code>musrfit</code> version.
|
||||
<p></p>
|
||||
The installation instruction for DKS / <code>musrfit</code> can be found <a class="foswikiCurrentTopicLink" href="#DksInstall">here</a>.
|
||||
<p></p>
|
||||
-- <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a> - 22 Aug 2017</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span><a class="foswikiCurrentWebHomeLink" href="WebHome.html">WebHome</a><span class='foswikiSeparator'> > </span>MusrFitSetupDKS <br />
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div><div id="patternBottomBar"><div id="patternBottomBarContents"><div id="patternWebBottomBar"><span class="foswikiRight"> <a href="http://foswiki.org/"><img src="../pub/System/ProjectLogos/foswiki-badge.png" alt="This site is powered by Foswiki" title="This site is powered by Foswiki" /></a></span>Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors. <br /> Ideas, requests, problems regarding PSI Wiki? <a href='mailto:thomas.buecklers@psi.ch?subject=PSI Wiki %20Feedback%20on%20MUSR.MusrFitSetupDKS'>Send feedback</a></div></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></div><!-- /endWrap -->
|
||||
<p></p>
|
||||
<!-- Piwik -->
|
||||
|
||||
<noscript><p><img src="../piwik/piwikf832.gif?idsite=7" style="border:0" alt=""></p></noscript>
|
||||
<!-- End Piwik Tag -->
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrFitSetupDKS?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:56 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:49 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,11 +14,12 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrGui?t=1503504094" type="application/x-wiki" title="edit MusrGui" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrGui?t=1494785296" type="application/x-wiki" title="edit MusrGui" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
body .foswikiTable td {border-style:solid none; vertical-align:top}
|
||||
@ -50,10 +51,9 @@ body .foswikiTable#tableMusrGui1 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -137,16 +137,16 @@ body .foswikiTable#tableMusrGui1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::TWISTY--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -531,5 +531,5 @@ Topic revision: <span class='patternRevInfo'>14 May 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:54 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrGui?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:38 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:37 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:20 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrRoot?t=1503504092" type="application/x-wiki" title="edit MusrRoot" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/MusrRoot?t=1494785293" type="application/x-wiki" title="edit MusrRoot" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
@ -53,9 +54,8 @@ body .foswikiTable#tableMusrRoot7 th.foswikiSortedCol {background-color:#eeeeee}
|
||||
body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -140,14 +140,14 @@ body .foswikiTable#tableMusrRoot7 tr.foswikiTableRowdataBg0 td.foswikiSortedCol
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::METADATA-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
|
||||
<!--JQUERYPLUGIN::CHILI-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -1125,5 +1125,5 @@ Topic revision: <span class='patternRevInfo'>29 Mar 2012, suter_a</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:42 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/MusrRoot?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:26 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:48 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,14 +14,14 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/QuickStart?t=1503504093" type="application/x-wiki" title="edit QuickStart" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/QuickStart?t=1494785296" type="application/x-wiki" title="edit QuickStart" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@import url('../pub/System/PatternSkinTheme2009/style.css');
|
||||
@ -104,12 +104,12 @@
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -285,5 +285,5 @@ Topic revision: <span class='patternRevInfo'>10 Jul 2011, wojek</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:49 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/QuickStart?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:45 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:30 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,11 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/TutorialSingleHisto?t=1503504093" type="application/x-wiki" title="edit TutorialSingleHisto" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/TutorialSingleHisto?t=1494785295" type="application/x-wiki" title="edit TutorialSingleHisto" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
<base /><!--[if IE]></base><![endif]--><style class='head TABLEPLUGIN_default' type="text/css" media="all">
|
||||
body .foswikiTable {border-width:1px}
|
||||
body .foswikiTable .tableSortIcon img {padding-left:.3em; vertical-align:text-bottom}
|
||||
body .foswikiTable td {border-style:solid none; vertical-align:top}
|
||||
@ -34,7 +32,6 @@ body .foswikiTable tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-col
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td {background-color:#f7f7f6}
|
||||
body .foswikiTable tr.foswikiTableRowdataBg1 td.foswikiSortedCol {background-color:#f0f0ee}
|
||||
</style><!--TABLEPLUGIN_default-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<style class='head TABLEPLUGIN_specific' type="text/css" media="all">
|
||||
body .foswikiTable#tableTutorialSingleHisto1 td {vertical-align:middle; vertical-align:top}
|
||||
body .foswikiTable#tableTutorialSingleHisto1 td.foswikiTableCol0 {text-align:left}
|
||||
@ -53,8 +50,11 @@ body .foswikiTable#tableTutorialSingleHisto1 th.foswikiSortedCol {background-col
|
||||
body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td {background-color:#ffffff}
|
||||
body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td.foswikiSortedCol {background-color:#f5f5f5}
|
||||
</style><!--TABLEPLUGIN_specific-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head IMAGEPLUGIN' rel="stylesheet" href="../pub/System/ImagePlugin/style.css" type="text/css" media="all" /><!--IMAGEPLUGIN-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head JQUERYPLUGIN::TWISTY' rel='stylesheet' href='../pub/System/TwistyPlugin/twisty327a.css?version=1.6.0' type='text/css' media='all' /><!--JQUERYPLUGIN::TWISTY: requires= missing ids: JavascriptFiles/foswikiPref-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -141,10 +141,10 @@ body .foswikiTable#tableTutorialSingleHisto1 tr.foswikiTableRowdataBg0 td.foswik
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JQUERYPLUGIN::TWISTY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::COMMENT--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -401,5 +401,5 @@ Topic revision: <span class='patternRevInfo'>02 Sep 2011, wojek</span></div>
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:01:48 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/TutorialSingleHisto?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:08:33 GMT -->
|
||||
</html>
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html><html lang="en">
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:27 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:10 GMT -->
|
||||
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=utf-8" /><!-- /Added by HTTrack -->
|
||||
<head>
|
||||
<link rel="stylesheet" href="../pub/System/HeadlinesPlugin/style.css" type="text/css" media="all" />
|
||||
@ -14,13 +14,13 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<link rel="icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="../pub/Main/WebPreferences/favicon.ico" type="image/x-icon" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/WebHome?t=1503504096" type="application/x-wiki" title="edit WebHome" />
|
||||
<link rel="alternate" href="https://intranet.psi.ch/wiki/bin/edit/MUSR/WebHome?t=1494785300" type="application/x-wiki" title="edit WebHome" />
|
||||
<meta name="TEXT_NUM_TOPICS" content="Number of topics:" />
|
||||
<meta name="TEXT_MODIFY_SEARCH" content="Modify search" />
|
||||
<meta name="robots" content="noindex" /><link rel="alternate" type="application/rss+xml" title="RSS Feed" href="WebRss" />
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<base /><!--[if IE]></base><![endif]--><link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<link class='head JQUERYPLUGIN::COMMENT' rel='stylesheet' href='../pub/System/CommentPlugin/commentf5b6.css?version=3.0' type='text/css' media='all' /><!--JQUERYPLUGIN::COMMENT-->
|
||||
<link class='head CLASSIFICATIONPLUGIN::CSS' rel="stylesheet" href="../pub/System/ClassificationPlugin/styles.css" media="all" /><!--CLASSIFICATIONPLUGIN::CSS-->
|
||||
<link class='head SMILIESPLUGIN' rel='stylesheet' href='../pub/System/SmiliesPlugin/smilies.css' type='text/css' media='all' /><!--SMILIESPLUGIN--><link rel='stylesheet' href='../pub/System/SkinTemplates/base.css' media='all' type='text/css' />
|
||||
<style type="text/css" media="all">
|
||||
@import url('../pub/System/PatternSkinTheme/layout.css');
|
||||
@ -101,15 +101,15 @@
|
||||
|
||||
<!--<![endif]-->
|
||||
<!--JQUERYPLUGIN-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JQUERYPLUGIN::LIVEQUERY-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI-->
|
||||
<!--JQUERYPLUGIN::MIGRATE-->
|
||||
<!--JavascriptFiles/foswikiString-->
|
||||
<!--JavascriptFiles/foswikiPref-->
|
||||
<!--JavascriptFiles/foswikiForm-->
|
||||
<!--PatternSkin/pattern-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES-->
|
||||
<!--JQUERYPLUGIN::COMMENT-->
|
||||
<!--JQUERYPLUGIN::FOSWIKI::PREFERENCES--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
<!--PatternSkin/pattern--><link class='head FOOTNOTEPLUGIN_LINKCSS' rel="stylesheet" href="../pub/System/FootNotePlugin/styles.css" type="text/css" media="all" /><!--FOOTNOTEPLUGIN_LINKCSS-->
|
||||
</head>
|
||||
<body class="foswikiNoJs patternViewPage patternPrintPage">
|
||||
<span id="PageTop"></span><div class="foswikiPage"><div id="patternScreen">
|
||||
@ -125,10 +125,9 @@
|
||||
<li> <a href="CiteMusrFit.html">How to cite <code>musrfit</code>? <img class='smily' src='../pub/Main/SmiliesPluginPSI/yes.gif' alt='yes' title='yes' /> </a>
|
||||
</li> <li> <a href="TutorialSingleHisto.html">Single-histogram-fit tutorial for <code>musrfit</code> introducing the basic features of the programs and <code>msr</code> files</a>
|
||||
</li> <li> <a href="MusrFit.html">User manual of the μSR data analysis software <code>musrfit</code> </a>
|
||||
</li> <li> <a href="MusrFitSetup.html">Setting up <code>musrfit</code> on Different Platforms</a>
|
||||
</li> <li> <a href="MusrFitSetupDKS.html">Setting up <code>musrfit</code> / <code>DKS</code>: high speed fitting with GPU's <img src="../pub/System/DocumentGraphics/new.png" alt="NEW" title="NEW" width="30" height="16" /> <span class='foswikiGreenFG'>(Aug. 2017)</span></a>
|
||||
</li> <li> <a href="MusrFitSetup.html">Setting up <code>musrfit</code> on Different Platforms <img src="../pub/System/DocumentGraphics/new.png" alt="NEW" title="NEW" width="30" height="16" /> <strong><span class='foswikiRedFG'>ROOT6!</span></strong></a>
|
||||
</li> <li> <a href="QuickStart.html">Quick start page for <code>WKM</code> users</a>
|
||||
</li> <li> <a href="MusrGui.html">Documentation of <code>musrgui</code>/<code>musredit</code>—editors interfacing <code>musrfit</code></a>
|
||||
</li> <li> <a href="MusrGui.html">Documentation of <code>musrgui</code>/<code>musredit</code>—editors interfacing <code>musrfit</code> <img src="../pub/System/DocumentGraphics/updated.png" alt="UPDATED" title="UPDATED" width="55" height="16" /></a>
|
||||
</li> <li> <a href="Msr2Data.html">Documentation of <code>msr2data</code>—a program for automatically processing multiple musrfit <code>msr</code> files</a>
|
||||
</li> <li> <a href="MusrFit.html#Any2Many"><code>any2many</code>—a universal μSR-file-format converter</a>
|
||||
</li> <li> <a href="MusrRoot.html"><code>MusrRoot</code>: an extensible open file format for μSR</a>
|
||||
@ -139,12 +138,12 @@
|
||||
</li> <li> <a href="MusrFitAcknowledgements.html">Acknowledgements</a>
|
||||
</li></ul>
|
||||
<p></p>
|
||||
-- <a href="http://www.psi.ch/low-energy-muons/people">AS</a> & (<a href="http://www.fsf.org/register_form?referrer=8369">BMW</a>) - last update Aug 23, 2017</div>
|
||||
-- <a href="http://www.psi.ch/low-energy-muons/people">AS</a> & (<a href="http://www.fsf.org/register_form?referrer=8369">BMW</a>) - last update May 14, 2017</div>
|
||||
<p></p>
|
||||
<p></p>
|
||||
</div>
|
||||
<div class="patternInfo">This topic: MUSR<span class='foswikiSeparator'> > </span>WebHome <br />
|
||||
Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
Topic revision: <span class='patternRevInfo'>14 May 2017, <a href="https://intranet.psi.ch/Main/AndreasSuter">AndreasSuter</a></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -162,5 +161,5 @@ Topic revision: <span class='patternRevInfo'>23 Aug 2017, <a href="https://intr
|
||||
|
||||
</body>
|
||||
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Wed, 23 Aug 2017 16:02:28 GMT -->
|
||||
<!-- Mirrored from intranet.psi.ch/MUSR/WebHome?cover=print by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 14 May 2017 18:09:12 GMT -->
|
||||
</html>
|
@ -60,16 +60,15 @@ write_musrRoot_runHeader_SOURCES = write_musrRoot_runHeader.cpp
|
||||
musrRootValidation_SOURCES = musrRootValidation.cpp
|
||||
dump_header_SOURCES = dump_header.cpp
|
||||
|
||||
LIBADD = $(PMUSR_LIBS) $(MUSR_ROOT_LIBS) $(LEM_LIBS) $(PSIBIN_LIBS) $(MUD_LIBS) $(PNEXUS_LIBS) $(DKS_LIB)
|
||||
LIBADD = $(PMUSR_LIBS) $(MUSR_ROOT_LIBS) $(LEM_LIBS) $(PSIBIN_LIBS) $(MUD_LIBS) $(PNEXUS_LIBS)
|
||||
|
||||
AM_CXXFLAGS = $(LOCAL_BIN_CXXFLAGS)
|
||||
AM_LDFLAGS = $(LOCAL_BIN_LDFLAGS)
|
||||
AM_CPPFLAGS = $(MUSR_ROOT_CFLAGS) $(LEM_CFLAGS) $(MUD_CFLAGS) $(PSIBIN_CFLAGS) $(PMUSR_CFLAGS) $(FFTW3_CFLAGS) $(GSL_CFLAGS) $(BOOST_CFLAGS) $(ROOT_CFLAGS) \
|
||||
$(LIBXML2_CFLAGS) $(DKS_CFLAGS)
|
||||
$(LIBXML2_CFLAGS)
|
||||
if PNEXUS_ENABLED
|
||||
AM_CPPFLAGS += $(HDF5_CFLAGS) $(NEXUS_CFLAGS) $(PNEXUS_CXXFLAGS)
|
||||
endif
|
||||
|
||||
LIBS = $(PMUSR_LIBS) $(USERFCN_LIBS) $(MUSR_ROOT_LIBS) $(LEM_LIBS) $(PSIBIN_LIBS) $(MUD_LIBS) $(PNEXUS_LIBS) \
|
||||
$(FFTW3_LIBS) $(GSL_LIBS) $(DKS_CFLAGS) $(ROOT_LIBS) $(LIBXML2_LIBS) $(BOOST_LIBS)
|
||||
|
||||
$(FFTW3_LIBS) $(GSL_LIBS) $(ROOT_LIBS) $(LIBXML2_LIBS)
|
||||
|
@ -1,9 +1,8 @@
|
||||
## Process this file with automake to create Makefile.in
|
||||
|
||||
h_sources = \
|
||||
../include/PFitter.h \
|
||||
../include/PFitterFcn.h \
|
||||
../include/PFitterFcnDKS.h \
|
||||
../include/PFitter.h \
|
||||
../include/PFourier.h \
|
||||
../include/PFourierCanvas.h \
|
||||
../include/PFunctionGrammar.h \
|
||||
@ -51,7 +50,6 @@ dict_h_sources_userFcn = \
|
||||
cpp_sources = \
|
||||
PFitter.cpp \
|
||||
PFitterFcn.cpp \
|
||||
PFitterFcnDKS.cpp \
|
||||
PFourier.cpp \
|
||||
PFourierCanvas.cpp \
|
||||
PFunction.cpp \
|
||||
@ -97,7 +95,7 @@ pcm_DATA = \
|
||||
include_HEADERS = $(h_sources) $(h_sources_userFcn)
|
||||
noinst_HEADERS = $(h_linkdef) $(dict_h_sources) $(h_linkdef_userFcn) $(dict_h_sources_userFcn)
|
||||
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/src/include $(MUSR_ROOT_CFLAGS) $(PSIBIN_CFLAGS) $(MUD_CFLAGS) $(LEM_CFLAGS) $(FFTW3_CFLAGS) $(GSL_CFLAGS) $(BOOST_CFLAGS) -I$(ROOTINCDIR) $(PNEXUS_CXXFLAGS) $(NEXUS_CFLAGS) $(DKS_CFLAGS)
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/src/include $(MUSR_ROOT_CFLAGS) $(PSIBIN_CFLAGS) $(MUD_CFLAGS) $(LEM_CFLAGS) $(FFTW3_CFLAGS) $(GSL_CFLAGS) $(BOOST_CFLAGS) -I$(ROOTINCDIR) $(PNEXUS_CXXFLAGS) $(NEXUS_CFLAGS)
|
||||
AM_CXXFLAGS = $(LOCAL_LIB_CXXFLAGS)
|
||||
|
||||
BUILT_SOURCES = $(dict_cpp_sources) $(dict_h_sources) $(dict_cpp_sources_userFcn) $(dict_h_sources_userFcn)
|
||||
@ -114,7 +112,7 @@ libPUserFcnBase_la_LIBADD = $(ROOT_LIBS)
|
||||
libPUserFcnBase_la_LDFLAGS = -version-info $(MUSR_LIBRARY_VERSION) -release $(MUSR_RELEASE) $(AM_LDFLAGS)
|
||||
|
||||
libPMusr_la_SOURCES = $(h_sources) $(cpp_sources) $(dict_h_sources) $(dict_cpp_sources)
|
||||
libPMusr_la_LIBADD = libPUserFcnBase.la $(MUSR_ROOT_LIBS) $(LEM_LIBS) $(PSIBIN_LIBS) $(MUD_LIBS) $(PNEXUS_LIBS) $(FFTW3_LIBS) $(GSL_LIBS) $(DKS_LIBS) $(ROOT_LIBS)
|
||||
libPMusr_la_LIBADD = libPUserFcnBase.la $(MUSR_ROOT_LIBS) $(LEM_LIBS) $(PSIBIN_LIBS) $(MUD_LIBS) $(PNEXUS_LIBS) $(FFTW3_LIBS) $(GSL_LIBS) $(ROOT_LIBS)
|
||||
libPMusr_la_LDFLAGS = -version-info $(MUSR_LIBRARY_VERSION) -release $(MUSR_RELEASE) $(AM_LDFLAGS)
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
@ -31,8 +31,6 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
#ifdef HAVE_GOMP
|
||||
#include <omp.h>
|
||||
#endif
|
||||
@ -40,14 +38,13 @@
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <limits>
|
||||
|
||||
#include <cmath>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
using namespace std;
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "Minuit2/FunctionMinimum.h"
|
||||
#include "Minuit2/MnContours.h"
|
||||
#include "Minuit2/MnHesse.h"
|
||||
@ -80,13 +77,11 @@ using namespace std;
|
||||
* \param runInfo pointer of the msr-file handler
|
||||
* \param runListCollection pointer of the run list collection (pre-processed historgrams)
|
||||
* \param chisq_only flag: true=calculate chisq only (no fitting)
|
||||
* \param hardwareInfo string containing CPU/GPU information
|
||||
*/
|
||||
PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only, TString hardwareInfo) :
|
||||
fChisqOnly(chisq_only), fHardwareInfo(hardwareInfo), fRunInfo(runInfo), fRunListCollection(runListCollection)
|
||||
PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only) :
|
||||
fChisqOnly(chisq_only), fRunInfo(runInfo), fRunListCollection(runListCollection)
|
||||
{
|
||||
// initialize variables
|
||||
fDKSReady = false;
|
||||
fIsScanOnly = true;
|
||||
fConverged = false;
|
||||
fUseChi2 = true; // chi^2 is the default
|
||||
@ -98,7 +93,6 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo
|
||||
|
||||
// init class variables
|
||||
fFitterFcn = 0;
|
||||
fFitterFcnDKS = 0;
|
||||
fFcnMin = 0;
|
||||
|
||||
fScanAll = true;
|
||||
@ -123,35 +117,11 @@ PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bo
|
||||
return;
|
||||
}
|
||||
|
||||
// get the DKS tag from the commands block
|
||||
fDKSTag = fRunInfo->GetDKSTag();
|
||||
|
||||
// check if the theory function can already run on the GPU
|
||||
string theo = fRunInfo->GetDKSTheoryString();
|
||||
if (fDKSTag != DKS_CPU_OPENMP) {
|
||||
if (!theo.compare("??")) { // theory not yet DKS ready
|
||||
cout << endl << ">> PFitter::PFitter(): **INFO** theory not yet DKS/GPU ready. Will run on the CPU." << endl;
|
||||
} else {
|
||||
fDKSReady = true;
|
||||
cout << endl << ">> PFitter::PFitter(): **INFO** theory DKS/GPU ready. Will run on the GPU." << endl;
|
||||
}
|
||||
}
|
||||
|
||||
// create fit function object depending whether DKS/GPU can be used or not
|
||||
if (fDKSReady && (fDKSTag != DKS_CPU_OPENMP)) { // run on the GPU
|
||||
fFitterFcnDKS = new PFitterFcnDKS(runListCollection, fUseChi2, fDKSTag, theo);
|
||||
if (!fFitterFcnDKS) {
|
||||
fIsValid = false;
|
||||
}
|
||||
if (!fFitterFcnDKS->IsValid()) {
|
||||
fIsValid = false;
|
||||
}
|
||||
} else { // run on the CPU
|
||||
fDKSReady = false; // needed in case dksTag == DKS_CPU_OPENMP
|
||||
fFitterFcn = new PFitterFcn(runListCollection, fUseChi2);
|
||||
if (!fFitterFcn) {
|
||||
fIsValid = false;
|
||||
}
|
||||
// create fit function object
|
||||
fFitterFcn = new PFitterFcn(runListCollection, fUseChi2);
|
||||
if (!fFitterFcn) {
|
||||
fIsValid = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,11 +144,6 @@ PFitter::~PFitter()
|
||||
fFcnMin = 0;
|
||||
}
|
||||
|
||||
if (fFitterFcnDKS) {
|
||||
delete fFitterFcnDKS;
|
||||
fFitterFcnDKS = 0;
|
||||
}
|
||||
|
||||
if (fFitterFcn) {
|
||||
delete fFitterFcn;
|
||||
fFitterFcn = 0;
|
||||
@ -207,24 +172,13 @@ Bool_t PFitter::DoFit()
|
||||
if (error[i] != 0.0)
|
||||
usedParams++;
|
||||
}
|
||||
Int_t ndf = 0;
|
||||
Double_t val = 0.0;
|
||||
if (fDKSReady) {
|
||||
ndf = fFitterFcnDKS->GetTotalNoOfFittedBins() - usedParams;
|
||||
val = (*fFitterFcnDKS)(param);
|
||||
} else {
|
||||
ndf = fFitterFcn->GetTotalNoOfFittedBins() - usedParams;
|
||||
val = (*fFitterFcn)(param);
|
||||
}
|
||||
|
||||
Int_t ndf = fFitterFcn->GetTotalNoOfFittedBins() - usedParams;
|
||||
Double_t val = (*fFitterFcn)(param);
|
||||
if (fUseChi2) {
|
||||
// calculate expected chisq
|
||||
Double_t totalExpectedChisq = 0.0;
|
||||
std::vector<Double_t> expectedChisqPerHisto;
|
||||
if (fDKSReady)
|
||||
fFitterFcnDKS->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
else
|
||||
fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
// calculate chisq per run
|
||||
std::vector<Double_t> chisqPerHisto;
|
||||
for (UInt_t i=0; i<fRunInfo->GetMsrRunList()->size(); i++) {
|
||||
@ -237,21 +191,14 @@ Bool_t PFitter::DoFit()
|
||||
cout << endl << ">> expected chisq = " << totalExpectedChisq << ", NDF = " << ndf << ", expected chisq/NDF = " << totalExpectedChisq/ndf;
|
||||
UInt_t ndf_histo = 0;
|
||||
for (UInt_t i=0; i<expectedChisqPerHisto.size(); i++) {
|
||||
if (fDKSReady)
|
||||
ndf_histo = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
else
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
if (ndf_histo > 0)
|
||||
cout << endl << ">> run block " << i+1 << ": (NDF/red.chisq/red.chisq_e) = (" << ndf_histo << "/" << chisqPerHisto[i]/ndf_histo << "/" << expectedChisqPerHisto[i]/ndf_histo << ")";
|
||||
}
|
||||
} else if (chisqPerHisto.size() > 0) { // in case expected chisq is not applicable like for asymmetry fits
|
||||
UInt_t ndf_histo = 0;
|
||||
for (UInt_t i=0; i<chisqPerHisto.size(); i++) {
|
||||
if (fDKSReady)
|
||||
ndf_histo = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
else
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
if (ndf_histo > 0)
|
||||
cout << endl << ">> run block " << i+1 << ": (NDF/red.chisq) = (" << ndf_histo << "/" << chisqPerHisto[i]/ndf_histo << ")";
|
||||
}
|
||||
@ -400,14 +347,6 @@ Bool_t PFitter::CheckCommands()
|
||||
cmdLineNo++;
|
||||
if (it->fLine.Contains("COMMANDS", TString::kIgnoreCase)) {
|
||||
continue;
|
||||
} else if (it->fLine.Contains("OpenMP", TString::kIgnoreCase)) { // run on CPU using OpenMP
|
||||
continue;
|
||||
} else if (it->fLine.Contains("CUDA", TString::kIgnoreCase)) { // try to run DKS/GPU CUDA
|
||||
continue;
|
||||
} else if (it->fLine.Contains("OpenCL-GPU", TString::kIgnoreCase)) { // try to run DKS/GPU OpenCL
|
||||
continue;
|
||||
} else if (it->fLine.Contains("OpenCL-CPU", TString::kIgnoreCase)) { // try to run DKS/CPU OpenCL
|
||||
continue;
|
||||
} else if (it->fLine.Contains("SET BATCH", TString::kIgnoreCase)) { // needed for backward compatibility
|
||||
continue;
|
||||
} else if (it->fLine.Contains("END RETURN", TString::kIgnoreCase)) { // needed for backward compatibility
|
||||
@ -1054,13 +993,7 @@ Bool_t PFitter::ExecuteContours()
|
||||
return false;
|
||||
}
|
||||
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
|
||||
ROOT::Minuit2::MnContours contours((*fcn), *fFcnMin);
|
||||
ROOT::Minuit2::MnContours contours((*fFitterFcn), *fFcnMin);
|
||||
|
||||
fScanData = contours(fScanParameter[0], fScanParameter[1], fScanNoPoints);
|
||||
|
||||
@ -1198,13 +1131,8 @@ Bool_t PFitter::ExecuteHesse()
|
||||
|
||||
// call hesse
|
||||
Double_t start=0.0, end=0.0;
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
start=MilliTime();
|
||||
ROOT::Minuit2::MnUserParameterState mnState = hesse((*fcn), fMnUserParams, maxfcn);
|
||||
ROOT::Minuit2::MnUserParameterState mnState = hesse((*fFitterFcn), fMnUserParams, maxfcn);
|
||||
end=MilliTime();
|
||||
cout << ">> PFitter::ExecuteMinimize(): execution time for Hesse = " << setprecision(3) << (end-start)/1.0e3 << " sec." << endl;
|
||||
TString str = TString::Format("Hesse: %.3f sec", (end-start)/1.0e3);
|
||||
@ -1241,12 +1169,7 @@ Bool_t PFitter::ExecuteMigrad()
|
||||
|
||||
// create migrad object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
ROOT::Minuit2::MnMigrad migrad((*fcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMigrad migrad((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -1288,11 +1211,7 @@ Bool_t PFitter::ExecuteMigrad()
|
||||
|
||||
// handle statistics
|
||||
Double_t minVal = min.Fval();
|
||||
UInt_t ndf = 0.0;
|
||||
if (fDKSReady)
|
||||
ndf = fFitterFcnDKS->GetTotalNoOfFittedBins();
|
||||
else
|
||||
ndf = fFitterFcn->GetTotalNoOfFittedBins();
|
||||
UInt_t ndf = fFitterFcn->GetTotalNoOfFittedBins();
|
||||
// subtract number of varied parameters from total no of fitted bins -> ndf
|
||||
for (UInt_t i=0; i<fParams.size(); i++) {
|
||||
if ((min.UserState().Error(i) != 0.0) && !fMnUserParams.Parameters().at(i).IsFixed())
|
||||
@ -1325,12 +1244,7 @@ Bool_t PFitter::ExecuteMinimize()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
ROOT::Minuit2::MnMinimize minimize((*fcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMinimize minimize((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -1373,11 +1287,7 @@ Bool_t PFitter::ExecuteMinimize()
|
||||
|
||||
// handle statistics
|
||||
Double_t minVal = min.Fval();
|
||||
UInt_t ndf = 0.0;
|
||||
if (fDKSReady)
|
||||
ndf = fFitterFcnDKS->GetTotalNoOfFittedBins();
|
||||
else
|
||||
ndf = fFitterFcn->GetTotalNoOfFittedBins();
|
||||
UInt_t ndf = fFitterFcn->GetTotalNoOfFittedBins();
|
||||
// subtract number of varied parameters from total no of fitted bins -> ndf
|
||||
for (UInt_t i=0; i<fParams.size(); i++) {
|
||||
if ((min.UserState().Error(i) != 0.0) && !fMnUserParams.Parameters().at(i).IsFixed())
|
||||
@ -1424,13 +1334,8 @@ Bool_t PFitter::ExecuteMinos()
|
||||
|
||||
// make minos analysis
|
||||
Double_t start=0.0, end=0.0;
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
start=MilliTime();
|
||||
ROOT::Minuit2::MnMinos minos((*fcn), (*fFcnMin));
|
||||
ROOT::Minuit2::MnMinos minos((*fFitterFcn), (*fFcnMin));
|
||||
|
||||
for (UInt_t i=0; i<fParams.size(); i++) {
|
||||
// only try to call minos if the parameter is not fixed!!
|
||||
@ -1620,12 +1525,7 @@ Bool_t PFitter::ExecuteScan()
|
||||
{
|
||||
cout << ">> PFitter::ExecuteScan(): will call scan ..." << endl;
|
||||
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
ROOT::Minuit2::MnScan scan((*fcn), fMnUserParams);
|
||||
ROOT::Minuit2::MnScan scan((*fFitterFcn), fMnUserParams);
|
||||
|
||||
if (fScanAll) { // not clear at the moment what to be done here
|
||||
// TO BE IMPLEMENTED
|
||||
@ -1678,10 +1578,7 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
|
||||
param.push_back(fParams[i].fValue);
|
||||
|
||||
// CalcExpectedChiSquare handles both, chisq and mlh
|
||||
if (fDKSReady)
|
||||
fFitterFcnDKS->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
else
|
||||
fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
fFitterFcn->CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerHisto);
|
||||
|
||||
// calculate chisq per run
|
||||
std::vector<Double_t> chisqPerHisto;
|
||||
@ -1696,10 +1593,7 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
|
||||
// get the ndf's of the histos
|
||||
UInt_t ndf_histo;
|
||||
for (UInt_t i=0; i<expectedChisqPerHisto.size(); i++) {
|
||||
if (fDKSReady)
|
||||
ndf_histo = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
else
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
ndfPerHisto.push_back(ndf_histo);
|
||||
}
|
||||
|
||||
@ -1714,12 +1608,16 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
|
||||
} else if (chisqPerHisto.size() > 1) { // in case expected chisq is not applicable like for asymmetry fits
|
||||
UInt_t ndf_histo = 0;
|
||||
for (UInt_t i=0; i<chisqPerHisto.size(); i++) {
|
||||
if (fDKSReady)
|
||||
ndf_histo = fFitterFcnDKS->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
else
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
ndf_histo = fFitterFcn->GetNoOfFittedBins(i) - fRunInfo->GetNoOfFitParameters(i);
|
||||
ndfPerHisto.push_back(ndf_histo);
|
||||
}
|
||||
|
||||
// feed the msr-file handler
|
||||
PMsrStatisticStructure *statistics = fRunInfo->GetMsrStatistic();
|
||||
if (statistics) {
|
||||
statistics->fMinPerHisto = chisqPerHisto;
|
||||
statistics->fNdfPerHisto = ndfPerHisto;
|
||||
}
|
||||
}
|
||||
|
||||
// clean up
|
||||
@ -1751,31 +1649,6 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
|
||||
fout << endl << "*************************************************************************";
|
||||
fout << endl;
|
||||
|
||||
// write CPU/GPU info
|
||||
switch (fDKSTag) {
|
||||
case DKS_CPU_OPENMP:
|
||||
fout << endl << " CPU info : " << fHardwareInfo;
|
||||
fout << endl << " OpenMP" << endl;
|
||||
break;
|
||||
case DKS_CPU_OPENCL:
|
||||
fout << endl << " CPU info : " << fHardwareInfo;
|
||||
fout << endl << " OpenCL" << endl;
|
||||
break;
|
||||
case DKS_GPU_CUDA:
|
||||
fout << endl << " GPU info : " << fHardwareInfo;
|
||||
fout << endl << " Cuda" << endl;
|
||||
break;
|
||||
case DKS_GPU_OPENCL:
|
||||
fout << endl << " GPU info : " << fHardwareInfo;
|
||||
fout << endl << " OpenCL" << endl;
|
||||
break;
|
||||
default:
|
||||
fout << endl << " CPU/GPU info : unkown" << endl;
|
||||
break;
|
||||
}
|
||||
fout << endl << "*************************************************************************";
|
||||
fout << endl;
|
||||
|
||||
// write elapsed times
|
||||
fout << endl << " elapsed times:";
|
||||
for (UInt_t i=0; i<fElapsedTime.size(); i++) {
|
||||
@ -2032,12 +1905,7 @@ Bool_t PFitter::ExecuteSimplex()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::FCNBase *fcn = 0;
|
||||
if (fDKSReady)
|
||||
fcn = fFitterFcnDKS;
|
||||
else
|
||||
fcn = fFitterFcn;
|
||||
ROOT::Minuit2::MnSimplex simplex((*fcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnSimplex simplex((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
|
||||
// minimize
|
||||
// maxfcn is 10*MINUIT2 Default maxfcn
|
||||
@ -2079,11 +1947,7 @@ Bool_t PFitter::ExecuteSimplex()
|
||||
|
||||
// handle statistics
|
||||
Double_t minVal = min.Fval();
|
||||
UInt_t ndf = 0.0;
|
||||
if (fDKSReady)
|
||||
fFitterFcnDKS->GetTotalNoOfFittedBins();
|
||||
else
|
||||
fFitterFcn->GetTotalNoOfFittedBins();
|
||||
UInt_t ndf = fFitterFcn->GetTotalNoOfFittedBins();
|
||||
// subtract number of varied parameters from total no of fitted bins -> ndf
|
||||
for (UInt_t i=0; i<fParams.size(); i++) {
|
||||
if ((min.UserState().Error(i) != 0.0) && !fMnUserParams.Parameters().at(i).IsFixed())
|
||||
@ -2103,7 +1967,7 @@ Bool_t PFitter::ExecuteSimplex()
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// MilliTime (private)
|
||||
// MilliTime
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>
|
||||
|
@ -41,14 +41,16 @@ using namespace std;
|
||||
* \param runList run list collection
|
||||
* \param useChi2 if true, a chisq fit will be performed, otherwise a log max-likelihood fit will be carried out.
|
||||
*/
|
||||
PFitterFcn::PFitterFcn(PRunListCollection *runList, Bool_t useChi2) :
|
||||
fUseChi2(useChi2),
|
||||
fRunListCollection(runList)
|
||||
PFitterFcn::PFitterFcn(PRunListCollection *runList, Bool_t useChi2)
|
||||
{
|
||||
fUseChi2 = useChi2;
|
||||
|
||||
if (fUseChi2)
|
||||
fUp = 1.0;
|
||||
else
|
||||
fUp = 0.5;
|
||||
|
||||
fRunListCollection = runList;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -112,13 +114,7 @@ void PFitterFcn::CalcExpectedChiSquare(const std::vector<Double_t> &par, Double_
|
||||
if (fUseChi2) {
|
||||
// single histo
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
value = fRunListCollection->GetSingleRunChisqExpected(par, i); // calculate the expected chisq for single histo run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
// mu minus
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
value = fRunListCollection->GetSingleRunChisqExpected(par, i); // calculate the expected chisq for mu minus run block 'i'
|
||||
value = fRunListCollection->GetSingleHistoChisqExpected(par, i); // calculate the expected chisq for single histo run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
@ -129,11 +125,5 @@ void PFitterFcn::CalcExpectedChiSquare(const std::vector<Double_t> &par, Double_
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
// mu minus
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
value = fRunListCollection->GetSingleHistoMaximumLikelihoodExpected(par, i); // calculate the expected maxLH for mu minus run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,469 +0,0 @@
|
||||
/***************************************************************************
|
||||
|
||||
PFitterFcnDKS.cpp
|
||||
|
||||
Author: Andreas Suter
|
||||
e-mail: andreas.suter@psi.ch
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2016 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 <iostream>
|
||||
using namespace std;
|
||||
|
||||
#include "PMusr.h"
|
||||
#include "PFitterFcnDKS.h"
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Constructor
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Constructor.
|
||||
*
|
||||
* \param runList run list collection
|
||||
* \param useChi2 if true, a chisq fit will be performed, otherwise a log max-likelihood fit will be carried out.
|
||||
*/
|
||||
PFitterFcnDKS::PFitterFcnDKS(PRunListCollection *runList, const Bool_t useChi2, const UInt_t dksTag,
|
||||
const std::string theo) :
|
||||
fTheoStr(theo),
|
||||
fUseChi2(useChi2),
|
||||
fRunListCollection(runList)
|
||||
{
|
||||
fValid = false;
|
||||
|
||||
if (fUseChi2)
|
||||
fUp = 1.0;
|
||||
else
|
||||
fUp = 0.5;
|
||||
|
||||
InitDKS(dksTag);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Destructor
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Destructor
|
||||
*/
|
||||
PFitterFcnDKS::~PFitterFcnDKS()
|
||||
{
|
||||
// FreeDKS();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// operator()
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Minuit2 interface function call routine. This is the function which should be minimized.
|
||||
*
|
||||
* \param par a vector with all the parameters of the function
|
||||
*/
|
||||
Double_t PFitterFcnDKS::operator()(const std::vector<Double_t>& par) const
|
||||
{
|
||||
Double_t value = 0.0, chisq = 0.0;
|
||||
|
||||
// write parameter to GPU
|
||||
Int_t ierr = fDKS.writeParams(&par[0], par.size());
|
||||
|
||||
// loop over all data sets
|
||||
PDKSParams dksp;
|
||||
Double_t norm = 1.0;
|
||||
// single histos
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
// get current values of N0, Nbkg, tau, the functions, the maps, the time resolution, the fit start time, etc.
|
||||
ierr = fRunListCollection->GetSingleHistoParams(i, par, dksp);
|
||||
|
||||
// set N0, Nbkg
|
||||
ierr += fDKS.callSetConsts(dksp.fN0, dksp.fTau, dksp.fNbkg);
|
||||
|
||||
// set fun values
|
||||
ierr += fDKS.writeFunctions(&dksp.fFun[0], dksp.fFun.size());
|
||||
|
||||
// set map values
|
||||
ierr += fDKS.writeMaps(&dksp.fMap[0], dksp.fMap.size());
|
||||
|
||||
// calc chisq/log-mlh
|
||||
chisq = 0.0;
|
||||
ierr += fDKS.callLaunchChiSquare(FITTYPE_SINGLE_HISTO, fMemDataSingleHisto[i], fMemDataSingleHistoErr[i], dksp.fNoOfFitBins,
|
||||
par.size(), dksp.fFun.size(), dksp.fMap.size(),
|
||||
dksp.fStartTime , dksp.fPackedTimeResolution, chisq);
|
||||
|
||||
value += chisq;
|
||||
|
||||
if (ierr != 0) {
|
||||
cerr << "PFitterFcnDKS::operator(): **ERROR** Kernel launch for single histo failed!" << endl;
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
// asymmetries
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfAsymmetry(); i++) {
|
||||
// get current values of alpha and beta, the functions, the maps, the time resolution, the fit start time, etc.
|
||||
ierr = fRunListCollection->GetAsymmetryParams(i, par, dksp);
|
||||
|
||||
// set alpha and beta
|
||||
ierr += fDKS.callSetConsts(dksp.fAlpha, dksp.fBeta);
|
||||
|
||||
// set fun values
|
||||
ierr += fDKS.writeFunctions(&dksp.fFun[0], dksp.fFun.size());
|
||||
|
||||
// set map values
|
||||
ierr += fDKS.writeMaps(&dksp.fMap[0], dksp.fMap.size());
|
||||
|
||||
// calc chisq
|
||||
chisq = 0.0;
|
||||
ierr += fDKS.callLaunchChiSquare(FITTYPE_ASYMMETRY, fMemDataAsymmetry[i], fMemDataAsymmetryErr[i], dksp.fNoOfFitBins,
|
||||
par.size(), dksp.fFun.size(), dksp.fMap.size(),
|
||||
dksp.fStartTime , dksp.fPackedTimeResolution, chisq);
|
||||
value += chisq;
|
||||
|
||||
if (ierr != 0) {
|
||||
cerr << "PFitterFcnDKS::operator(): **ERROR** Kernel launch for asymmetry failed!" << endl;
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
// mu mius
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
// get current values of N0, Nbkg, tau, the functions, the maps, the time resolution, the fit start time, etc.
|
||||
ierr = fRunListCollection->GetMuMinusParams(i, par, dksp);
|
||||
|
||||
// set fun values
|
||||
ierr += fDKS.writeFunctions(&dksp.fFun[0], dksp.fFun.size());
|
||||
|
||||
// set map values
|
||||
ierr += fDKS.writeMaps(&dksp.fMap[0], dksp.fMap.size());
|
||||
|
||||
// calc chisq/log-mlh
|
||||
chisq = 0.0;
|
||||
ierr += fDKS.callLaunchChiSquare(FITTYPE_MU_MINUS, fMemDataMuMinus[i], fMemDataMuMinusErr[i], dksp.fNoOfFitBins,
|
||||
par.size(), dksp.fFun.size(), dksp.fMap.size(),
|
||||
dksp.fStartTime , dksp.fPackedTimeResolution, chisq);
|
||||
value += chisq;
|
||||
|
||||
if (ierr != 0) {
|
||||
cerr << "PFitterFcnDKS::operator(): **ERROR** Kernel launch for mu minus failed!" << endl;
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
if (dksp.fScaleN0AndBkg)
|
||||
norm = dksp.fPackedTimeResolution*1.0e3;
|
||||
|
||||
return norm*value;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// CalcExpectedChiSquare (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Calculates the expected chisq, expected chisq per run, and chisq per run, if applicable.
|
||||
*
|
||||
* \param par
|
||||
* \param totalExpectedChisq expected chisq for all run blocks
|
||||
* \param expectedChisqPerRun expected chisq vector for all the run blocks
|
||||
*/
|
||||
void PFitterFcnDKS::CalcExpectedChiSquare(const std::vector<Double_t> &par, Double_t &totalExpectedChisq, std::vector<Double_t> &expectedChisqPerRun)
|
||||
{
|
||||
// init expected chisq related variables
|
||||
totalExpectedChisq = 0.0;
|
||||
expectedChisqPerRun.clear();
|
||||
|
||||
// only do something for chisq
|
||||
Double_t value = 0.0;
|
||||
if (fUseChi2) {
|
||||
// single histo
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
value = fRunListCollection->GetSingleRunChisqExpected(par, i); // calculate the expected chisq for single histo run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
// mu minus
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
value = fRunListCollection->GetSingleRunChisqExpected(par, i); // calculate the expected chisq for mu minus run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
} else {
|
||||
// single histo
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
value = fRunListCollection->GetSingleHistoMaximumLikelihoodExpected(par, i); // calculate the expected maxLH for single histo run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
// mu minus
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
value = fRunListCollection->GetSingleHistoMaximumLikelihoodExpected(par, i); // calculate the expected maxLH for mu minus run block 'i'
|
||||
expectedChisqPerRun.push_back(value);
|
||||
totalExpectedChisq += value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// InitDKS (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>initializes the DKS interface
|
||||
*
|
||||
*/
|
||||
void PFitterFcnDKS::InitDKS(const UInt_t dksTag)
|
||||
{
|
||||
Int_t ierr = 0;
|
||||
Int_t fitType = FITTYPE_UNDEFINED;
|
||||
|
||||
// if any device was allocated before, free the device resources
|
||||
FreeDKS();
|
||||
|
||||
// select framework
|
||||
if (dksTag == DKS_GPU_CUDA)
|
||||
fDKS.setAPI("Cuda");
|
||||
else
|
||||
fDKS.setAPI("OpenCL");
|
||||
|
||||
// select device
|
||||
if (dksTag == DKS_CPU_OPENCL)
|
||||
fDKS.setDevice("-cpu");
|
||||
else
|
||||
fDKS.setDevice("-gpu");
|
||||
|
||||
// init device
|
||||
fDKS.initDevice();
|
||||
|
||||
// init chisq buffer on the GPU
|
||||
|
||||
// 1) calculated the maximum size for the data needed.
|
||||
Int_t parSize = -1, mapSize = -1, funSize = -1;
|
||||
Int_t maxSize = 0, size = -1;
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
size = fRunListCollection->GetNoOfBinsFitted(i);
|
||||
if (maxSize < size)
|
||||
maxSize = size;
|
||||
}
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfAsymmetry(); i++) {
|
||||
size = fRunListCollection->GetNoOfBinsFitted(i);
|
||||
if (maxSize < size)
|
||||
maxSize = size;
|
||||
}
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
size = fRunListCollection->GetNoOfBinsFitted(i);
|
||||
if (maxSize < size)
|
||||
maxSize = size;
|
||||
}
|
||||
if (maxSize == 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get data size to be fitted." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// 2) get number of parameters / functions / maps
|
||||
parSize = fRunListCollection->GetNoOfParameters();
|
||||
if (parSize == -1) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get number of fit parameters." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
funSize = fRunListCollection->GetNoOfFunctions();
|
||||
if (funSize == -1) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get number of functions." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
mapSize = fRunListCollection->GetNoOfMaps();
|
||||
if (mapSize == -1) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get number of maps." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// now ready to init the chisq buffer on the GPU
|
||||
cout << "debug> maximal packed histo size=" << maxSize << ", parSize=" << parSize << ", funSize=" << funSize << ", mapSize=" << mapSize << endl;
|
||||
ierr = fDKS.initChiSquare(maxSize, parSize, funSize, mapSize);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocate the necessary chisq buffer on the GPU." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// allocate memory for the data on the GPU/CPU and transfer the data sets
|
||||
PRunData *runData=0;
|
||||
|
||||
// single histos
|
||||
fMemDataSingleHisto.resize(fRunListCollection->GetNoOfSingleHisto());
|
||||
fMemDataSingleHistoErr.resize(fRunListCollection->GetNoOfSingleHisto());
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfSingleHisto(); i++) {
|
||||
runData = fRunListCollection->GetSingleHisto(i);
|
||||
if (runData == 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get single histo data set (i=" << i << ") from fRunListCollection." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
size = runData->GetValue()->size();
|
||||
fMemDataSingleHisto[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
fMemDataSingleHistoErr[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated single histo data set memory (i=" << i << ") on the GPU" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_SINGLE_HISTO, i);
|
||||
if (startTimeBin < 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (single histo fit)." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
fDKS.writeData<double>(fMemDataSingleHisto[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin);
|
||||
fDKS.writeData<double>(fMemDataSingleHistoErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin);
|
||||
}
|
||||
if (fRunListCollection->GetNoOfSingleHisto() > 0)
|
||||
fitType = FITTYPE_SINGLE_HISTO;
|
||||
|
||||
// asymmetry
|
||||
fMemDataAsymmetry.resize(fRunListCollection->GetNoOfAsymmetry());
|
||||
fMemDataAsymmetryErr.resize(fRunListCollection->GetNoOfAsymmetry());
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfAsymmetry(); i++) {
|
||||
runData = fRunListCollection->GetAsymmetry(i);
|
||||
if (runData == 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get asymmetry data set (i=" << i << ") from fRunListCollection." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
size = runData->GetValue()->size();
|
||||
fMemDataAsymmetry[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
fMemDataAsymmetryErr[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated asymmetry data set memory (i=" << i << ") on the GPU" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_ASYM, i);
|
||||
if (startTimeBin < 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (asymmetry fit)." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
fDKS.writeData<double>(fMemDataAsymmetry[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin);
|
||||
fDKS.writeData<double>(fMemDataAsymmetryErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin);
|
||||
}
|
||||
if (fRunListCollection->GetNoOfAsymmetry() > 0) {
|
||||
if (fitType == FITTYPE_UNDEFINED) {
|
||||
fitType = FITTYPE_ASYMMETRY;
|
||||
} else {
|
||||
cerr << ">>PFitterFcnDKS::InitDKS: **ERROR** mixed fit types found. This is currently not supported!" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// mu minus
|
||||
fMemDataMuMinus.resize(fRunListCollection->GetNoOfMuMinus());
|
||||
fMemDataMuMinusErr.resize(fRunListCollection->GetNoOfMuMinus());
|
||||
for (UInt_t i=0; i<fRunListCollection->GetNoOfMuMinus(); i++) {
|
||||
runData = fRunListCollection->GetMuMinus(i);
|
||||
if (runData == 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to get mu minus data set (i=" << i << ") from fRunListCollection." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
size = runData->GetValue()->size();
|
||||
fMemDataMuMinus[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
fMemDataMuMinusErr[i] = fDKS.allocateMemory<Double_t>(size, ierr);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to allocated mu minus data set memory (i=" << i << ") on the GPU" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
Int_t startTimeBin = fRunListCollection->GetStartTimeBin(MSR_FITTYPE_MU_MINUS, i);
|
||||
if (startTimeBin < 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** startTimeBin undefind (mu minus fit)." << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
fDKS.writeData<double>(fMemDataMuMinus[i], &runData->GetValue()->at(startTimeBin), size-startTimeBin);
|
||||
fDKS.writeData<double>(fMemDataMuMinusErr[i], &runData->GetError()->at(startTimeBin), size-startTimeBin);
|
||||
}
|
||||
if (fRunListCollection->GetNoOfMuMinus() > 0) {
|
||||
if (fitType == FITTYPE_UNDEFINED) {
|
||||
fitType = FITTYPE_MU_MINUS;
|
||||
} else {
|
||||
cerr << ">>PFitterFcnDKS::InitDKS: **ERROR** mixed fit types found. This is currently not supported!" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// set the function string and compile the program
|
||||
ierr = fDKS.callCompileProgram(fTheoStr, !fUseChi2);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** failed to compile theory!" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// checks device properties if openCL
|
||||
ierr = fDKS.checkMuSRKernels(fitType);
|
||||
if (ierr != 0) {
|
||||
cerr << ">> PFitterFcnDKS::InitDKS: **ERROR** muSR kernel checks failed!" << endl;
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
fValid = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// FreeDKS (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>cleanup DKS/GPU memory
|
||||
*
|
||||
*/
|
||||
void PFitterFcnDKS::FreeDKS()
|
||||
{
|
||||
PRunData *runData=0;
|
||||
// single histo
|
||||
for (UInt_t i=0; i<fMemDataSingleHisto.size(); i++) {
|
||||
runData = fRunListCollection->GetSingleHisto(i);
|
||||
fDKS.freeMemory<Double_t>(fMemDataSingleHisto[i], runData->GetValue()->size());
|
||||
fDKS.freeMemory<Double_t>(fMemDataSingleHistoErr[i], runData->GetValue()->size());
|
||||
}
|
||||
fMemDataSingleHisto.clear();
|
||||
fMemDataSingleHistoErr.clear();
|
||||
|
||||
// asymmetry
|
||||
for (UInt_t i=0; i<fMemDataAsymmetry.size(); i++) {
|
||||
runData = fRunListCollection->GetAsymmetry(i);
|
||||
fDKS.freeMemory<Double_t>(fMemDataAsymmetry[i], runData->GetValue()->size());
|
||||
fDKS.freeMemory<Double_t>(fMemDataAsymmetryErr[i], runData->GetValue()->size());
|
||||
}
|
||||
fMemDataAsymmetry.clear();
|
||||
fMemDataAsymmetryErr.clear();
|
||||
|
||||
// mu minus
|
||||
for (UInt_t i=0; i<fMemDataMuMinus.size(); i++) {
|
||||
runData = fRunListCollection->GetMuMinus(i);
|
||||
fDKS.freeMemory<Double_t>(fMemDataMuMinus[i], runData->GetValue()->size());
|
||||
fDKS.freeMemory<Double_t>(fMemDataMuMinusErr[i], runData->GetValue()->size());
|
||||
}
|
||||
fMemDataMuMinus.clear();
|
||||
fMemDataMuMinusErr.clear();
|
||||
}
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2017 by Andreas Suter *
|
||||
* Copyright (C) 2007-2016 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -282,7 +282,7 @@ double PFTPhaseCorrection::operator()(const vector<double> &par) const
|
||||
* \param dcCorrected if true, removed DC offset from signal before Fourier transformation, otherwise not
|
||||
* \param zeroPaddingPower if set to values > 0, there will be zero padding up to 2^zeroPaddingPower
|
||||
*/
|
||||
PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTime, Bool_t dcCorrected, UInt_t zeroPaddingPower, Bool_t useFFTW) :
|
||||
PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTime, Bool_t dcCorrected, UInt_t zeroPaddingPower) :
|
||||
fData(data), fUnitTag(unitTag), fStartTime(startTime), fEndTime(endTime),
|
||||
fDCCorrected(dcCorrected), fZeroPaddingPower(zeroPaddingPower)
|
||||
{
|
||||
@ -294,16 +294,9 @@ PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTi
|
||||
}
|
||||
|
||||
fValid = true;
|
||||
fUseFFTW = true;
|
||||
fIn = 0;
|
||||
fOut = 0;
|
||||
|
||||
#ifdef HAVE_DKS
|
||||
fInDKS = 0;
|
||||
fOutDKS = 0;
|
||||
#endif
|
||||
|
||||
SetUseFFTW(useFFTW);
|
||||
//as fPhCorrectedReFT = 0;
|
||||
|
||||
fApodization = F_APODIZATION_NONE;
|
||||
|
||||
@ -312,7 +305,7 @@ PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTi
|
||||
|
||||
// if endTime == 0 set it to the last time slot
|
||||
if (fEndTime == 0.0) {
|
||||
Int_t last = fData->GetNbinsX();
|
||||
Int_t last = fData->GetNbinsX()-1;
|
||||
fEndTime = fData->GetBinCenter(last);
|
||||
}
|
||||
|
||||
@ -359,71 +352,21 @@ PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTi
|
||||
}
|
||||
|
||||
// allocate necessary memory
|
||||
if (fUseFFTW) {
|
||||
fIn = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*fNoOfBins);
|
||||
fOut = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*fNoOfBins);
|
||||
} else { // try DKS
|
||||
#ifdef HAVE_DKS
|
||||
fInDKS = new double[fNoOfBins];
|
||||
unsigned int size=fNoOfBins/2+1;
|
||||
fOutDKS = new complex<double>[size];
|
||||
#endif
|
||||
}
|
||||
fIn = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*fNoOfBins);
|
||||
fOut = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*fNoOfBins);
|
||||
|
||||
// check if memory allocation has been successful
|
||||
if (fUseFFTW) {
|
||||
if ((fIn == 0) || (fOut == 0)) {
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
} else { // try DKS
|
||||
#ifdef HAVE_DKS
|
||||
if ((fInDKS == 0) || (fOutDKS == 0)) {
|
||||
fValid = false;
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if ((fIn == 0) || (fOut == 0)) {
|
||||
fValid = false;
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (fUseFFTW) {
|
||||
// get the FFTW3 plan (see FFTW3 manual)
|
||||
fFFTwPlan = fftw_plan_dft_1d(fNoOfBins, fIn, fOut, FFTW_FORWARD, FFTW_ESTIMATE);
|
||||
// get the FFTW3 plan (see FFTW3 manual)
|
||||
fFFTwPlan = fftw_plan_dft_1d(fNoOfBins, fIn, fOut, FFTW_FORWARD, FFTW_ESTIMATE);
|
||||
|
||||
// check if a valid plan has been generated
|
||||
if (!fFFTwPlan) {
|
||||
fValid = false;
|
||||
}
|
||||
} else { // try DKS
|
||||
#ifdef HAVE_DKS
|
||||
// init DKSBase
|
||||
fDks.setAPI("Cuda", 4);
|
||||
fDks.setDevice("-gpu", 4);
|
||||
fDks.initDevice();
|
||||
int dimsize[3] = {(int)fNoOfBins, 1, 1};
|
||||
fDks.setupFFT(1, dimsize);
|
||||
// allocate memory on accelerator
|
||||
int ierr;
|
||||
unsigned int size=fNoOfBins/2+1;
|
||||
fReal_ptr = 0;
|
||||
fComp_ptr = 0;
|
||||
fReal_ptr = fDks.allocateMemory<double>(fNoOfBins, ierr);
|
||||
if (ierr > 0) {
|
||||
cerr << ">> PFourier: **ERROR** Couldn't allocate memory for fReal_ptr." << endl;
|
||||
fValid = false;
|
||||
}
|
||||
fComp_ptr = fDks.allocateMemory< complex<double> >(size, ierr);
|
||||
if (ierr > 0) {
|
||||
cerr << ">> PFourier: **ERROR** Couldn't allocate memory for fComp_ptr." << endl;
|
||||
fValid = false;
|
||||
}
|
||||
if ((fReal_ptr==0) || (fComp_ptr==0))
|
||||
fValid = false;
|
||||
#else
|
||||
// check if a valid plan has been generated
|
||||
if (!fFFTwPlan) {
|
||||
fValid = false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -435,25 +378,14 @@ PFourier::PFourier(TH1F *data, Int_t unitTag, Double_t startTime, Double_t endTi
|
||||
*/
|
||||
PFourier::~PFourier()
|
||||
{
|
||||
if (fUseFFTW) {
|
||||
if (fFFTwPlan)
|
||||
fftw_destroy_plan(fFFTwPlan);
|
||||
if (fIn)
|
||||
fftw_free(fIn);
|
||||
if (fOut)
|
||||
fftw_free(fOut);
|
||||
} else {
|
||||
#ifdef HAVE_DKS
|
||||
// free accelerator memory
|
||||
fDks.freeMemory<double>(fReal_ptr, (int)fNoOfBins);
|
||||
int size = fNoOfBins/2+1;
|
||||
fDks.freeMemory< complex<double> >(fComp_ptr, size);
|
||||
if (fIn)
|
||||
delete [] fInDKS;
|
||||
if (fOut)
|
||||
delete [] fOutDKS;
|
||||
#endif
|
||||
}
|
||||
if (fFFTwPlan)
|
||||
fftw_destroy_plan(fFFTwPlan);
|
||||
if (fIn)
|
||||
fftw_free(fIn);
|
||||
if (fOut)
|
||||
fftw_free(fOut);
|
||||
//as if (fPhCorrectedReFT)
|
||||
//as delete fPhCorrectedReFT;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -472,23 +404,7 @@ void PFourier::Transform(UInt_t apodizationTag)
|
||||
|
||||
PrepareFFTwInputData(apodizationTag);
|
||||
|
||||
if (fUseFFTW) {
|
||||
fftw_execute(fFFTwPlan);
|
||||
} else {
|
||||
#ifdef HAVE_DKS
|
||||
int dimsize[3] = {(int)fNoOfBins, 1, 1};
|
||||
int status=0, size=fNoOfBins/2+1;
|
||||
// write data to the accelerator
|
||||
status = fDks.writeData<double>(fReal_ptr, fInDKS, fNoOfBins);
|
||||
// execute the FFT
|
||||
status = fDks.callR2CFFT(fReal_ptr, fComp_ptr, 1, dimsize);
|
||||
// read data from accelerator
|
||||
status = fDks.readData< complex<double> >(fComp_ptr, fOutDKS, size);
|
||||
#else
|
||||
fValid = false;
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
fftw_execute(fFFTwPlan);
|
||||
|
||||
// correct the phase for tstart != 0.0
|
||||
// find the first bin >= fStartTime
|
||||
@ -501,42 +417,12 @@ void PFourier::Transform(UInt_t apodizationTag)
|
||||
}
|
||||
|
||||
Double_t phase, re, im;
|
||||
if (fUseFFTW) {
|
||||
for (UInt_t i=0; i<fNoOfBins; i++) {
|
||||
phase = 2.0*PI/(fTimeResolution*fNoOfBins) * i * shiftTime;
|
||||
re = fOut[i][0] * cos(phase) + fOut[i][1] * sin(phase);
|
||||
im = -fOut[i][0] * sin(phase) + fOut[i][1] * cos(phase);
|
||||
fOut[i][0] = re;
|
||||
fOut[i][1] = im;
|
||||
}
|
||||
} else { // try DKS
|
||||
UInt_t size=fNoOfBins/2+1;
|
||||
for (UInt_t i=0; i<size; i++) {
|
||||
phase = 2.0*PI/(fTimeResolution*fNoOfBins) * i * shiftTime;
|
||||
#ifdef HAVE_DKS
|
||||
re = fOutDKS[i].real() * cos(phase) + fOutDKS[i].imag() * sin(phase);
|
||||
im = -fOutDKS[i].real() * sin(phase) + fOutDKS[i].imag() * cos(phase);
|
||||
fOutDKS[i] = complex<double>(re, im);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// SetUseFFTW
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Set fUseFFTW flag. Checks if DKS support is in place before setting the flag.
|
||||
*/
|
||||
void PFourier::SetUseFFTW(const Bool_t flag)
|
||||
{
|
||||
if (flag == false) {
|
||||
#ifndef HAVE_DKS
|
||||
fUseFFTW = true;
|
||||
cerr << endl << "PFouier::SetUseFFTW: **ERROR** DKS not in use, will fall back to FFTW" << endl << endl;
|
||||
#else
|
||||
fUseFFTW = flag;
|
||||
#endif
|
||||
for (UInt_t i=0; i<fNoOfBins; i++) {
|
||||
phase = 2.0*PI/(fTimeResolution*fNoOfBins) * i * shiftTime;
|
||||
re = fOut[i][0] * cos(phase) + fOut[i][1] * sin(phase);
|
||||
im = -fOut[i][0] * sin(phase) + fOut[i][1] * cos(phase);
|
||||
fOut[i][0] = re;
|
||||
fOut[i][1] = im;
|
||||
}
|
||||
}
|
||||
|
||||
@ -548,7 +434,11 @@ void PFourier::SetUseFFTW(const Bool_t flag)
|
||||
*/
|
||||
Double_t PFourier::GetMaxFreq()
|
||||
{
|
||||
UInt_t noOfFourierBins = fNoOfBins/2+1;
|
||||
UInt_t noOfFourierBins = 0;
|
||||
if (fNoOfBins % 2 == 0)
|
||||
noOfFourierBins = fNoOfBins/2;
|
||||
else
|
||||
noOfFourierBins = (fNoOfBins+1)/2;
|
||||
|
||||
return fResolution*noOfFourierBins;
|
||||
}
|
||||
@ -573,7 +463,11 @@ TH1F* PFourier::GetRealFourier(const Double_t scale)
|
||||
snprintf(name, sizeof(name), "%s_Fourier_Re", fData->GetName());
|
||||
snprintf(title, sizeof(title), "%s_Fourier_Re", fData->GetTitle());
|
||||
|
||||
UInt_t noOfFourierBins = fNoOfBins/2+1;
|
||||
UInt_t noOfFourierBins = 0;
|
||||
if (fNoOfBins % 2 == 0)
|
||||
noOfFourierBins = fNoOfBins/2;
|
||||
else
|
||||
noOfFourierBins = (fNoOfBins+1)/2;
|
||||
|
||||
TH1F *realFourier = new TH1F(name, title, noOfFourierBins, -fResolution/2.0, (Double_t)(noOfFourierBins-1)*fResolution+fResolution/2.0);
|
||||
if (realFourier == 0) {
|
||||
@ -583,19 +477,9 @@ TH1F* PFourier::GetRealFourier(const Double_t scale)
|
||||
}
|
||||
|
||||
// fill realFourier vector
|
||||
if (fUseFFTW) {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
realFourier->SetBinContent(i+1, scale*fOut[i][0]);
|
||||
realFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
} else {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
#ifdef HAVE_DKS
|
||||
realFourier->SetBinContent(i+1, scale*fOutDKS[i].real());
|
||||
#else
|
||||
realFourier->SetBinContent(i+1, PMUSR_UNDEFINED);
|
||||
#endif
|
||||
}
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
realFourier->SetBinContent(i+1, scale*fOut[i][0]);
|
||||
realFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
return realFourier;
|
||||
}
|
||||
@ -721,7 +605,11 @@ TH1F* PFourier::GetImaginaryFourier(const Double_t scale)
|
||||
snprintf(name, sizeof(name), "%s_Fourier_Im", fData->GetName());
|
||||
snprintf(title, sizeof(title), "%s_Fourier_Im", fData->GetTitle());
|
||||
|
||||
UInt_t noOfFourierBins = fNoOfBins/2+1;
|
||||
UInt_t noOfFourierBins = 0;
|
||||
if (fNoOfBins % 2 == 0)
|
||||
noOfFourierBins = fNoOfBins/2;
|
||||
else
|
||||
noOfFourierBins = (fNoOfBins+1)/2;
|
||||
|
||||
TH1F* imaginaryFourier = new TH1F(name, title, noOfFourierBins, -fResolution/2.0, (Double_t)(noOfFourierBins-1)*fResolution+fResolution/2.0);
|
||||
if (imaginaryFourier == 0) {
|
||||
@ -731,20 +619,11 @@ TH1F* PFourier::GetImaginaryFourier(const Double_t scale)
|
||||
}
|
||||
|
||||
// fill imaginaryFourier vector
|
||||
if (fUseFFTW) {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
imaginaryFourier->SetBinContent(i+1, scale*fOut[i][1]);
|
||||
imaginaryFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
} else {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
#ifdef HAVE_DKS
|
||||
imaginaryFourier->SetBinContent(i+1, scale*fOutDKS[i].imag());
|
||||
#else
|
||||
imaginaryFourier->SetBinContent(i+1, PMUSR_UNDEFINED);
|
||||
#endif
|
||||
}
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
imaginaryFourier->SetBinContent(i+1, scale*fOut[i][1]);
|
||||
imaginaryFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
|
||||
return imaginaryFourier;
|
||||
}
|
||||
|
||||
@ -768,7 +647,11 @@ TH1F* PFourier::GetPowerFourier(const Double_t scale)
|
||||
snprintf(name, sizeof(name), "%s_Fourier_Pwr", fData->GetName());
|
||||
snprintf(title, sizeof(title), "%s_Fourier_Pwr", fData->GetTitle());
|
||||
|
||||
UInt_t noOfFourierBins = fNoOfBins/2+1;
|
||||
UInt_t noOfFourierBins = 0;
|
||||
if (fNoOfBins % 2 == 0)
|
||||
noOfFourierBins = fNoOfBins/2;
|
||||
else
|
||||
noOfFourierBins = (fNoOfBins+1)/2;
|
||||
|
||||
TH1F* pwrFourier = new TH1F(name, title, noOfFourierBins, -fResolution/2.0, (Double_t)(noOfFourierBins-1)*fResolution+fResolution/2.0);
|
||||
if (pwrFourier == 0) {
|
||||
@ -778,20 +661,11 @@ TH1F* PFourier::GetPowerFourier(const Double_t scale)
|
||||
}
|
||||
|
||||
// fill powerFourier vector
|
||||
if (fUseFFTW) {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
pwrFourier->SetBinContent(i+1, scale*sqrt(fOut[i][0]*fOut[i][0]+fOut[i][1]*fOut[i][1]));
|
||||
pwrFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
} else {
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
#ifdef HAVE_DKS
|
||||
pwrFourier->SetBinContent(i+1, scale*sqrt(fOutDKS[i].real()*fOutDKS[i].real()+fOutDKS[i].imag()*fOutDKS[i].imag()));
|
||||
#else
|
||||
pwrFourier->SetBinContent(i+1, PMUSR_UNDEFINED);
|
||||
#endif
|
||||
}
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
pwrFourier->SetBinContent(i+1, scale*sqrt(fOut[i][0]*fOut[i][0]+fOut[i][1]*fOut[i][1]));
|
||||
pwrFourier->SetBinError(i+1, 0.0);
|
||||
}
|
||||
|
||||
return pwrFourier;
|
||||
}
|
||||
|
||||
@ -815,7 +689,11 @@ TH1F* PFourier::GetPhaseFourier(const Double_t scale)
|
||||
snprintf(name, sizeof(name), "%s_Fourier_Phase", fData->GetName());
|
||||
snprintf(title, sizeof(title), "%s_Fourier_Phase", fData->GetTitle());
|
||||
|
||||
UInt_t noOfFourierBins = fNoOfBins/2+1;
|
||||
UInt_t noOfFourierBins = 0;
|
||||
if (fNoOfBins % 2 == 0)
|
||||
noOfFourierBins = fNoOfBins/2;
|
||||
else
|
||||
noOfFourierBins = (fNoOfBins+1)/2;
|
||||
|
||||
TH1F* phaseFourier = new TH1F(name, title, noOfFourierBins, -fResolution/2.0, (Double_t)(noOfFourierBins-1)*fResolution+fResolution/2.0);
|
||||
if (phaseFourier == 0) {
|
||||
@ -826,31 +704,18 @@ TH1F* PFourier::GetPhaseFourier(const Double_t scale)
|
||||
|
||||
// fill phaseFourier vector
|
||||
Double_t value = 0.0;
|
||||
Double_t re, im;
|
||||
for (UInt_t i=0; i<noOfFourierBins; i++) {
|
||||
if (fUseFFTW) {
|
||||
re = fOut[i][0];
|
||||
im = fOut[i][1];
|
||||
} else {
|
||||
#ifdef HAVE_DKS
|
||||
re = fOutDKS[i].real();
|
||||
im = fOutDKS[i].imag();
|
||||
#else
|
||||
re = 1.0;
|
||||
im = 0.0;
|
||||
#endif
|
||||
}
|
||||
// calculate the phase
|
||||
if (re == 0) {
|
||||
if (im >= 0.0)
|
||||
if (fOut[i][0] == 0) {
|
||||
if (fOut[i][1] >= 0.0)
|
||||
value = PI_HALF;
|
||||
else
|
||||
value = -PI_HALF;
|
||||
} else {
|
||||
value = atan(re/im);
|
||||
value = atan(fOut[i][1]/fOut[i][0]);
|
||||
// check sector
|
||||
if (re < 0.0) {
|
||||
if (im > 0.0)
|
||||
if (fOut[i][0] < 0.0) {
|
||||
if (fOut[i][1] > 0.0)
|
||||
value = PI + value;
|
||||
else
|
||||
value = PI - value;
|
||||
@ -884,42 +749,28 @@ void PFourier::PrepareFFTwInputData(UInt_t apodizationTag)
|
||||
}
|
||||
}
|
||||
|
||||
// find the bin of the start time
|
||||
Int_t ival = static_cast<Int_t>(fStartTime/fTimeResolution) + t0bin;
|
||||
UInt_t start = 1;
|
||||
if (ival > 0) { // start time > 0
|
||||
UInt_t start = 0;
|
||||
if (ival >= 0) {
|
||||
start = static_cast<UInt_t>(ival);
|
||||
}
|
||||
|
||||
Double_t mean = 0.0;
|
||||
if (fDCCorrected) {
|
||||
for (UInt_t i=start; i<fNoOfData; i++) {
|
||||
mean += fData->GetBinContent(i);
|
||||
for (UInt_t i=0; i<fNoOfData; i++) {
|
||||
mean += fData->GetBinContent(i+start);
|
||||
}
|
||||
mean /= (Double_t)(fNoOfData-start);
|
||||
}
|
||||
mean /= (Double_t)fNoOfData;
|
||||
}
|
||||
|
||||
// 2nd fill fIn
|
||||
if (fUseFFTW) {
|
||||
for (UInt_t i=0; i<fNoOfData-t0bin; i++) {
|
||||
fIn[i][0] = fData->GetBinContent(i+t0bin) - mean;
|
||||
fIn[i][1] = 0.0;
|
||||
}
|
||||
for (UInt_t i=fNoOfData-t0bin; i<fNoOfBins; i++) {
|
||||
fIn[i][0] = 0.0;
|
||||
fIn[i][1] = 0.0;
|
||||
}
|
||||
} else {
|
||||
for (UInt_t i=0; i<fNoOfData-t0bin; i++) {
|
||||
#ifdef HAVE_DKS
|
||||
fInDKS[i] = fData->GetBinContent(i+t0bin) - mean;
|
||||
#endif
|
||||
}
|
||||
for (UInt_t i=fNoOfData-t0bin; i<fNoOfBins; i++) {
|
||||
#ifdef HAVE_DKS
|
||||
fInDKS[i] = 0.0;
|
||||
#endif
|
||||
}
|
||||
for (UInt_t i=0; i<fNoOfData; i++) {
|
||||
fIn[i][0] = fData->GetBinContent(i+start) - mean;
|
||||
fIn[i][1] = 0.0;
|
||||
}
|
||||
for (UInt_t i=fNoOfData; i<fNoOfBins; i++) {
|
||||
fIn[i][0] = 0.0;
|
||||
fIn[i][1] = 0.0;
|
||||
}
|
||||
|
||||
// 3rd apodize data (if wished)
|
||||
@ -938,9 +789,6 @@ void PFourier::PrepareFFTwInputData(UInt_t apodizationTag)
|
||||
*/
|
||||
void PFourier::ApodizeData(Int_t apodizationTag) {
|
||||
|
||||
if (apodizationTag == F_APODIZATION_NONE)
|
||||
return;
|
||||
|
||||
const Double_t cweak[3] = { 0.384093, -0.087577, 0.703484 };
|
||||
const Double_t cmedium[3] = { 0.152442, -0.136176, 0.983734 };
|
||||
const Double_t cstrong[3] = { 0.045335, 0.554883, 0.399782 };
|
||||
@ -951,6 +799,9 @@ void PFourier::ApodizeData(Int_t apodizationTag) {
|
||||
}
|
||||
|
||||
switch (apodizationTag) {
|
||||
case F_APODIZATION_NONE:
|
||||
return;
|
||||
break;
|
||||
case F_APODIZATION_WEAK:
|
||||
c[0] = cweak[0]+cweak[1]+cweak[2];
|
||||
c[1] = -(cweak[1]+2.0*cweak[2]);
|
||||
@ -979,12 +830,6 @@ void PFourier::ApodizeData(Int_t apodizationTag) {
|
||||
for (UInt_t j=1; j<5; j++) {
|
||||
q += c[j] * pow((Double_t)i/(Double_t)fNoOfData, 2.0*(Double_t)j);
|
||||
}
|
||||
if (fUseFFTW) {
|
||||
fIn[i][0] *= q;
|
||||
} else {
|
||||
#ifdef HAVE_DKS
|
||||
fInDKS[i] *= q;
|
||||
#endif
|
||||
}
|
||||
fIn[i][0] *= q;
|
||||
}
|
||||
}
|
||||
|
@ -69,8 +69,6 @@ PMsrHandler::PMsrHandler(const Char_t *fileName, PStartupOptions *startupOptions
|
||||
|
||||
fFuncHandler = 0;
|
||||
|
||||
fNoOfMaps = -1;
|
||||
|
||||
// check if the file name given is a path-file-name, and if yes, split it into path and file name.
|
||||
if (fFileName.Contains("/")) {
|
||||
Int_t idx = -1;
|
||||
@ -5741,18 +5739,6 @@ Bool_t PMsrHandler::CheckMaps()
|
||||
}
|
||||
}
|
||||
|
||||
if (result == true) {
|
||||
PIntVector *map = fRuns[0].GetMap();
|
||||
fNoOfMaps = 0;
|
||||
for (UInt_t i=0; i<map->size(); i++)
|
||||
if (map->at(i) != 0)
|
||||
fNoOfMaps++;
|
||||
/*as
|
||||
if (fNoOfMaps == 0)
|
||||
fNoOfMaps = -1;
|
||||
*/
|
||||
}
|
||||
|
||||
// clean up
|
||||
mapVec.clear();
|
||||
mapBlock.clear();
|
||||
@ -6108,333 +6094,6 @@ Bool_t PMsrHandler::EstimateN0()
|
||||
return fStartupOptions->estimateN0;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetDKSTheoryString (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>returns the theory string in a c++ compatible string. This is needed
|
||||
* for DKS/GPU.
|
||||
*
|
||||
* \return the theory in a c++ like string.
|
||||
*/
|
||||
std::string PMsrHandler::GetDKSTheoryString()
|
||||
{
|
||||
std::string result("");
|
||||
PStringVector args;
|
||||
|
||||
TString tp = TString::Format("%.15lf", TMath::TwoPi());
|
||||
TString ph = TString::Format("%.15lf", TMath::Pi() / 180.0);
|
||||
|
||||
for (UInt_t i=1; i<fTheory.size(); i++) { // start with 1, since fTheory[0].fLine == "THEORY"
|
||||
if (i > 1) {
|
||||
if (!fTheory[i-1].fLine.BeginsWith("+")) {
|
||||
result += " * ";
|
||||
}
|
||||
}
|
||||
|
||||
HandleTheoryArguments(fTheory[i].fLine, args);
|
||||
|
||||
if (fTheory[i].fLine.BeginsWith("asymmetry ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("a ", TString::kIgnoreCase)) {
|
||||
result += args[0].Data();
|
||||
} else if (fTheory[i].fLine.BeginsWith("const ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("c ", TString::kIgnoreCase)) {
|
||||
result += args[0].Data();
|
||||
} else if (fTheory[i].fLine.BeginsWith("simplExpo ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("se ")) { // se -> se(t, lambda)
|
||||
result += "se(t, ";
|
||||
result += args[0].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("generExpo ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("ge ")) { // ge -> ge(t, lambda, beta)
|
||||
result += "ge(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("simpleGss ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("sg ")) { // sg -> sg(t, sigma)
|
||||
result += "sg(t, ";
|
||||
result += args[0].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("statGssKT ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("stg ")) { // stg -> stg(t, sigma)
|
||||
|
||||
result += "stg(t, ";
|
||||
result += args[0].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("statExpKT ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("sekt ")) { // sekt -> sekt(t, lambda)
|
||||
|
||||
result += "sekt(t, ";
|
||||
result += args[0].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("combiLGKT ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("lgkt ")) { // lgkt -> lgkt(t, lambda, sigma)
|
||||
|
||||
result += "lgkt(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("strKT ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("skt ")) { // skt -> skt(t, sigma, beta)
|
||||
|
||||
result += "skt(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("spinGlass ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("spg ")) { // spg -> spg(t, lambda, gamma, q)
|
||||
|
||||
result += "spg(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("rdAnisoHf ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("rahf ")) { // rahf -> rahf(t, nu, lambda)
|
||||
|
||||
result += "rahf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("TFieldCos ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("tf ")) { // tf -> tf(t, phi (°), nu (MHz))
|
||||
result += "tf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("internFld ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("if ")) { // if -> ifld(t, alpha, phi, nu, lambdaT, lambdaL)
|
||||
|
||||
result += "ifld(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ", ";
|
||||
result += args[3].Data();
|
||||
result += ", ";
|
||||
result += args[4].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("Bessel ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("b ")) { // b -> b(t, phi, nu)
|
||||
|
||||
result += "b(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("internBsl ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("ib ")) { // ib -> ib(t, alpha, phi, nu, lambdaT, lambdaL)
|
||||
|
||||
result += "ib(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ", ";
|
||||
result += args[3].Data();
|
||||
result += ", ";
|
||||
result += args[4].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("abragam ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("ab ")) { // ab -> ab(t, sigma, gamma)
|
||||
result += "ab(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("staticNKZF ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("snkzf ")) { // snkzf -> snkzf(t, Deltat0, Rb)
|
||||
result += "snkzf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("staticNKTF ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("snktf ")) { // snktf -> snktf(t, phi, nu, Delta0, Rb)
|
||||
|
||||
result += "snktf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ", ";
|
||||
result += args[3].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("dynamicNKZF ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("dnkzf ")) { // dnkzf -> dnkzf(t, Delta0, Rb, nu_c)
|
||||
|
||||
result += "dnkzf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("dynamicNKTF ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("dnktf ")) { // dnktf -> dnktf(t, phi, nu, Delta0, Rb, nu_c)
|
||||
|
||||
result += "dnktf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ", ";
|
||||
result += args[3].Data();
|
||||
result += ", ";
|
||||
result += args[4].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("muMinusExpTF ", TString::kIgnoreCase) ||
|
||||
fTheory[i].fLine.BeginsWith("mmsetf ")) { // mmsetf -> mmsetf(t, N0, tau, A, lambda, phi, nu)
|
||||
|
||||
result += "mmsetf(t, ";
|
||||
result += args[0].Data();
|
||||
result += ", ";
|
||||
result += args[1].Data();
|
||||
result += ", ";
|
||||
result += args[2].Data();
|
||||
result += ", ";
|
||||
result += args[3].Data();
|
||||
result += ", ";
|
||||
result += args[4].Data();
|
||||
result += ", ";
|
||||
result += args[5].Data();
|
||||
result += ")";
|
||||
} else if (fTheory[i].fLine.BeginsWith("+")) {
|
||||
result.erase(result.end()-3, result.end()); // remove the '*' at the end
|
||||
result += " + ";
|
||||
} else {
|
||||
result = string("??"); // not yet available in DKS
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "debug> ++++" << endl;
|
||||
cout << "debug> " << result << endl;
|
||||
cout << "debug> ++++" << endl;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetDKSTag (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> Checks the COMMAND block for DKS related tags. Currently the following
|
||||
* tags are allowed:
|
||||
* (i) OpenMP: which means run on the CPU with OpenMP
|
||||
* (ii) Cuda: which means run on the GPU using Cuda
|
||||
* (iii) OpenCL-CPU: which means run on the CPU with OpenCL
|
||||
* (iv) OpenCL-GPU: which means run on the GPU with OpenCL
|
||||
*
|
||||
* @return DKS tag
|
||||
*/
|
||||
UInt_t PMsrHandler::GetDKSTag()
|
||||
{
|
||||
UInt_t count=0;
|
||||
UInt_t tag = DKS_CPU_OPENMP;
|
||||
TString last("");
|
||||
|
||||
for (UInt_t i=0; i<fCommands.size(); i++) {
|
||||
if (fCommands[i].fLine.Contains("OpenMP", TString::kIgnoreCase)) {
|
||||
count++;
|
||||
tag = DKS_CPU_OPENMP;
|
||||
last = "OpenMP";
|
||||
} else if (fCommands[i].fLine.Contains("Cuda", TString::kIgnoreCase)) {
|
||||
count++;
|
||||
tag = DKS_GPU_CUDA;
|
||||
last = "Cuda";
|
||||
} else if (fCommands[i].fLine.Contains("OpenCL-CPU", TString::kIgnoreCase)) {
|
||||
count++;
|
||||
tag = DKS_CPU_OPENCL;
|
||||
last = "OpenCL-CPU";
|
||||
} else if (fCommands[i].fLine.Contains("OpenCL-GPU", TString::kIgnoreCase)) {
|
||||
count++;
|
||||
tag = DKS_GPU_OPENCL;
|
||||
last = "OpenCL-GPU";
|
||||
}
|
||||
}
|
||||
|
||||
if (count > 1) {
|
||||
cerr << ">> PMsrHandler::GetDKSTag(): **WARNING** found multiple DKS tags, will use the last one found: '" << last.Data() << "'" << endl;
|
||||
}
|
||||
|
||||
return tag;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// HandleTheoryArguments (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>tokenizes the theory function arguments and transforms them for DKS
|
||||
*
|
||||
* \param theo
|
||||
* \param args vector of the transformed arguments
|
||||
*/
|
||||
void PMsrHandler::HandleTheoryArguments(const TString theo, PStringVector &args)
|
||||
{
|
||||
TObjArray *tok=theo.Tokenize(" \t");
|
||||
TObjString *ostr=0;
|
||||
TString str, argStr;
|
||||
Int_t ival;
|
||||
|
||||
args.clear(); // make sure vector is empty
|
||||
|
||||
if (tok == 0) {
|
||||
cerr << ">> PMsrHandler::HandleTheoryArguments(): **ERROR** couldn't tokensize '" << theo << "'" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
for (Int_t i=0; i<tok->GetEntries(); i++) {
|
||||
ostr = dynamic_cast<TObjString*>(tok->At(i));
|
||||
str = ostr->GetString();
|
||||
if (str.BeginsWith("#") || str.BeginsWith("(")) { // comment or description
|
||||
continue;
|
||||
} else if (str.IsDigit()) { // parameter
|
||||
ival = str.Atoi();
|
||||
ival -= 1;
|
||||
str = TString::Format("%d",ival);
|
||||
argStr = "p["+ str +"]";
|
||||
args.push_back(argStr);
|
||||
} else if (str.BeginsWith("map", TString::kIgnoreCase)) { // map
|
||||
str.Remove(0,3);
|
||||
if (!str.IsDigit()) {
|
||||
return;
|
||||
}
|
||||
ival = str.Atoi();
|
||||
ival -= 1;
|
||||
str = TString::Format("%d",ival);
|
||||
argStr = "p[m[" + str + "]]";
|
||||
args.push_back(argStr);
|
||||
} else if (str.BeginsWith("fun", TString::kIgnoreCase)) { // function
|
||||
str.Remove(0,3);
|
||||
if (!str.IsDigit()) {
|
||||
return;
|
||||
}
|
||||
ival = str.Atoi();
|
||||
ival -= 1;
|
||||
str = TString::Format("%d",ival);
|
||||
argStr = "f[" + str + "]";
|
||||
args.push_back(argStr);
|
||||
}
|
||||
}
|
||||
|
||||
// clean up
|
||||
delete tok;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// NeededPrecision (private)
|
||||
//--------------------------------------------------------------------------
|
||||
|
@ -121,8 +121,6 @@ PMusrCanvas::PMusrCanvas()
|
||||
fTimeout = 0;
|
||||
fTimeoutTimer = 0;
|
||||
|
||||
fStartWithFourier = false;
|
||||
fUseDKS = false;
|
||||
fScaleN0AndBkg = true;
|
||||
fValid = false;
|
||||
fAveragedView = false;
|
||||
@ -189,9 +187,9 @@ PMusrCanvas::PMusrCanvas()
|
||||
*/
|
||||
PMusrCanvas::PMusrCanvas(const Int_t number, const Char_t* title,
|
||||
Int_t wtopx, Int_t wtopy, Int_t ww, Int_t wh,
|
||||
const Bool_t batch, const Bool_t fourier, const Bool_t avg, const Bool_t useDKS) :
|
||||
fStartWithFourier(fourier), fStartWithAvg(avg), fUseDKS(useDKS),
|
||||
fBatchMode(batch), fPlotNumber(number)
|
||||
const Bool_t batch, const Bool_t fourier, const Bool_t avg) :
|
||||
fStartWithFourier(fourier), fStartWithAvg(avg),
|
||||
fBatchMode(batch), fPlotNumber(number)
|
||||
{
|
||||
fTimeout = 0;
|
||||
fTimeoutTimer = 0;
|
||||
@ -247,9 +245,9 @@ PMusrCanvas::PMusrCanvas(const Int_t number, const Char_t* title,
|
||||
Int_t wtopx, Int_t wtopy, Int_t ww, Int_t wh,
|
||||
PMsrFourierStructure fourierDefault,
|
||||
const PIntVector markerList, const PIntVector colorList,
|
||||
const Bool_t batch, const Bool_t fourier, const Bool_t avg, const Bool_t useDKS) :
|
||||
fStartWithFourier(fourier), fStartWithAvg(avg), fUseDKS(useDKS),
|
||||
fBatchMode(batch), fPlotNumber(number), fFourier(fourierDefault),
|
||||
const Bool_t batch, const Bool_t fourier, const Bool_t avg) :
|
||||
fStartWithFourier(fourier), fStartWithAvg(avg), fBatchMode(batch),
|
||||
fPlotNumber(number), fFourier(fourierDefault),
|
||||
fMarkerList(markerList), fColorList(colorList)
|
||||
{
|
||||
fTimeout = 0;
|
||||
@ -3413,12 +3411,7 @@ void PMusrCanvas::HandleFourier()
|
||||
|
||||
// calculate fourier transform of the theory
|
||||
Int_t powerPad = (Int_t)round(log((endTime-startTime)/fData[i].theory->GetBinWidth(1))/log(2))+3;
|
||||
Bool_t useFFTW = true;
|
||||
#ifdef HAVE_DKS
|
||||
if ((powerPad >= 20) && fUseDKS)
|
||||
useFFTW = false; // i.e. use DKS
|
||||
#endif
|
||||
PFourier fourierTheory(fData[i].theory, fFourier.fUnits, startTime, endTime, fFourier.fDCCorrected, powerPad, useFFTW);
|
||||
PFourier fourierTheory(fData[i].theory, fFourier.fUnits, startTime, endTime, fFourier.fDCCorrected, powerPad);
|
||||
if (!fourierTheory.IsValid()) {
|
||||
cerr << endl << ">> PMusrCanvas::HandleFourier(): **SEVERE ERROR** couldn't invoke PFourier to calculate the Fourier theory ..." << endl;
|
||||
return;
|
||||
@ -4602,8 +4595,14 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
} else { // set the x-/y-range to the previous fHistoFrame range
|
||||
dataXmin = xmin;
|
||||
@ -4621,13 +4620,16 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin = 1.0e-4 * dataYmax;
|
||||
}
|
||||
|
||||
// create histo frame in order to plot histograms possibly with different x-frames
|
||||
fHistoFrame = fDataTheoryPad->DrawFrame(dataXmin, dataYmin, dataXmax, dataYmax);
|
||||
@ -4749,8 +4751,14 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fNonMusrData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
} else { // set the x-/y-range to the previous fHistoFrame range
|
||||
dataXmin = xmin;
|
||||
@ -4768,13 +4776,16 @@ void PMusrCanvas::PlotData(Bool_t unzoom)
|
||||
dataYmax = GetMaximum(fNonMusrData[i].data, dataXmin, dataXmax);
|
||||
}
|
||||
Double_t dd = 0.05*fabs(dataYmax-dataYmin);
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
if (!fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin -= dd;
|
||||
dataYmax += dd;
|
||||
} else {
|
||||
if (dataYmin < 0)
|
||||
dataYmin = 0.1;
|
||||
dataYmax += dd;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fMsrHandler->GetMsrPlotList()->at(fPlotNumber).fLogY) {
|
||||
dataYmin = 1.0e-4 * dataYmax;
|
||||
}
|
||||
|
||||
// create fMultiGraphData, and add all data and theory
|
||||
fMultiGraphData = new TMultiGraph();
|
||||
|
@ -6154,7 +6154,7 @@ bool PRunDataHandler::DateToISO8601(string inDate, string &iso8601Date)
|
||||
return false;
|
||||
|
||||
TString str("");
|
||||
str.Form("%04d-%02d-%02d", 1900+tm.tm_year, tm.tm_mon+1, tm.tm_mday);
|
||||
str.Form("%04d-%02d-%02d", 1900+tm.tm_year, tm.tm_mon, tm.tm_mday);
|
||||
|
||||
iso8601Date = str.Data();
|
||||
|
||||
@ -6187,7 +6187,7 @@ void PRunDataHandler::SplitTimeDate(TString timeData, TString &time, TString &da
|
||||
}
|
||||
|
||||
time = TString::Format("%02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
|
||||
date = TString::Format("%04d-%02d-%02d", tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday);
|
||||
date = TString::Format("%04d-%02d-%02d", tm.tm_year+1900, tm.tm_mon, tm.tm_mday);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
@ -334,24 +334,23 @@ Double_t PRunListCollection::GetNonMusrChisq(const std::vector<Double_t>& par) c
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetSingleRunChisqExpected (public)
|
||||
// GetSingleHistoChisqExpected (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Calculates expected chi-square of the run block index idx of a msr-file.
|
||||
* Currently this is only possible for Single Histo, and Mu Minus fits.
|
||||
* <p>Calculates expected chi-square of the single histogram with run block index idx of a msr-file.
|
||||
*
|
||||
* <b>return:</b>
|
||||
* - expected chi-square of for a single run block
|
||||
* - expected chi-square of for a single histogram
|
||||
*
|
||||
* \param par fit parameter vector
|
||||
* \param idx run block index
|
||||
*/
|
||||
Double_t PRunListCollection::GetSingleRunChisqExpected(const std::vector<Double_t>& par, const UInt_t idx) const
|
||||
Double_t PRunListCollection::GetSingleHistoChisqExpected(const std::vector<Double_t>& par, const UInt_t idx) const
|
||||
{
|
||||
Double_t expectedChisq = 0.0;
|
||||
|
||||
if (idx > fMsrInfo->GetMsrRunList()->size()) {
|
||||
cerr << ">> PRunListCollection::GetSingleRunChisqExpected() **ERROR** idx=" << idx << " is out of range [0.." << fMsrInfo->GetMsrRunList()->size() << "[" << endl << endl;
|
||||
cerr << ">> PRunListCollection::GetSingleHistoChisqExpected() **ERROR** idx=" << idx << " is out of range [0.." << fMsrInfo->GetMsrRunList()->size() << "[" << endl << endl;
|
||||
return expectedChisq;
|
||||
}
|
||||
|
||||
@ -372,9 +371,21 @@ Double_t PRunListCollection::GetSingleRunChisqExpected(const std::vector<Double_
|
||||
case PRUN_SINGLE_HISTO:
|
||||
expectedChisq = fRunSingleHistoList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
case PRUN_SINGLE_HISTO_RRF:
|
||||
expectedChisq = fRunSingleHistoRRFList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
case PRUN_ASYMMETRY:
|
||||
expectedChisq = fRunAsymmetryList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
case PRUN_ASYMMETRY_RRF:
|
||||
expectedChisq = fRunAsymmetryRRFList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
case PRUN_MU_MINUS:
|
||||
expectedChisq = fRunMuMinusList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
case PRUN_NON_MUSR:
|
||||
expectedChisq = fRunNonMusrList[subIdx]->CalcChiSquareExpected(par);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -685,7 +696,7 @@ UInt_t PRunListCollection::GetNoOfBinsFitted(const UInt_t idx) const
|
||||
}
|
||||
|
||||
Int_t type = fMsrInfo->GetMsrRunList()->at(idx).GetFitType();
|
||||
if (type == -1) { // i.e. not found in the RUN block, try the GLOBAL block
|
||||
if (type == -1) { // i.e. not forun in the RUN block, try the GLOBAL block
|
||||
type = fMsrInfo->GetMsrGlobal()->GetFitType();
|
||||
}
|
||||
|
||||
@ -1142,296 +1153,3 @@ const Char_t* PRunListCollection::GetYAxisTitle(const TString &runName, const UI
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetStartTimeBin (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetStartTimeBin
|
||||
* @param fitType
|
||||
* @param idx
|
||||
* @return
|
||||
*/
|
||||
Int_t PRunListCollection::GetStartTimeBin(Int_t fitType, UInt_t idx)
|
||||
{
|
||||
Int_t result = -1;
|
||||
|
||||
switch (fitType) {
|
||||
case MSR_FITTYPE_SINGLE_HISTO:
|
||||
if (idx < fRunSingleHistoList.size())
|
||||
result = fRunSingleHistoList[idx]->GetStartTimeBin();
|
||||
break;
|
||||
case MSR_FITTYPE_ASYM:
|
||||
if (idx < fRunAsymmetryList.size())
|
||||
result = fRunAsymmetryList[idx]->GetStartTimeBin();
|
||||
break;
|
||||
case MSR_FITTYPE_MU_MINUS:
|
||||
if (idx < fRunMuMinusList.size())
|
||||
result = fRunMuMinusList[idx]->GetStartTimeBin();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetEndTimeBin (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetEndTimeBin
|
||||
* @param fitType
|
||||
* @param idx
|
||||
* @return
|
||||
*/
|
||||
Int_t PRunListCollection::GetEndTimeBin(Int_t fitType, UInt_t idx)
|
||||
{
|
||||
Int_t result = -1;
|
||||
|
||||
switch (fitType) {
|
||||
case MSR_FITTYPE_SINGLE_HISTO:
|
||||
if (idx < fRunSingleHistoList.size())
|
||||
result = fRunSingleHistoList[idx]->GetEndTimeBin();
|
||||
break;
|
||||
case MSR_FITTYPE_ASYM:
|
||||
if (idx < fRunAsymmetryList.size())
|
||||
result = fRunAsymmetryList[idx]->GetEndTimeBin();
|
||||
break;
|
||||
case MSR_FITTYPE_MU_MINUS:
|
||||
if (idx < fRunMuMinusList.size())
|
||||
result = fRunMuMinusList[idx]->GetEndTimeBin();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetSingleHistoParams (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetSingleHistoParams
|
||||
* @param idx
|
||||
* @param par
|
||||
* @param shp
|
||||
* @return
|
||||
*/
|
||||
Int_t PRunListCollection::GetSingleHistoParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp)
|
||||
{
|
||||
Int_t ierr = 0;
|
||||
// make sure idx is within proper bounds
|
||||
if (idx >= fRunSingleHistoList.size())
|
||||
return 1;
|
||||
|
||||
// init param
|
||||
InitDKSParams(dksp);
|
||||
|
||||
// get flag if scaling of N0 and Nbkg is wished
|
||||
dksp.fScaleN0AndBkg = fRunSingleHistoList[idx]->GetScaleN0AndBkg();
|
||||
|
||||
// check if norm is a parameter or a function
|
||||
PMsrRunBlock runInfo = fMsrInfo->GetMsrRunList()->at(idx);
|
||||
if (runInfo.GetNormParamNo() < MSR_PARAM_FUN_OFFSET) { // norm is a parameter
|
||||
dksp.fN0 = par[runInfo.GetNormParamNo()-1];
|
||||
} else { // norm is a function
|
||||
// get function number
|
||||
UInt_t funNo = runInfo.GetNormParamNo()-MSR_PARAM_FUN_OFFSET;
|
||||
// evaluate function
|
||||
dksp.fN0 = fMsrInfo->EvalFunc(funNo, *runInfo.GetMap(), par);
|
||||
}
|
||||
|
||||
// get tau
|
||||
if (runInfo.GetLifetimeParamNo() != -1)
|
||||
dksp.fTau = par[runInfo.GetLifetimeParamNo()-1];
|
||||
else
|
||||
dksp.fTau = PMUON_LIFETIME;
|
||||
|
||||
// get background
|
||||
if (runInfo.GetBkgFitParamNo() == -1) { // bkg not fitted
|
||||
if (runInfo.GetBkgFix(0) == PMUSR_UNDEFINED) { // no fixed background given (background interval)
|
||||
dksp.fNbkg = GetBackground(idx);
|
||||
} else { // fixed bkg given
|
||||
dksp.fNbkg = runInfo.GetBkgFix(0);
|
||||
}
|
||||
} else { // bkg fitted
|
||||
dksp.fNbkg = par[runInfo.GetBkgFitParamNo()-1];
|
||||
}
|
||||
|
||||
// get packed time resolution
|
||||
dksp.fPackedTimeResolution = fRunSingleHistoList[idx]->GetData()->GetDataTimeStep();
|
||||
|
||||
// get start time
|
||||
// fRunSingleHistoList[idx]->GetData()->GetDataTimeStart() : time of fgb, which is 0-bin of the fit-data-set
|
||||
// fRunSingleHistoList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution : time-offset from fgb-time to fit start time
|
||||
dksp.fStartTime = fRunSingleHistoList[idx]->GetData()->GetDataTimeStart() + fRunSingleHistoList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution;
|
||||
|
||||
// get number of bins fitted
|
||||
dksp.fNoOfFitBins = fRunSingleHistoList[idx]->GetNoOfFitBins();
|
||||
|
||||
// calculate functions
|
||||
Int_t funcNo = 0;
|
||||
for (Int_t i=0; i<fMsrInfo->GetNoOfFuncs(); i++) {
|
||||
funcNo = fMsrInfo->GetFuncNo(i);
|
||||
dksp.fFun.push_back(fMsrInfo->EvalFunc(funcNo, *runInfo.GetMap(), par));
|
||||
}
|
||||
|
||||
// get map vector
|
||||
dksp.fMap = *runInfo.GetMap();
|
||||
dksp.fMap.erase(dksp.fMap.begin()+GetNoOfMaps(), dksp.fMap.end());
|
||||
// need to reduce map indexes by 1 since in C/C++ arrays start at 0
|
||||
for (UInt_t i=0; i<dksp.fMap.size(); i++)
|
||||
dksp.fMap[i] -= 1;
|
||||
|
||||
return ierr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetAsymmetryParams (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetAsymmetryParams
|
||||
* @param idx
|
||||
* @param par
|
||||
* @param shp
|
||||
* @return
|
||||
*/
|
||||
Int_t PRunListCollection::GetAsymmetryParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp)
|
||||
{
|
||||
Int_t ierr=0, ival=0;
|
||||
// make sure idx is within proper bounds
|
||||
if (idx >= fRunAsymmetryList.size())
|
||||
return 1;
|
||||
|
||||
// init param
|
||||
InitDKSParams(dksp);
|
||||
|
||||
// get alpha
|
||||
PMsrRunBlock runInfo = fMsrInfo->GetMsrRunList()->at(idx);
|
||||
ival = runInfo.GetAlphaParamNo();
|
||||
if (ival > 0)
|
||||
dksp.fAlpha = par[ival-1];
|
||||
|
||||
// get beta
|
||||
ival = runInfo.GetBetaParamNo();
|
||||
if (ival > 0)
|
||||
dksp.fBeta = par[ival-1];
|
||||
|
||||
// get packed time resolution
|
||||
dksp.fPackedTimeResolution = fRunAsymmetryList[idx]->GetData()->GetDataTimeStep();
|
||||
|
||||
// get start time
|
||||
// fRunAsymmetryList[idx]->GetData()->GetDataTimeStart() : time of fgb, which is 0-bin of the fit-data-set
|
||||
// fRunAsymmetryList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution : time-offset from fgb-time to fit start time
|
||||
dksp.fStartTime = fRunAsymmetryList[idx]->GetData()->GetDataTimeStart() + fRunAsymmetryList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution;
|
||||
|
||||
// get number of bins fitted
|
||||
dksp.fNoOfFitBins = fRunAsymmetryList[idx]->GetNoOfFitBins();
|
||||
|
||||
// calculate functions
|
||||
Int_t funcNo = 0;
|
||||
for (Int_t i=0; i<fMsrInfo->GetNoOfFuncs(); i++) {
|
||||
funcNo = fMsrInfo->GetFuncNo(i);
|
||||
dksp.fFun.push_back(fMsrInfo->EvalFunc(funcNo, *runInfo.GetMap(), par));
|
||||
}
|
||||
|
||||
// get map vector
|
||||
dksp.fMap = *runInfo.GetMap();
|
||||
dksp.fMap.erase(dksp.fMap.begin()+GetNoOfMaps(), dksp.fMap.end());
|
||||
// need to reduce map indexes by 1 since in C/C++ arrays start at 0
|
||||
for (UInt_t i=0; i<dksp.fMap.size(); i++)
|
||||
dksp.fMap[i] -= 1;
|
||||
|
||||
return ierr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetMuMinusParams (public)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetMuMinusParams
|
||||
* @param idx
|
||||
* @param par
|
||||
* @param shp
|
||||
* @return
|
||||
*/
|
||||
Int_t PRunListCollection::GetMuMinusParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp)
|
||||
{
|
||||
Int_t ierr = 0;
|
||||
// make sure idx is within proper bounds
|
||||
if (idx >= fRunMuMinusList.size())
|
||||
return 1;
|
||||
|
||||
// get run block
|
||||
PMsrRunBlock runInfo = fMsrInfo->GetMsrRunList()->at(idx);
|
||||
|
||||
// init param
|
||||
InitDKSParams(dksp);
|
||||
|
||||
// get packed time resolution
|
||||
dksp.fPackedTimeResolution = fRunMuMinusList[idx]->GetData()->GetDataTimeStep();
|
||||
|
||||
// get start time
|
||||
// fRunSingleHistoList[idx]->GetData()->GetDataTimeStart() : time of fgb, which is 0-bin of the fit-data-set
|
||||
// fRunSingleHistoList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution : time-offset from fgb-time to fit start time
|
||||
dksp.fStartTime = fRunMuMinusList[idx]->GetData()->GetDataTimeStart() + fRunMuMinusList[idx]->GetStartTimeBin() * dksp.fPackedTimeResolution;
|
||||
|
||||
// get number of bins fitted
|
||||
dksp.fNoOfFitBins = fRunMuMinusList[idx]->GetNoOfFitBins();
|
||||
|
||||
// calculate functions
|
||||
Int_t funcNo = 0;
|
||||
for (Int_t i=0; i<fMsrInfo->GetNoOfFuncs(); i++) {
|
||||
funcNo = fMsrInfo->GetFuncNo(i);
|
||||
dksp.fFun.push_back(fMsrInfo->EvalFunc(funcNo, *runInfo.GetMap(), par));
|
||||
}
|
||||
|
||||
// get map vector
|
||||
dksp.fMap = *runInfo.GetMap();
|
||||
dksp.fMap.erase(dksp.fMap.begin()+GetNoOfMaps(), dksp.fMap.end());
|
||||
// need to reduce map indexes by 1 since in C/C++ arrays start at 0
|
||||
for (UInt_t i=0; i<dksp.fMap.size(); i++)
|
||||
dksp.fMap[i] -= 1;
|
||||
|
||||
return ierr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// InitDKSParams (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* \brief PRunListCollection::InitDKSParams
|
||||
* \param param
|
||||
*/
|
||||
void PRunListCollection::InitDKSParams(PDKSParams ¶m)
|
||||
{
|
||||
param.fScaleN0AndBkg = false;
|
||||
param.fN0 = -1.0;
|
||||
param.fNbkg = -1.0;
|
||||
param.fTau = -1.0;
|
||||
param.fAlpha = 1.0;
|
||||
param.fBeta = 1.0;
|
||||
param.fPackedTimeResolution = -1.0;
|
||||
param.fStartTime = -1.0;
|
||||
param.fNoOfFitBins = -1;
|
||||
param.fFun.clear();
|
||||
param.fMap.clear();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// GetBackground (private)
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief PRunListCollection::GetBackground
|
||||
* @param idx
|
||||
* @return
|
||||
*/
|
||||
Double_t PRunListCollection::GetBackground(Int_t idx)
|
||||
{
|
||||
// make sure idx is within proper bounds
|
||||
if (idx >= (Int_t)fRunSingleHistoList.size())
|
||||
return 0.0;
|
||||
|
||||
return fRunSingleHistoList[idx]->GetBackground();
|
||||
}
|
||||
|
@ -198,10 +198,6 @@ void PStartupHandler::OnStartDocument()
|
||||
fFourierDefaults.fPlotRange[0] = -1.0;
|
||||
fFourierDefaults.fPlotRange[1] = -1.0;
|
||||
fFourierDefaults.fPhaseIncrement = 1.0;
|
||||
|
||||
fStartupOptions.writeExpectedChisq = false; // NOT defined in the XML, but initialized for later use!!
|
||||
fStartupOptions.estimateN0 = false; // NOT defined in the XML, but initialized for later use!!
|
||||
fStartupOptions.useDKS = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@ -230,8 +226,6 @@ void PStartupHandler::OnStartElement(const Char_t *str, const TList *attributes)
|
||||
{
|
||||
if (!strcmp(str, "data_path")) {
|
||||
fKey = eDataPath;
|
||||
} else if (!strcmp(str, "use_dks")) {
|
||||
fKey = eUseDKS;
|
||||
} else if (!strcmp(str, "marker")) {
|
||||
fKey = eMarker;
|
||||
} else if (!strcmp(str, "color")) {
|
||||
@ -286,11 +280,6 @@ void PStartupHandler::OnCharacters(const Char_t *str)
|
||||
// add str to the path list
|
||||
fDataPathList.push_back(str);
|
||||
break;
|
||||
case eUseDKS:
|
||||
tstr = TString(str);
|
||||
if (tstr.BeginsWith("y") || tstr.BeginsWith("Y"))
|
||||
fStartupOptions.useDKS = true;
|
||||
break;
|
||||
case eMarker:
|
||||
// check that str is a number
|
||||
tstr = TString(str);
|
||||
@ -651,8 +640,6 @@ Bool_t PStartupHandler::WriteDefaultStartupFile()
|
||||
fout << " <data_path>/afs/psi.ch/project/bulkmusr/data/alc</data_path>" << endl;
|
||||
fout << " <data_path>/afs/psi.ch/project/bulkmusr/data/hifi</data_path>" << endl;
|
||||
fout << " <data_path>/afs/psi.ch/project/bulkmusr/data/lem</data_path>" << endl;
|
||||
fout << " <!-- the use_dks flag is only for the GPU Fourier support, not the fitting -->" << endl;
|
||||
fout << " <use_dks>no</use_dks>" << endl;
|
||||
fout << " <fourier_settings>" << endl;
|
||||
fout << " <units>Gauss</units>" << endl;
|
||||
fout << " <fourier_power>0</fourier_power>" << endl;
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -35,6 +35,6 @@
|
||||
|
||||
#pragma link C++ class BMWStartupHandler+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
2
src/external/MuSR_software/Makefile.am
vendored
2
src/external/MuSR_software/Makefile.am
vendored
@ -1 +1,3 @@
|
||||
## $Id$
|
||||
|
||||
SUBDIRS = Class_MuSR_PSI
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
4
src/external/libBNMR/TBNMRLinkDef.h
vendored
4
src/external/libBNMR/TBNMRLinkDef.h
vendored
@ -29,7 +29,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -40,4 +40,4 @@
|
||||
#pragma link C++ class SExpRlx+;
|
||||
#pragma link C++ class MLRes+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -39,6 +39,6 @@
|
||||
#pragma link C++ class TMeanFieldsForScTrilayer+;
|
||||
#pragma link C++ class TMeanFieldsForScTrilayerWithInsulator+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -41,6 +41,6 @@
|
||||
#pragma link C++ class TLondon1D3LS+;
|
||||
//#pragma link C++ class TLondon1D4L+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -35,6 +35,6 @@
|
||||
|
||||
#pragma link C++ class TSkewedGss+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -46,6 +46,6 @@
|
||||
#pragma link C++ class TBulkAnisotropicTriVortexAGL+;
|
||||
#pragma link C++ class TBulkAnisotropicTriVortexAGLGlobal+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -57,6 +57,6 @@
|
||||
#pragma link C++ class TLambdaInvPowerLaw+;
|
||||
#pragma link C++ class TFilmMagnetizationDWave+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
4
src/external/libGbGLF/PGbGLFLinkDef.h
vendored
4
src/external/libGbGLF/PGbGLFLinkDef.h
vendored
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -35,6 +35,6 @@
|
||||
|
||||
#pragma link C++ class PGbGLF+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -40,6 +40,6 @@
|
||||
#pragma link C++ class TLFDynSG+;
|
||||
#pragma link C++ class TLFSGInterpolation+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -37,6 +37,6 @@
|
||||
#pragma link C++ class ZFMagExp+;
|
||||
#pragma link C++ class UniaxialStatGssKT+;
|
||||
|
||||
#endif //__CLING__
|
||||
#endif //__CINT__
|
||||
// root dictionary stuff --------------------------------------------------
|
||||
|
||||
|
@ -30,8 +30,6 @@
|
||||
#ifndef _PFITTER_H_
|
||||
#define _PFITTER_H_
|
||||
|
||||
#include "TString.h"
|
||||
|
||||
#include "Minuit2/MnUserParameters.h"
|
||||
#include "Minuit2/FunctionMinimum.h"
|
||||
|
||||
@ -39,7 +37,6 @@
|
||||
#include "PMsrHandler.h"
|
||||
#include "PRunListCollection.h"
|
||||
#include "PFitterFcn.h"
|
||||
#include "PFitterFcnDKS.h"
|
||||
|
||||
#define PMN_INTERACTIVE 0
|
||||
#define PMN_CONTOURS 1
|
||||
@ -68,7 +65,7 @@
|
||||
class PFitter
|
||||
{
|
||||
public:
|
||||
PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only = false, TString hardwareInfo = TString("??"));
|
||||
PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only = false);
|
||||
virtual ~PFitter();
|
||||
|
||||
Bool_t IsValid() { return fIsValid; }
|
||||
@ -77,15 +74,12 @@ class PFitter
|
||||
Bool_t DoFit();
|
||||
|
||||
private:
|
||||
Bool_t fDKSReady; ///< flag. true: fit via DKS/GPU. false: fit on CPU
|
||||
Int_t fDKSTag; ///< tag. holding more detailed information about the DKS/CPU/GPU request
|
||||
Bool_t fIsValid; ///< flag. true: the fit is valid.
|
||||
Bool_t fIsScanOnly; ///< flag. true: scan along some parameters (no fitting).
|
||||
Bool_t fConverged; ///< flag. true: the fit has converged.
|
||||
Bool_t fChisqOnly; ///< flag. true: calculate chi^2 only (no fitting).
|
||||
Bool_t fUseChi2; ///< flag. true: chi^2 fit. false: log-max-likelihood
|
||||
UInt_t fPrintLevel; ///< tag, showing the level of messages whished. 0=minimum, 1=standard, 2=maximum
|
||||
TString fHardwareInfo; ///< string containing the CPU/GPU information.
|
||||
|
||||
UInt_t fStrategy; ///< fitting strategy (see minuit2 manual).
|
||||
|
||||
@ -98,7 +92,6 @@ class PFitter
|
||||
PIntPairVector fCmdList; ///< command list, first=cmd, second=cmd line index
|
||||
|
||||
PFitterFcn *fFitterFcn; ///< pointer to the fitter function object
|
||||
PFitterFcnDKS *fFitterFcnDKS; ///< pointer to the DKS fitter function object
|
||||
|
||||
ROOT::Minuit2::MnUserParameters fMnUserParams; ///< minuit2 input parameter list
|
||||
ROOT::Minuit2::FunctionMinimum *fFcnMin; ///< function minimum object
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include "PRunListCollection.h"
|
||||
|
||||
/**
|
||||
* <p>This is the minuit2 interface function class providing the function to be optimized (chisq or log max-likelihood).
|
||||
* <p>This is the minuit2 interface function class porviding the function to be optimized (chisq or log max-likelihood).
|
||||
*/
|
||||
class PFitterFcn : public ROOT::Minuit2::FCNBase
|
||||
{
|
||||
|
@ -1,83 +0,0 @@
|
||||
/***************************************************************************
|
||||
|
||||
PFitterFcnDKS.h
|
||||
|
||||
Author: Andreas Suter
|
||||
e-mail: andreas.suter@psi.ch
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2016 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. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef _PFITTERFCNDKS_H_
|
||||
#define _PFITTERFCNDKS_H_
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "Minuit2/FCNBase.h"
|
||||
#include "DKSBaseMuSR.h"
|
||||
#include "PRunListCollection.h"
|
||||
|
||||
typedef struct {
|
||||
UInt_t fN0; ///< N0 parameter index
|
||||
UInt_t fNbkg; ///< Nbkg parameter index
|
||||
} PNidx;
|
||||
|
||||
/**
|
||||
* <p>This is the minuit2 interface function class providing the function to be optimized (chisq or log max-likelihood).
|
||||
*/
|
||||
class PFitterFcnDKS : public ROOT::Minuit2::FCNBase
|
||||
{
|
||||
public:
|
||||
PFitterFcnDKS(PRunListCollection *runList, const Bool_t useChi2, const UInt_t dksTag, const std::string theo);
|
||||
virtual ~PFitterFcnDKS();
|
||||
|
||||
virtual Bool_t IsValid() { return fValid; }
|
||||
|
||||
virtual Double_t Up() const { return fUp; }
|
||||
virtual Double_t operator()(const std::vector<Double_t> &par) const;
|
||||
|
||||
virtual UInt_t GetTotalNoOfFittedBins() { return fRunListCollection->GetTotalNoOfBinsFitted(); }
|
||||
virtual UInt_t GetNoOfFittedBins(const UInt_t idx) { return fRunListCollection->GetNoOfBinsFitted(idx); }
|
||||
virtual void CalcExpectedChiSquare(const std::vector<Double_t> &par, Double_t &totalExpectedChisq, std::vector<Double_t> &expectedChisqPerRun);
|
||||
|
||||
private:
|
||||
Bool_t fValid; ///< flag needed to ensure a valid state
|
||||
std::string fTheoStr; ///< theory string for DKS compilation
|
||||
Double_t fUp; ///< for chisq == 1.0, i.e. errors are 1 std. deviation errors. for log max-likelihood == 0.5, i.e. errors are 1 std. deviation errors (for details see the minuit2 user manual).
|
||||
Bool_t fUseChi2; ///< true = chisq fit, false = log max-likelihood fit
|
||||
PRunListCollection *fRunListCollection; ///< pre-processed data to be fitted
|
||||
|
||||
mutable DKSBaseMuSR fDKS;
|
||||
|
||||
vector<void *> fMemDataSingleHisto; ///< vector holding the initial addresses of the single histo data sets on the GPU
|
||||
vector<void *> fMemDataSingleHistoErr; ///< vector holding the initial addresses of the single histo error sets on the GPU
|
||||
vector<void *> fMemDataAsymmetry; ///< vector holding the initial addresses of the asymmetry data sets on the GPU
|
||||
vector<void *> fMemDataAsymmetryErr; ///< vector holding the initial addresses of the asymmetry error sets on the GPU
|
||||
vector<void *> fMemDataMuMinus; ///< vector holding the initial addresses of the mu minus data sets on the GPU
|
||||
vector<void *> fMemDataMuMinusErr; ///< vector holding the initial addresses of the mu minus error sets on the GPU
|
||||
vector<PNidx> fNidx; ///< N0 / Nbkg parameter index vector
|
||||
|
||||
virtual void InitDKS(const UInt_t dksTag);
|
||||
virtual void FreeDKS();
|
||||
};
|
||||
|
||||
#endif // _PFITTERFCNDKS_H_
|
@ -30,20 +30,10 @@
|
||||
#ifndef _PFOURIER_H_
|
||||
#define _PFOURIER_H_
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_DKS
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
#include "fftw3.h"
|
||||
#else
|
||||
#include <complex>
|
||||
using namespace std;
|
||||
#include "DKSBase.h"
|
||||
#include "DKSFFT.h"
|
||||
#endif
|
||||
|
||||
#include "Minuit2/FCNBase.h"
|
||||
|
||||
@ -108,19 +98,17 @@ class PFourier
|
||||
public:
|
||||
PFourier(TH1F *data, Int_t unitTag,
|
||||
Double_t startTime = 0.0, Double_t endTime = 0.0,
|
||||
Bool_t dcCorrected = false, UInt_t zeroPaddingPower = 0,
|
||||
Bool_t useFFTW = true);
|
||||
Bool_t dcCorrected = false, UInt_t zeroPaddingPower = 0);
|
||||
virtual ~PFourier();
|
||||
|
||||
virtual void Transform(UInt_t apodizationTag = F_APODIZATION_NONE);
|
||||
|
||||
virtual void SetUseFFTW(const Bool_t flag);
|
||||
virtual void Transform(UInt_t apodizationTag = 0);
|
||||
|
||||
virtual const char* GetDataTitle() { return fData->GetTitle(); }
|
||||
virtual const Int_t GetUnitTag() { return fUnitTag; }
|
||||
virtual Double_t GetResolution() { return fResolution; }
|
||||
virtual Double_t GetMaxFreq();
|
||||
virtual TH1F* GetRealFourier(const Double_t scale = 1.0);
|
||||
//as virtual TH1F* GetPhaseOptRealFourier(vector<Double_t> &phase, const Double_t scale = 1.0, const Double_t min = -1.0, const Double_t max = -1.0);
|
||||
virtual TH1F* GetImaginaryFourier(const Double_t scale = 1.0);
|
||||
virtual TH1F* GetPowerFourier(const Double_t scale = 1.0);
|
||||
virtual TH1F* GetPhaseFourier(const Double_t scale = 1.0);
|
||||
@ -129,14 +117,12 @@ class PFourier
|
||||
const Double_t scale = 1.0, const Double_t min = -1.0, const Double_t max = -1.0);
|
||||
|
||||
virtual Bool_t IsValid() { return fValid; }
|
||||
virtual Bool_t IsUseFFTW() { return fUseFFTW; }
|
||||
|
||||
private:
|
||||
TH1F *fData; ///< data histogram to be Fourier transformed.
|
||||
|
||||
Bool_t fValid; ///< true = all boundary conditions fullfilled and hence a Fourier transform can be performed.
|
||||
Int_t fUnitTag; ///< 1=Field Units (G), 2=Field Units (T), 3=Frequency Units (MHz), 4=Angular Frequency Units (Mc/s)
|
||||
Bool_t fUseFFTW; ///< true = use FFTW, otherwise use DKS if present
|
||||
|
||||
Int_t fApodization; ///< 0=none, 1=weak, 2=medium, 3=strong
|
||||
|
||||
@ -149,18 +135,11 @@ class PFourier
|
||||
|
||||
UInt_t fNoOfData; ///< number of bins in the time interval between fStartTime and fStopTime
|
||||
UInt_t fNoOfBins; ///< number of bins to be Fourier transformed. Might be different to fNoOfData due to zero padding
|
||||
|
||||
fftw_plan fFFTwPlan; ///< fftw plan (see FFTW3 User Manual)
|
||||
fftw_complex *fIn; ///< real part of the Fourier transform
|
||||
fftw_complex *fOut; ///< imaginary part of the Fourier transform
|
||||
fftw_complex *fIn; ///< real part of the Fourier transform
|
||||
fftw_complex *fOut; ///< imaginary part of the Fourier transform
|
||||
|
||||
#ifdef HAVE_DKS
|
||||
double *fInDKS; ///< real part of the Fourier transform
|
||||
complex<double> *fOutDKS; ///< imaginary part of the Fourier transform
|
||||
DKSFFT fDks; ///< Dynamic Kernel Scheduler
|
||||
void *fReal_ptr; ///< real part of the Fourier on accelartor
|
||||
void *fComp_ptr; ///< imaginary part of the Fourier on the acclerator
|
||||
#endif
|
||||
//as PFTPhaseCorrection *fPhCorrectedReFT;
|
||||
|
||||
virtual void PrepareFFTwInputData(UInt_t apodizationTag);
|
||||
virtual void ApodizeData(Int_t apodizationTag);
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -30,8 +30,6 @@
|
||||
#ifndef _PMSRHANDLER_H_
|
||||
#define _PMSRHANDLER_H_
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <TString.h>
|
||||
#include <TComplex.h>
|
||||
|
||||
@ -110,10 +108,6 @@ class PMsrHandler
|
||||
virtual void GetGroupingString(Int_t runNo, TString detector, TString &groupingStr);
|
||||
virtual Bool_t EstimateN0();
|
||||
|
||||
virtual std::string GetDKSTheoryString();
|
||||
virtual UInt_t GetDKSTag();
|
||||
virtual Int_t GetNoOfMaps() { return fNoOfMaps; }
|
||||
|
||||
private:
|
||||
Bool_t fFourierOnly; ///< flag indicating if Fourier transform only is wished. If yes, some part of the msr-file blocks are not needed.
|
||||
PStartupOptions *fStartupOptions; ///< contains information about startup options from the musrfit_startup.xml
|
||||
@ -139,8 +133,6 @@ class PMsrHandler
|
||||
|
||||
Bool_t fCopyStatisticsBlock; ///< flag, if true: just copy to old statistics block (musrt0), otherwise write a new one (musrfit)
|
||||
|
||||
Int_t fNoOfMaps;
|
||||
|
||||
virtual Bool_t HandleFitParameterEntry(PMsrLines &line);
|
||||
virtual Bool_t HandleTheoryEntry(PMsrLines &line);
|
||||
virtual Bool_t HandleFunctionsEntry(PMsrLines &line);
|
||||
@ -163,8 +155,6 @@ class PMsrHandler
|
||||
virtual void MakeDetectorGroupingString(TString str, PIntVector &group, TString &result, Bool_t includeDetector = true);
|
||||
|
||||
virtual void CheckLegacyLifetimecorrection();
|
||||
|
||||
virtual void HandleTheoryArguments(const TString theo, PStringVector &args);
|
||||
};
|
||||
|
||||
#endif // _PMSRHANDLER_H_
|
||||
|
@ -148,13 +148,6 @@ using namespace std;
|
||||
|
||||
#define RRF_FREQ_UNDEF 1.0e10
|
||||
|
||||
//-------------------------------------------------------------
|
||||
// DKS related tags
|
||||
#define DKS_CPU_OPENMP 0
|
||||
#define DKS_CPU_OPENCL 1
|
||||
#define DKS_GPU_OPENCL 2
|
||||
#define DKS_GPU_CUDA 3
|
||||
|
||||
//-------------------------------------------------------------
|
||||
/**
|
||||
* <p>typedef to make to code more readable. Definition of a bool vector.
|
||||
@ -825,9 +818,8 @@ typedef struct {
|
||||
* <p>Holds information given at startup
|
||||
*/
|
||||
typedef struct {
|
||||
Bool_t writeExpectedChisq; ///< if set to true, expected chisq and chisq per block will be written (from command line)
|
||||
Bool_t estimateN0; ///< if set to true, for single histogram fits N0 will be estimated (from command line)
|
||||
Bool_t useDKS; ///< if set to true, use DKS if present and "sensible" (from xml)
|
||||
Bool_t writeExpectedChisq; ///< if set to true, expected chisq and chisq per block will be written
|
||||
Bool_t estimateN0; ///< if set to true, for single histogram fits N0 will be estimated
|
||||
} PStartupOptions;
|
||||
|
||||
//-------------------------------------------------------------
|
||||
|
@ -206,12 +206,12 @@ class PMusrCanvas : public TObject, public TQObject
|
||||
PMusrCanvas();
|
||||
PMusrCanvas(const Int_t number, const Char_t* title,
|
||||
Int_t wtopx, Int_t wtopy, Int_t ww, Int_t wh, const Bool_t batch,
|
||||
const Bool_t fourier=false, const Bool_t avg=false, const Bool_t useDKS=false);
|
||||
const Bool_t fourier=false, const Bool_t avg=false);
|
||||
PMusrCanvas(const Int_t number, const Char_t* title,
|
||||
Int_t wtopx, Int_t wtopy, Int_t ww, Int_t wh,
|
||||
PMsrFourierStructure fourierDefault,
|
||||
const PIntVector markerList, const PIntVector colorList, const Bool_t batch,
|
||||
const Bool_t fourier=false, const Bool_t avg=false, const Bool_t useDKS=false);
|
||||
const Bool_t fourier=false, const Bool_t avg=false);
|
||||
virtual ~PMusrCanvas();
|
||||
|
||||
virtual Bool_t IsValid() { return fValid; }
|
||||
@ -237,7 +237,6 @@ class PMusrCanvas : public TObject, public TQObject
|
||||
private:
|
||||
Bool_t fStartWithFourier; ///< flag if true, the Fourier transform will be presented bypassing the time domain representation
|
||||
Bool_t fStartWithAvg; ///< flag if true, the averaged data/Fourier will be presented
|
||||
Bool_t fUseDKS; ///< flag if true, use DKS if it is enabled
|
||||
Int_t fTimeout; ///< timeout after which the Done signal should be emited. If timeout <= 0, no timeout is taking place
|
||||
Bool_t fScaleN0AndBkg; ///< true=N0 and background is scaled to (1/ns), otherwise (1/bin) for the single histogram case
|
||||
Bool_t fBatchMode; ///< musrview in ROOT batch mode
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -57,7 +57,6 @@ class PRunBase
|
||||
|
||||
virtual void CalcTheory() = 0; ///< pure virtual, i.e. needs to be implemented by the deriving class!!
|
||||
|
||||
virtual Double_t GetTimeResolution() { return fTimeResolution; } ///< returns the native raw data time resolution
|
||||
virtual UInt_t GetRunNo() { return fRunNo; } ///< returns the number of runs of the msr-file
|
||||
virtual PRunData* GetData() { return &fData; } ///< returns the data to be fitted
|
||||
virtual void CleanUp();
|
||||
|
@ -43,25 +43,6 @@ using namespace std;
|
||||
#include "PRunMuMinus.h"
|
||||
#include "PRunNonMusr.h"
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
*
|
||||
*/
|
||||
typedef struct {
|
||||
Bool_t fScaleN0AndBkg;
|
||||
Double_t fN0;
|
||||
Double_t fNbkg;
|
||||
Double_t fTau;
|
||||
Double_t fAlpha;
|
||||
Double_t fBeta;
|
||||
Double_t fPackedTimeResolution;
|
||||
Double_t fStartTime;
|
||||
Int_t fNoOfFitBins;
|
||||
PDoubleVector fFun;
|
||||
PIntVector fMap;
|
||||
} PDKSParams;
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Handler class handling all processed data of an msr-file. All calls of minuit2 are going through this class.
|
||||
*/
|
||||
@ -85,7 +66,7 @@ class PRunListCollection
|
||||
virtual Double_t GetMuMinusChisq(const std::vector<Double_t>& par) const;
|
||||
virtual Double_t GetNonMusrChisq(const std::vector<Double_t>& par) const;
|
||||
|
||||
virtual Double_t GetSingleRunChisqExpected(const std::vector<Double_t>& par, const UInt_t idx) const;
|
||||
virtual Double_t GetSingleHistoChisqExpected(const std::vector<Double_t>& par, const UInt_t idx) const;
|
||||
virtual Double_t GetSingleRunChisq(const std::vector<Double_t>& par, const UInt_t idx) const;
|
||||
|
||||
virtual Double_t GetSingleHistoMaximumLikelihood(const std::vector<Double_t>& par) const;
|
||||
@ -122,15 +103,6 @@ class PRunListCollection
|
||||
virtual const Char_t* GetXAxisTitle(const TString &runName, const UInt_t idx) const;
|
||||
virtual const Char_t* GetYAxisTitle(const TString &runName, const UInt_t idx) const;
|
||||
|
||||
virtual Int_t GetNoOfParameters() { return fMsrInfo->GetNoOfParams(); }
|
||||
virtual Int_t GetNoOfFunctions() { return fMsrInfo->GetNoOfFuncs(); }
|
||||
virtual Int_t GetNoOfMaps() { return fMsrInfo->GetNoOfMaps(); }
|
||||
virtual Int_t GetStartTimeBin(Int_t fitType, UInt_t idx);
|
||||
virtual Int_t GetEndTimeBin(Int_t fitType, UInt_t idx);
|
||||
virtual Int_t GetSingleHistoParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp);
|
||||
virtual Int_t GetAsymmetryParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp);
|
||||
virtual Int_t GetMuMinusParams(UInt_t idx, const std::vector<Double_t>& par, PDKSParams &dksp);
|
||||
|
||||
private:
|
||||
PMsrHandler *fMsrInfo; ///< pointer to the msr-file handler
|
||||
PRunDataHandler *fData; ///< pointer to the run-data handler
|
||||
@ -141,9 +113,6 @@ class PRunListCollection
|
||||
vector<PRunAsymmetryRRF*> fRunAsymmetryRRFList; ///< stores all processed asymmetry RRF data
|
||||
vector<PRunMuMinus*> fRunMuMinusList; ///< stores all processed mu-minus data
|
||||
vector<PRunNonMusr*> fRunNonMusrList; ///< stores all processed non-muSR data
|
||||
|
||||
virtual void InitDKSParams(PDKSParams ¶m);
|
||||
virtual Double_t GetBackground(Int_t idx);
|
||||
};
|
||||
|
||||
#endif // _PRUNLISTCOLLECTION_H_
|
||||
|
@ -73,14 +73,13 @@ class PStartupHandler : public TObject, public TQObject
|
||||
|
||||
virtual void CheckLists();
|
||||
|
||||
virtual PStartupOptions* GetStartupOptions() { return &fStartupOptions; } ///< returns the startup options
|
||||
virtual PMsrFourierStructure GetFourierDefaults() { return fFourierDefaults; } ///< returns the Fourier defaults
|
||||
virtual const PStringVector GetDataPathList() const { return fDataPathList; } ///< returns the search data path list
|
||||
virtual const PIntVector GetMarkerList() const { return fMarkerList; } ///< returns the marker list
|
||||
virtual const PIntVector GetColorList() const { return fColorList; } ///< returns the color list
|
||||
|
||||
private:
|
||||
enum EKeyWords {eEmpty, eComment, eDataPath, eOptions, eUseDKS,
|
||||
enum EKeyWords {eEmpty, eComment, eDataPath, eOptions,
|
||||
eFourierSettings, eUnits, eFourierPower,
|
||||
eApodization, ePlot, ePhase, ePhaseIncrement,
|
||||
eRootSettings, eMarkerList, eMarker,
|
||||
@ -93,7 +92,6 @@ class PStartupHandler : public TObject, public TQObject
|
||||
PStringVector fDataPathList; ///< search data path list
|
||||
PIntVector fMarkerList; ///< marker list
|
||||
PIntVector fColorList; ///< color list
|
||||
PStartupOptions fStartupOptions; ///< collects all startup options which will be requested by PMsrFileHandler
|
||||
|
||||
Bool_t StartupFileExists(Char_t *fln);
|
||||
Bool_t WriteDefaultStartupFile();
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -27,7 +27,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -54,10 +54,6 @@ using namespace std;
|
||||
#include "PFourier.h"
|
||||
#include "PFourierCanvas.h"
|
||||
|
||||
#define MFT_UNDEF -1
|
||||
#define MFT_DKS 0
|
||||
#define MFT_FFTW 1
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Structure keeping the command line options.
|
||||
@ -85,7 +81,6 @@ typedef struct {
|
||||
Int_t packing; ///< packing for rebinning the time histograms before Fourier transform.
|
||||
TString title; ///< title to be shown for the Fourier plot.
|
||||
Double_t lifetimecorrection; ///< is == 0.0 for NO life time correction, otherwise it holds the fudge factor
|
||||
Int_t useDKS; ///< use DKS tag, -1 = undefined, 0 = used DKS, 1 = use FFTW
|
||||
Int_t timeout; ///< timeout in (sec) after which musrFT will terminate. if <= 0, no automatic termination will take place.
|
||||
} musrFT_startup_param;
|
||||
|
||||
@ -153,7 +148,6 @@ void musrFT_syntax()
|
||||
cout << endl << " provided. This will help on the way to a full fitting model.";
|
||||
cout << endl << " -lc, --lifetimecorrection <fudge>: try to eliminate muon life time decay. Only makes sense for low";
|
||||
cout << endl << " transverse fields. <fudge> is a tweaking factor and should be kept around 1.0.";
|
||||
cout << endl << " --useDKS <flag> : if <flag> is true, DKS will be used, otherwise FFTW. Default: false, i.e. FFTW will be used.";
|
||||
cout << endl << " --timeout <timeout> : <timeout> given in seconds after which musrFT terminates.";
|
||||
cout << endl << " If <timeout> <= 0, no timeout will take place. Default <timeout> is 3600.";
|
||||
cout << endl << endl;
|
||||
@ -186,7 +180,6 @@ void musrFT_init(musrFT_startup_param &startupParam)
|
||||
startupParam.packing = 1;
|
||||
startupParam.title = TString("");
|
||||
startupParam.lifetimecorrection = 0.0;
|
||||
startupParam.useDKS = MFT_UNDEF;
|
||||
startupParam.timeout = 3600;
|
||||
}
|
||||
|
||||
@ -527,21 +520,6 @@ Int_t musrFT_parse_options(Int_t argc, Char_t *argv[], musrFT_startup_param &sta
|
||||
return 2;
|
||||
}
|
||||
startupParam.lifetimecorrection = fudge.Atof();
|
||||
} else if (tstr.BeginsWith("--useDKS")) {
|
||||
if (i+1 >= argc) { // something is wrong since there needs to be an argument here
|
||||
cerr << endl << ">> musrFT **ERROR** found option --useDKS without argument!" << endl;
|
||||
return 2;
|
||||
}
|
||||
++i;
|
||||
TString tt(argv[i]);
|
||||
if (tt.CompareTo("yes", TString::kIgnoreCase) && tt.CompareTo("no", TString::kIgnoreCase)) {
|
||||
cerr << endl << ">> musrFT **ERROR** found option --useDKS with a <flag> which is not yes/no '" << tt << "'." << endl;
|
||||
return 2;
|
||||
}
|
||||
if (!tt.CompareTo("yes", TString::kIgnoreCase))
|
||||
startupParam.useDKS = MFT_DKS;
|
||||
else if (!tt.CompareTo("no", TString::kIgnoreCase))
|
||||
startupParam.useDKS = MFT_FFTW;
|
||||
} else if (tstr.BeginsWith("--timeout")) {
|
||||
if (i+1 >= argc) { // something is wrong since there needs to be an argument here
|
||||
cerr << endl << ">> musrFT **ERROR** found option --timeout without argument!" << endl;
|
||||
@ -1079,14 +1057,6 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
// filter out the use_dks flag
|
||||
if (startupParam.useDKS == MFT_UNDEF) {
|
||||
if (startupHandler->GetStartupOptions()->useDKS)
|
||||
startupParam.useDKS = MFT_DKS;
|
||||
else
|
||||
startupParam.useDKS = MFT_FFTW;
|
||||
}
|
||||
|
||||
// defines the raw time-domain data vector
|
||||
PPrepFourier data(startupParam.packing, startupParam.bkg_range, startupParam.bkg);
|
||||
|
||||
@ -1430,15 +1400,8 @@ Int_t main(Int_t argc, Char_t *argv[])
|
||||
|
||||
vector<PFourier*> fourier;
|
||||
fourier.resize(histo.size());
|
||||
Bool_t fftw_flag = true;
|
||||
if (startupParam.useDKS == MFT_DKS)
|
||||
fftw_flag = false;
|
||||
if (fftw_flag)
|
||||
cout << "info> will use FFTW" << endl;
|
||||
else
|
||||
cout << "info> will use DKS" << endl;
|
||||
for (UInt_t i=0; i<fourier.size(); i++) {
|
||||
fourier[i] = new PFourier(histo[i], unitTag, 0.0, 0.0, true, startupParam.fourierPower, fftw_flag);
|
||||
fourier[i] = new PFourier(histo[i], unitTag, 0.0, 0.0, true, startupParam.fourierPower);
|
||||
}
|
||||
|
||||
// Fourier transform data
|
||||
|
@ -54,11 +54,11 @@
|
||||
<lgb>63000</lgb>
|
||||
<asym_bkg_range>200 1500</asym_bkg_range>
|
||||
<logic_detector name="L" rel_phase="0.0" forward="1 5"/>
|
||||
<logic_detector name="T" rel_phase="90.0" forward="2 6"/>
|
||||
<logic_detector name="T" rel_phase="-90.0" forward="2 6"/>
|
||||
<logic_detector name="R" rel_phase="180.0" forward="3 7"/>
|
||||
<logic_detector name="B" rel_phase="270.0" forward="4 8"/>
|
||||
<logic_detector name="B" rel_phase="90.0" forward="4 8"/>
|
||||
<logic_asym_detector name="LR" rel_phase="0.0" forward="1 5" backward="3 7" alpha="1.0"/>
|
||||
<logic_asym_detector name="TB" rel_phase="90.0" forward="2 6" backward="4 8" alpha="1.0"/>
|
||||
<logic_asym_detector name="TB" rel_phase="-90.0" forward="2 6" backward="4 8" alpha="1.0"/>
|
||||
</tf>
|
||||
<tf name="WEW PPC">
|
||||
<no_of_detectors>8</no_of_detectors>
|
||||
@ -66,11 +66,11 @@
|
||||
<lgb>63000</lgb>
|
||||
<asym_bkg_range>200 1500</asym_bkg_range>
|
||||
<logic_detector name="L" rel_phase="0.0" forward="21 25"/>
|
||||
<logic_detector name="T" rel_phase="90.0" forward="22 26"/>
|
||||
<logic_detector name="T" rel_phase="-90.0" forward="22 26"/>
|
||||
<logic_detector name="R" rel_phase="180.0" forward="23 27"/>
|
||||
<logic_detector name="B" rel_phase="270.0" forward="24 28"/>
|
||||
<logic_detector name="B" rel_phase="90.0" forward="24 28"/>
|
||||
<logic_asym_detector name="LR" rel_phase="0.0" forward="21 25" backward="23 27" alpha="1.0"/>
|
||||
<logic_asym_detector name="TB" rel_phase="90.0" forward="22 26" backward="24 28" alpha="1.0"/>
|
||||
<logic_asym_detector name="TB" rel_phase="-90.0" forward="22 26" backward="24 28" alpha="1.0"/>
|
||||
</tf>
|
||||
<tf name="Bpar NPP">
|
||||
<no_of_detectors>4</no_of_detectors>
|
||||
|
@ -53,7 +53,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (argc == 2) {
|
||||
if (!strcmp(argv[1], "--version") || (!strcmp(argv[1], "-v"))) {
|
||||
std::cout << std::endl << "musrWiz - alpha - git-branch: " << GIT_BRANCH << ", git-rev: " << GIT_CURRENT_SHA1 << std::endl << std::endl;
|
||||
std::cout << std::endl << "musrWiz - git-branch: " << GIT_BRANCH << ", git-rev: " << GIT_CURRENT_SHA1 << std::endl << std::endl;
|
||||
return 0;
|
||||
} else if (!strcmp(argv[1], "--help")) {
|
||||
musrWiz_syntax();
|
||||
|
@ -64,7 +64,7 @@ PFitOutputHandler::PFitOutputHandler(QString workingDirectory, QVector<QString>
|
||||
|
||||
// make sure that the system environment variables are properly set
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
fProc->setProcessEnvironment(env);
|
||||
fProc->setWorkingDirectory(workingDirectory);
|
||||
|
||||
|
@ -1848,7 +1848,7 @@ void PTextEdit::musrWiz()
|
||||
|
||||
// make sure that the system environment variables are properly set
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
proc->setProcessEnvironment(env);
|
||||
proc->setWorkingDirectory(workDir);
|
||||
proc->start(cmd, arg);
|
||||
@ -2369,7 +2369,7 @@ void PTextEdit::musrView()
|
||||
|
||||
// make sure that the system environment variables are properly set
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
proc->setProcessEnvironment(env);
|
||||
proc->setWorkingDirectory(workDir);
|
||||
proc->start(cmd, arg);
|
||||
@ -2423,7 +2423,7 @@ void PTextEdit::musrT0()
|
||||
|
||||
// make sure that the system environment variables are properly set
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
proc->setProcessEnvironment(env);
|
||||
proc->setWorkingDirectory(workDir);
|
||||
proc->start(cmd, arg);
|
||||
@ -2460,7 +2460,7 @@ void PTextEdit::musrFT()
|
||||
proc->setStandardErrorFile("musrFT.log");
|
||||
QString cmd = fAdmin->getExecPath() + "/musrFT";
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
proc->setProcessEnvironment(env);
|
||||
proc->start(cmd, fMusrFTPrevCmd);
|
||||
if (!proc->waitForStarted()) {
|
||||
@ -2562,7 +2562,7 @@ void PTextEdit::musrSetSteps()
|
||||
|
||||
// make sure that the system environment variables are properly set
|
||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("DKS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH"));
|
||||
proc->setProcessEnvironment(env);
|
||||
proc->setWorkingDirectory(workDir);
|
||||
proc->start(cmd, arg);
|
||||
|
108
src/musrfit.cpp
108
src/musrfit.cpp
@ -35,8 +35,6 @@
|
||||
#include <cstdlib>
|
||||
//#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/sysctl.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
|
||||
@ -120,87 +118,6 @@ void musrfit_syntax()
|
||||
cout << endl << endl;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> extract CPU information from the system.
|
||||
*
|
||||
* @return the CPU information or ?? if this was not possible.
|
||||
*/
|
||||
TString musrfit_get_cpu_info()
|
||||
{
|
||||
TString cpuInfo = "??";
|
||||
|
||||
// find out if linux or Mac OS X
|
||||
struct utsname sys_info;
|
||||
|
||||
uname(&sys_info);
|
||||
|
||||
if (strstr(sys_info.sysname, "Linux")) {
|
||||
char result[128];
|
||||
strcpy(result, "??");
|
||||
|
||||
char line[128], str[128], *pos;
|
||||
bool done = false;
|
||||
ifstream fin("/proc/cpuinfo", ifstream::in);
|
||||
while (fin.good() && !done) {
|
||||
fin.getline(line, 128);
|
||||
if (strstr(line, "model name")) {
|
||||
pos = strstr(line, ":");
|
||||
strcpy(str, pos+2);
|
||||
strncpy(result, str, sizeof(result));
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
fin.close();
|
||||
cpuInfo = result;
|
||||
} else if (strstr(sys_info.sysname, "Darwin")) {
|
||||
system("sysctl -n machdep.cpu.brand_string >> _musrfit_cpu_info.txt");
|
||||
sleep(1);
|
||||
|
||||
char line[128], result[128];
|
||||
ifstream fin("_musrfit_cpu_info.txt", ifstream::in);
|
||||
while (fin.good()) {
|
||||
fin.getline(line, 128);
|
||||
strncat(result, line, sizeof(result) - strlen(result) - 1);
|
||||
}
|
||||
fin.close();
|
||||
system("rm _musrfit_cpu_info.txt");
|
||||
cpuInfo = result;
|
||||
}
|
||||
|
||||
return cpuInfo;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p> extract GPU information from the system.
|
||||
*
|
||||
* @return the GPU information or ?? if this was not possible.
|
||||
*/
|
||||
TString musrfit_get_gpu_info()
|
||||
{
|
||||
TString gpuInfo = "??";
|
||||
|
||||
system("nvidia-smi -L > _nv.txt");
|
||||
sleep(1);
|
||||
|
||||
bool done=false;
|
||||
char line[128];
|
||||
ifstream fin("_nv.txt", ifstream::in);
|
||||
while (fin.good() && !done) {
|
||||
fin.getline(line, 128);
|
||||
if (strstr(line, "Tesla")) {
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
fin.close();
|
||||
gpuInfo = line;
|
||||
|
||||
system("rm _nv.txt");
|
||||
|
||||
return gpuInfo;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
/**
|
||||
* <p>Writes the fitted data- and theory-set in ascii format to disc.
|
||||
@ -688,22 +605,6 @@ int main(int argc, char *argv[])
|
||||
return status;
|
||||
}
|
||||
|
||||
// get CPU/GPU information
|
||||
UInt_t dksTag = msrHandler->GetDKSTag();
|
||||
TString hardwareInfo = TString("??");
|
||||
switch (dksTag) {
|
||||
case DKS_CPU_OPENMP:
|
||||
case DKS_CPU_OPENCL:
|
||||
hardwareInfo = musrfit_get_cpu_info();
|
||||
break;
|
||||
case DKS_GPU_CUDA:
|
||||
case DKS_GPU_OPENCL:
|
||||
hardwareInfo = musrfit_get_gpu_info();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// read all the necessary runs (raw data)
|
||||
PRunDataHandler *dataHandler;
|
||||
if (startupHandler)
|
||||
@ -754,7 +655,7 @@ int main(int argc, char *argv[])
|
||||
// do fitting
|
||||
PFitter *fitter = 0;
|
||||
if (success) {
|
||||
fitter = new PFitter(msrHandler, runListCollection, chisq_only, hardwareInfo);
|
||||
fitter = new PFitter(msrHandler, runListCollection, chisq_only);
|
||||
if (fitter->IsValid()) {
|
||||
fitter->DoFit();
|
||||
if (!fitter->IsScanOnly())
|
||||
@ -762,8 +663,6 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
cout << "debug> after fit ..." << endl;
|
||||
|
||||
// write log file
|
||||
if (success && !chisq_only) {
|
||||
if (!fitter->IsScanOnly()) {
|
||||
@ -784,11 +683,6 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
cout << "debug> ++++++++++++" << endl;
|
||||
cout << "debug> msrHandler->GetDKSTheoryString()='" << msrHandler->GetDKSTheoryString() << "'" << endl;
|
||||
cout << "debug> ++++++++++++" << endl;
|
||||
*/
|
||||
// check if dump is wanted
|
||||
if (success && !dump.IsNull()) {
|
||||
cout << endl << "will write dump file ..." << endl;
|
||||
|
@ -312,12 +312,12 @@ int main(int argc, char *argv[])
|
||||
startupHandler->GetMarkerList(),
|
||||
startupHandler->GetColorList(),
|
||||
graphicsOutput||asciiOutput,
|
||||
fourier, avg, startupHandler->GetStartupOptions()->useDKS);
|
||||
fourier, avg);
|
||||
else
|
||||
musrCanvas = new PMusrCanvas(i, msrHandler->GetMsrTitle()->Data(),
|
||||
10+i*100, 10+i*100, 800, 600,
|
||||
graphicsOutput||asciiOutput,
|
||||
fourier, avg, startupHandler->GetStartupOptions()->useDKS);
|
||||
fourier, avg);
|
||||
|
||||
if (!musrCanvas->IsValid()) {
|
||||
cerr << endl << ">> musrview **SEVERE ERROR** Couldn't invoke all necessary objects, will quit.";
|
||||
|
@ -1,97 +0,0 @@
|
||||
#---------------------------------------------------
|
||||
# get compilation and library flags from root-config
|
||||
|
||||
ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags)
|
||||
ROOTLIBS = $(shell $(ROOTSYS)/bin/root-config --libs)
|
||||
ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs)
|
||||
|
||||
#---------------------------------------------------
|
||||
# set compilation and library flags for DKS
|
||||
|
||||
DKS_CUDADIR = /usr/local/cuda-6.5/targets/x86_64-linux
|
||||
DKS_INCDIR = /home/l_suter_a/DKS/src
|
||||
DKS_CFLAGS = -DHAVE_DKS -DDKS_OPENCL -DDKS_CUDA -I${DKS_INCDIR} -I${DKS_CUDADIR}/include
|
||||
DKS_LIBDIR = /home/l_suter_a/DKS/build/src
|
||||
DKS_LIBS = -L${DKS_CUDADIR}/lib -lOpenCL -L${DKS_LIBDIR} -ldksshared
|
||||
|
||||
#---------------------------------------------------
|
||||
# set compilation and library flags for FFTW
|
||||
FFTW3_INCDIR = /usr/include
|
||||
FFTW3_LIBS = -L/usr/lib64 -lfftw3
|
||||
|
||||
#---------------------------------------------------
|
||||
# set compilation and library flags for PMusr
|
||||
|
||||
PMUSR_INCDIR = $(ROOTSYS)/include
|
||||
PMUSR_SRCDIR = $(HOME)/musrfit/src/classes
|
||||
PMUSR_LIBS = -L $(ROOTSYS)/lib -lPMusr
|
||||
|
||||
#---------------------------------------------------
|
||||
# depending on the architecture, choose the compiler,
|
||||
# linker, and the flags to use
|
||||
#
|
||||
|
||||
ARCH = $(shell $(ROOTSYS)/bin/root-config --arch)
|
||||
|
||||
ifeq ($(ARCH),linux)
|
||||
OS = LINUX
|
||||
endif
|
||||
ifeq ($(ARCH),linuxx8664gcc)
|
||||
OS = LINUX
|
||||
endif
|
||||
ifeq ($(ARCH),win32gcc)
|
||||
OS = WIN32GCC
|
||||
endif
|
||||
ifeq ($(ARCH),macosx)
|
||||
OS = DARWIN
|
||||
endif
|
||||
|
||||
# -- Linux
|
||||
ifeq ($(OS),LINUX)
|
||||
CXX = gcc
|
||||
CXXFLAGS = -g -O2 -Wall -fPIC
|
||||
INCLUDES = -I$(PMUSR_INCDIR) -I$(DKS_INCDIR)
|
||||
LD = g++
|
||||
LDFLAGS =
|
||||
INSTALLPATH = ./
|
||||
EXEC = dks_fourierTest
|
||||
SUFFIX =
|
||||
endif
|
||||
|
||||
# -- MacOSX/Darwin
|
||||
ifeq ($(OS),DARWIN)
|
||||
CXX = gcc
|
||||
CXXFLAGS = -O3 -Wall -fPIC
|
||||
INCLUDES = -I$(PMUSR_INCDIR) -I$(FFTW3_INCDIR) -I$(DKS_INCDIR)
|
||||
LD = g++
|
||||
LDFLAGS = -O
|
||||
INSTALLPATH = ./
|
||||
EXEC = dks_fourierTest
|
||||
SUFFIX =
|
||||
endif
|
||||
|
||||
# the output from the root-config script:
|
||||
CXXFLAGS += $(ROOTCFLAGS) $(DKS_CFLAGS)
|
||||
LDFLAGS +=
|
||||
|
||||
# the ROOT libraries (G = graphic)
|
||||
LIBS = $(ROOTLIBS) -lXMLParser $(FFTW3_LIBS) $(DKS_LIBS)
|
||||
GLIBS = $(ROOTGLIBS) -lXMLParser $(FFTW3_LIBS) $(DKS_LIBS)
|
||||
|
||||
# some definitions: headers, sources, objects,...
|
||||
FOURIER = PFourier
|
||||
|
||||
all: $(EXEC)
|
||||
|
||||
clean:
|
||||
rm *.o
|
||||
|
||||
$(EXEC): $(FOURIER).o $(EXEC).o
|
||||
@echo "---> Building $(EXEC) ..."
|
||||
/bin/rm -f $(SHLIB)
|
||||
$(LD) $(FOURIER).o $(EXEC).o -o $(EXEC) $(GLIBS)
|
||||
@echo "done"
|
||||
|
||||
$(FOURIER).o: $(PMUSR_SRCDIR)/$(FOURIER).cpp
|
||||
$(CXX) $(INCLUDES) $(CXXFLAGS) -c $<
|
||||
|
@ -1,176 +0,0 @@
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
#include "TH1F.h"
|
||||
#include "TFile.h"
|
||||
|
||||
#include "PMusr.h"
|
||||
#include "PFourier.h"
|
||||
|
||||
|
||||
//---------------------------------------------------
|
||||
double millitime()
|
||||
{
|
||||
struct timeval now;
|
||||
gettimeofday(&now, 0);
|
||||
|
||||
return ((double)now.tv_sec * 1.0e6 + (double)now.tv_usec)/1.0e3;
|
||||
}
|
||||
|
||||
//---------------------------------------------------
|
||||
void dks_fourierTest_syntax()
|
||||
{
|
||||
cout << endl << "usage: dks_fourierTest [useFFTW N L [dumpAll] | --help] ";
|
||||
cout << endl << " useFFTW : flag, if true -> FFTW, otherwise -> DKS";
|
||||
cout << endl << " N : number of histos";
|
||||
cout << endl << " L : histo length";
|
||||
cout << endl << " dumpAll : flag, if true writes the data into a ROOT dump file 'dks_FourierTest.root'";
|
||||
cout << endl << " if false, writes only the first and last data set.";
|
||||
cout << endl << " if not given, useFFTW=true, N=8, L=2^20=1048576, dumpAll=false.";
|
||||
cout << endl << " --help: this help";
|
||||
cout << endl << endl;
|
||||
}
|
||||
|
||||
//---------------------------------------------------
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
vector<TH1F*> data;
|
||||
vector<PFourier*> fourierData;
|
||||
vector<TH1F*> fourierPowerHistos;
|
||||
|
||||
int N=8, L=1048576;
|
||||
Bool_t useFFTW = true;
|
||||
Bool_t dumpAll = false;
|
||||
|
||||
switch (argc) {
|
||||
case 1:
|
||||
break;
|
||||
case 4:
|
||||
if (!strcmp(argv[1], "true") || !strcmp(argv[1], "1"))
|
||||
useFFTW = true;
|
||||
else if (!strcmp(argv[1], "false") || !strcmp(argv[1], "0"))
|
||||
useFFTW = false;
|
||||
else {
|
||||
dks_fourierTest_syntax();
|
||||
return 1;
|
||||
}
|
||||
N = strtol(argv[2], 0, 10);
|
||||
L = strtol(argv[3], 0, 10);
|
||||
break;
|
||||
case 5:
|
||||
if (!strcmp(argv[1], "true") || !strcmp(argv[1], "1"))
|
||||
useFFTW = true;
|
||||
else if (!strcmp(argv[1], "false") || !strcmp(argv[1], "0"))
|
||||
useFFTW = false;
|
||||
else {
|
||||
dks_fourierTest_syntax();
|
||||
return 1;
|
||||
}
|
||||
N = strtol(argv[2], 0, 10);
|
||||
L = strtol(argv[3], 0, 10);
|
||||
if (!strcmp(argv[4], "true") || !strcmp(argv[4], "1"))
|
||||
dumpAll = true;
|
||||
else if (!strcmp(argv[4], "false") || !strcmp(argv[4], "0"))
|
||||
dumpAll = false;
|
||||
else {
|
||||
dks_fourierTest_syntax();
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dks_fourierTest_syntax();
|
||||
return 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((N<=0) || (L<=0)) {
|
||||
dks_fourierTest_syntax();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// feed the histos
|
||||
TH1F *h;
|
||||
char str[128];
|
||||
double dt = 10.0 / (double)L;
|
||||
double dval = 0.0;
|
||||
for (unsigned int i=0; i<(unsigned int)N; i++) {
|
||||
snprintf(str, sizeof(str), "h%d", i);
|
||||
h = new TH1F(str, str, L+1, -dt/2, 10.0+dt/2);
|
||||
for (unsigned int j=0; j<(unsigned int)h->GetNbinsX(); j++) {
|
||||
dval = exp(-0.25*pow(dt*j,2.0))*cos(0.013554*5000.0*dt*j+6.2832/N*i);
|
||||
h->SetBinContent(j+1, dval);
|
||||
}
|
||||
data.push_back(h);
|
||||
}
|
||||
|
||||
cout << "debug> data.size()=" << data.size() << endl;
|
||||
|
||||
// setup FFT
|
||||
PFourier *fh;
|
||||
for (unsigned int i=0; i<data.size(); i++) {
|
||||
fh = new PFourier(data[i], FOURIER_UNIT_GAUSS, 0.0, 0.0, false, 0, useFFTW);
|
||||
fourierData.push_back(fh);
|
||||
}
|
||||
|
||||
cout << "debug> fourierData.size()=" << fourierData.size() << endl;
|
||||
|
||||
// do FFT
|
||||
double start = millitime();
|
||||
for (unsigned int i=0; i<fourierData.size(); i++) {
|
||||
fourierData[i]->Transform();
|
||||
}
|
||||
double end = millitime();
|
||||
cout << "info> overall computation time: " << (end-start)/1.0e3 << " (sec)." << endl << endl;
|
||||
// get FFT data
|
||||
TH1F *pf;
|
||||
unsigned int out=128;
|
||||
for (unsigned int i=0; i<fourierData.size(); i++) {
|
||||
pf = fourierData[i]->GetPowerFourier();
|
||||
fourierPowerHistos.push_back(pf);
|
||||
}
|
||||
|
||||
cout << "debug> fourierPowerHistos.size()=" << fourierPowerHistos.size() << endl;
|
||||
|
||||
// dump results
|
||||
for (unsigned int i=0; i<fourierPowerHistos.size(); i++) {
|
||||
out = (unsigned int)fourierPowerHistos[i]->GetNbinsX();
|
||||
cout << "debug> out=" << out << endl;
|
||||
if (out > 64)
|
||||
out = 64;
|
||||
cout << "debug> fourier " << i+1 << ": ";
|
||||
for (unsigned int j=1; j<=out; j++)
|
||||
cout << fourierPowerHistos[i]->GetBinContent(j) << ", ";
|
||||
cout << endl << "---" << endl;
|
||||
}
|
||||
TFile fout("dks_fourierTest.root", "recreate");
|
||||
if (dumpAll) {
|
||||
for (unsigned int i=0; i<fourierPowerHistos.size(); i++) {
|
||||
data[i]->Write();
|
||||
fourierPowerHistos[i]->Write();
|
||||
}
|
||||
} else {
|
||||
data[0]->Write();
|
||||
fourierPowerHistos[0]->Write();
|
||||
if (data.size() > 1) {
|
||||
data[data.size()-1]->Write();
|
||||
fourierPowerHistos[fourierPowerHistos.size()-1]->Write();
|
||||
}
|
||||
}
|
||||
fout.Close();
|
||||
|
||||
// clean up
|
||||
for (unsigned int i=0; i<data.size(); i++) {
|
||||
delete data[i];
|
||||
delete fourierData[i];
|
||||
delete fourierPowerHistos[i];
|
||||
}
|
||||
data.clear();
|
||||
fourierData.clear();
|
||||
fourierPowerHistos.clear();
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -29,7 +29,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -29,7 +29,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -29,7 +29,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -71,7 +71,7 @@ class PFunctionHandler
|
||||
};
|
||||
|
||||
// cint dictionary stuff --------------------------------------
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
@ -79,7 +79,7 @@ class PFunctionHandler
|
||||
|
||||
#pragma link C++ class PFunctionHandler+;
|
||||
|
||||
#endif // end __CLING__
|
||||
#endif // end __CINT__
|
||||
//-------------------------------------------------------------
|
||||
|
||||
#endif // _PFUNCTIONHANDLER_H_
|
||||
|
@ -29,7 +29,7 @@
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#ifdef __CLING__
|
||||
#ifdef __CINT__
|
||||
|
||||
#pragma link off all globals;
|
||||
#pragma link off all classes;
|
||||
|
Reference in New Issue
Block a user