Compare commits
52 Commits
Author | SHA1 | Date | |
---|---|---|---|
bb99482461 | |||
f0869935d1 | |||
0f95551200 | |||
b8ce741534 | |||
4b6654ca2a | |||
38d4ec1806 | |||
4231d26604 | |||
a28650f017 | |||
9a23c4f241 | |||
5f7f79e46d | |||
4a20d805dd | |||
10cfe3f863 | |||
0828d1b8d4 | |||
75785d2c0e | |||
e4b84b12df | |||
124a31386c | |||
ebdb0feb7f | |||
e67d92fc05 | |||
ead1674b13 | |||
fd22884ce8 | |||
20dd08fbef | |||
3e66760c26 | |||
d6bcdf52b8 | |||
30bd2b2876 | |||
9f8f89db6d | |||
458913ca31 | |||
5c3accc6ed | |||
6f8b0a2341 | |||
4febdb42b4 | |||
ae95a5dc1c | |||
c3f531e0d5 | |||
0b61130e28 | |||
d1cd63dcb0 | |||
7838901fbe | |||
00b012d0dd | |||
d2984d8923 | |||
58889614e5 | |||
c9fc373862 | |||
ebefcf7af9 | |||
64d3b6192b | |||
6bcb26f9d5 | |||
6b865efd3b | |||
caccfb175a | |||
1845b5c176 | |||
8821112927 | |||
833171c712 | |||
61749b91c4 | |||
3d92e2eefb | |||
b71dce9291 | |||
1aa4ce0a99 | |||
425ed02e22 | |||
a36abfc461 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# ignore all files generated from an in-repo build
|
||||
build/
|
@ -1,7 +1,7 @@
|
||||
# - musrfit
|
||||
cmake_minimum_required(VERSION 3.17)
|
||||
|
||||
project(musrfit VERSION 1.9.3 LANGUAGES C CXX)
|
||||
project(musrfit VERSION 1.9.8 LANGUAGES C CXX)
|
||||
|
||||
#--- musrfit specific options -------------------------------------------------
|
||||
option(nexus "build optional NeXus support. Needed for ISIS" OFF)
|
||||
@ -201,7 +201,9 @@ endif (qt_based_tools)
|
||||
#--- if NeXus check also for HDF4, HDF5, and MXML -----------------------------
|
||||
if (nexus)
|
||||
find_package(HDF5 COMPONENTS CXX REQUIRED)
|
||||
if (HAVE_HDF4)
|
||||
find_package(HDF4 REQUIRED)
|
||||
endif (HAVE_HDF4)
|
||||
find_package(NEXUS REQUIRED)
|
||||
add_definitions(-DPNEXUS_ENABLED)
|
||||
endif (nexus)
|
||||
@ -249,6 +251,8 @@ set(CMAKE_INSTALL_RPATH "${rpath}")
|
||||
add_subdirectory(src)
|
||||
|
||||
#--- write summary of the installation
|
||||
cmake_host_system_information(RESULT PROCESSOR QUERY PROCESSOR_DESCRIPTION)
|
||||
|
||||
message("")
|
||||
message("|-----------------------------------------------------------------------|")
|
||||
message("| |")
|
||||
@ -257,7 +261,8 @@ message("|
|
||||
message("|-----------------------------------------------------------------------|")
|
||||
message("")
|
||||
message(" System: ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR} - ${CMAKE_HOST_SYSTEM_VERSION}")
|
||||
message(" -------")
|
||||
message(" Processor: ${PROCESSOR} (${CMAKE_SYSTEM_PROCESSOR})")
|
||||
message(" ----------")
|
||||
message("")
|
||||
message(" musrfit Version: ${musrfit_VERSION}")
|
||||
message(" ----------------")
|
||||
@ -283,7 +288,11 @@ endif (OpenMP_FOUND)
|
||||
|
||||
if (nexus)
|
||||
message("")
|
||||
if (HAVE_HDF4)
|
||||
message(" HDF4 found in ${HDF4_INCLUDE_DIRS}")
|
||||
else (HAVE_HDF4)
|
||||
message(" HDF4 not present.")
|
||||
endif (HAVE_HDF4)
|
||||
message(" HDF5 found in ${HDF5_INCLUDE_DIRS}, Version: ${HDF5_VERSION}")
|
||||
message(" NeXus found in ${NEXUS_INCLUDE_DIR}, Version: ${NEXUS_VERSION_STRING}")
|
||||
endif (nexus)
|
||||
|
26
ChangeLog
26
ChangeLog
@ -12,6 +12,32 @@ or
|
||||
|
||||
https://bitbucket.org/muonspin/musrfit/commits/all
|
||||
|
||||
Release of V1.9.8, 2025/03/24
|
||||
=============================
|
||||
|
||||
add a user interface option to export data from a msr-file view (single- or multiple files).
|
||||
|
||||
Release of V1.9.7, 2025/01/18
|
||||
=============================
|
||||
|
||||
allow spaces in RUN block path-filename
|
||||
|
||||
Release of V1.9.6, 2024/12/02
|
||||
=============================
|
||||
|
||||
added jump to block feature in musredit.
|
||||
|
||||
|
||||
Release of V1.9.5, 2024/06/24
|
||||
=============================
|
||||
|
||||
yaml export of ALL fit-parameters, as initiated by R.M.L. McFadden.
|
||||
|
||||
Release of V1.9.4, 2024/06/08
|
||||
=============================
|
||||
|
||||
enable OpenMP for macOS.
|
||||
|
||||
Release of V1.9.3, 2024/04/19
|
||||
=============================
|
||||
|
||||
|
@ -9,7 +9,7 @@ set(MUSRFIT_VERSION "@MUSRFIT_VERSION@")
|
||||
# Get the current working branch
|
||||
execute_process(
|
||||
COMMAND git rev-parse --abbrev-ref HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${SRC_DIR}
|
||||
OUTPUT_VARIABLE GIT_BRANCH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
@ -17,7 +17,7 @@ execute_process(
|
||||
# Get the latest abbreviated commit hash of the working branch
|
||||
execute_process(
|
||||
COMMAND git log -1 --pretty="%h, %ci"
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
WORKING_DIRECTORY ${SRC_DIR}
|
||||
OUTPUT_VARIABLE GIT_CURRENT_SHA1
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
BIN
doc/.DS_Store
vendored
BIN
doc/.DS_Store
vendored
Binary file not shown.
BIN
doc/examples/.DS_Store
vendored
BIN
doc/examples/.DS_Store
vendored
Binary file not shown.
BIN
doc/examples/ASlibs/.DS_Store
vendored
BIN
doc/examples/ASlibs/.DS_Store
vendored
Binary file not shown.
BIN
doc/examples/DepthProfiles/.DS_Store
vendored
BIN
doc/examples/DepthProfiles/.DS_Store
vendored
Binary file not shown.
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2021 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 28c8d31b3d0d7429fcebb7bd0074bdd3
|
||||
config: 1c72e3ac8764a6fbfdf66c0cdf797d3d
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
@ -1,6 +1,6 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '1.9.3',
|
||||
VERSION: '1.9.5',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Acknowledgements — musrfit 1.9.3 documentation</title>
|
||||
<title>Acknowledgements — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -201,7 +201,7 @@ extremely competent way to deal with his projects as well as to deal with the ch
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -223,7 +223,7 @@ extremely competent way to deal with his projects as well as to deal with the ch
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>any2many - a Universal μSR-file-format converter — musrfit 1.9.3 documentation</title>
|
||||
<title>any2many - a Universal μSR-file-format converter — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -191,7 +191,7 @@ For a detailed description see <a class="reference internal" href="user-manual.h
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -213,7 +213,7 @@ For a detailed description see <a class="reference internal" href="user-manual.h
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Bugtracking — musrfit 1.9.3 documentation</title>
|
||||
<title>Bugtracking — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -189,7 +189,7 @@ or send an e-mail to A. Suter at PSI.</p>
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -211,7 +211,7 @@ or send an e-mail to A. Suter at PSI.</p>
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>How to Cite musrfit? — musrfit 1.9.3 documentation</title>
|
||||
<title>How to Cite musrfit? — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -225,7 +225,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Short description and references to the supported file-formats — musrfit 1.9.3 documentation</title>
|
||||
<title>Short description and references to the supported file-formats — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -503,7 +503,7 @@ Between detectors, there will be an empty line.</p>
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -525,7 +525,7 @@ Between detectors, there will be an empty line.</p>
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Index — musrfit 1.9.3 documentation</title>
|
||||
<title>Index — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -753,7 +753,7 @@
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -775,7 +775,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Welcome to the musrfit documentation! — musrfit 1.9.3 documentation</title>
|
||||
<title>Welcome to the musrfit documentation! — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -285,7 +285,7 @@
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -307,7 +307,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>msr2data - A Program for Automatically Processing Multiple musrfit msr Files — musrfit 1.9.3 documentation</title>
|
||||
<title>msr2data - A Program for Automatically Processing Multiple musrfit msr Files — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -518,7 +518,7 @@ fit serves as template for the second and so on. The template field stays empty
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -540,7 +540,7 @@ fit serves as template for the second and so on. The template field stays empty
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>mupp - μSR Parameter Plotter — musrfit 1.9.3 documentation</title>
|
||||
<title>mupp - μSR Parameter Plotter — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -408,7 +408,7 @@ SCRIPT COMMANDS:
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -430,7 +430,7 @@ SCRIPT COMMANDS:
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>MusrRoot - an Extensible Open File Format for μSR — musrfit 1.9.3 documentation</title>
|
||||
<title>MusrRoot - an Extensible Open File Format for μSR — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -1007,7 +1007,7 @@ the entry has been added. The last token, <code class="docutils literal notransl
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -1029,7 +1029,7 @@ the entry has been added. The last token, <code class="docutils literal notransl
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>musredit: the GUI Based Interface to musrfit — musrfit 1.9.3 documentation</title>
|
||||
<title>musredit: the GUI Based Interface to musrfit — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -634,7 +634,7 @@ the corresponding fit parameter value, except the phases where the step will be
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -656,7 +656,7 @@ the corresponding fit parameter value, except the phases where the step will be
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Search — musrfit 1.9.3 documentation</title>
|
||||
<title>Search — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -185,7 +185,7 @@
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -207,7 +207,7 @@
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
File diff suppressed because one or more lines are too long
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Setting up musrfit / DKS: High Speed Fitting with GPU’s — musrfit 1.9.3 documentation</title>
|
||||
<title>Setting up musrfit / DKS: High Speed Fitting with GPU’s — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -408,7 +408,7 @@ The only thing you need <code class="docutils literal notranslate"><span class="
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -430,7 +430,7 @@ The only thing you need <code class="docutils literal notranslate"><span class="
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Setting up musrfit on Different Platforms — musrfit 1.9.3 documentation</title>
|
||||
<title>Setting up musrfit on Different Platforms — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -264,7 +264,7 @@ Currently the <code class="docutils literal notranslate"><span class="pre">MXML<
|
||||
<p>If <em>optionally</em> the editor and graphical user interface <code class="docutils literal notranslate"><span class="pre">musrgui</span></code> / <code class="docutils literal notranslate"><span class="pre">musredit</span></code> is going to be installed there is one further requirement:</p>
|
||||
<dl class="docutils" id="index-11">
|
||||
<dt><strong>Qt</strong></dt>
|
||||
<dd>A cross-platform application and user interface framework. <em>Required version ≥ 4.6</em> (musredit) (see <a class="reference external" href="http://qt.io/">Qt</a>). Currently the <strong>Qt5</strong> is the main development part. Qt6 just kicked in, but is not widely available yet.</dd>
|
||||
<dd>A cross-platform application and user interface framework. <em>Required version ≥ 4.6</em> (musredit) (see <a class="reference external" href="http://qt.io/">Qt</a>). Currently the <strong>Qt5</strong> is still supported since some older distributions are not yet supporting Qt6. <strong>Qt6</strong> is the <em>main</em> development part. Should be available on all new major distributions.</dd>
|
||||
</dl>
|
||||
<p>Each of the following sections focusing on the installation of <code class="docutils literal notranslate"><span class="pre">musrfit</span></code> on the different operating systems will also give a brief introduction on the installation of the requirements before the actual musrfit installation is described.</p>
|
||||
</div>
|
||||
@ -273,9 +273,8 @@ Currently the <code class="docutils literal notranslate"><span class="pre">MXML<
|
||||
<p>Before the installation procedure will be described, please note the following restrictions:</p>
|
||||
<dl class="docutils">
|
||||
<dt><strong>GNU/Linux</strong></dt>
|
||||
<dd>No serious problems are currently known. Tested distributions: <a class="reference external" href="https://www.redhat.com/de/technologies/linux-platforms/enterprise-linux">RHEL</a>, <a class="reference external" href="https://getfedora.org/">Fedora</a>,
|
||||
<a class="reference external" href="https://www.debian.org/">Debian</a>, <a class="reference external" href="https://www.ubuntu.com/">Ubuntu</a>, <a class="reference external" href="https://linuxmint.com/">Mint</a>, <a class="reference external" href="https://en.opensuse.org/Main_Page">openSUSE</a>,
|
||||
and <cite>manjaro <https://de.manjaro.org/></cite>.</dd>
|
||||
<dd>No serious problems are currently known. Tested distributions: <a class="reference external" href="https://www.redhat.com/de/technologies/linux-platforms/enterprise-linux">RHEL</a> (also <a class="reference external" href="https://almalinux.org/">Alma</a>, <a class="reference external" href="https://rockylinux.org/">Rocky</a>), <a class="reference external" href="https://getfedora.org/">Fedora</a>,
|
||||
<a class="reference external" href="https://www.debian.org/">Debian</a>, <a class="reference external" href="https://www.ubuntu.com/">Ubuntu</a>, <a class="reference external" href="https://linuxmint.com/">Mint</a>, <a class="reference external" href="https://en.opensuse.org/Main_Page">openSUSE</a>, and <a class="reference external" href="https://de.manjaro.org/">Manjaro</a>.</dd>
|
||||
<dt><strong>Mac OS X/macOS</strong></dt>
|
||||
<dd>No serious problems are currently known for macOS ≥ 10.6. <code class="docutils literal notranslate"><span class="pre">musrfit</span></code> is ARM M1 ready.</dd>
|
||||
<dt><strong>MS Windows</strong></dt>
|
||||
@ -307,11 +306,11 @@ from the shell will do the trick (never type the ‘$’ it is the shell prompt
|
||||
<p>For <strong>Qt5/Qt6</strong>:</p>
|
||||
<blockquote>
|
||||
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ yum install epel-release
|
||||
$ yum install git cmake boost-devel gsl-devel fftw-devel libxml2-devel qt5-qtbase-devel qt5-qtsvg-devel
|
||||
$ yum install git cmake boost-devel gsl-devel fftw-devel libxml2-devel qt6-qtbase-devel qt6-qtsvg-devel
|
||||
</pre></div>
|
||||
</div>
|
||||
</div></blockquote>
|
||||
<p>If using <code class="docutils literal notranslate"><span class="pre">Qt6</span></code> replace <code class="docutils literal notranslate"><span class="pre">qt5-qtbase-devel</span> <span class="pre">qt5-qtsvg-devel</span></code> by <code class="docutils literal notranslate"><span class="pre">qt6-qtbase-devel</span> <span class="pre">qt6-qtsvg-devel</span></code></p>
|
||||
<p>If using <code class="docutils literal notranslate"><span class="pre">Qt5</span></code>, since e.g. Qt6 is not available, replace <code class="docutils literal notranslate"><span class="pre">qt6-qtbase-devel</span> <span class="pre">qt6-qtsvg-devel</span></code> by <code class="docutils literal notranslate"><span class="pre">qt5-qtbase-devel</span> <span class="pre">qt5-qtsvg-devel</span></code></p>
|
||||
<p>When dealing with a distribution that uses the dpkg/apt package manager like <a class="reference external" href="https://www.debian.org/">Debian</a> or <a class="reference external" href="https://www.ubuntu.com/">Ubuntu</a>
|
||||
the installation would look like:</p>
|
||||
<p>For <strong>Qt4</strong> (deprecated):</p>
|
||||
@ -322,11 +321,11 @@ the installation would look like:</p>
|
||||
</div></blockquote>
|
||||
<p>For <strong>Qt5/Qt6</strong>:</p>
|
||||
<blockquote>
|
||||
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ apt-get install git cmake libboost-dev libboost-filesystem-dev libboost-system-dev libgsl-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev
|
||||
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ apt-get install git cmake libboost-dev libboost-filesystem-dev libboost-system-dev libgsl-dev libfftw3-dev libxml2-dev qt6-base-dev qt6-svg-dev
|
||||
</pre></div>
|
||||
</div>
|
||||
</div></blockquote>
|
||||
<p>If using <code class="docutils literal notranslate"><span class="pre">Qt6</span></code> replace <code class="docutils literal notranslate"><span class="pre">qt5-default</span> <span class="pre">qtbase5-dev</span> <span class="pre">libqt5svg5-dev</span></code> by <code class="docutils literal notranslate"><span class="pre">qt6-default</span> <span class="pre">qtbase6-dev</span> <span class="pre">libqt6svg6-dev</span></code></p>
|
||||
<p>If using <code class="docutils literal notranslate"><span class="pre">Qt5</span></code>, since e.g. Qt6 is not available, replace <code class="docutils literal notranslate"><span class="pre">qt6-base-dev</span> <span class="pre">qt6-svg-dev</span></code> by <code class="docutils literal notranslate"><span class="pre">qtbase5-dev</span> <span class="pre">libqt5svg5-dev</span></code></p>
|
||||
<p>Everyone should know best himself which is the way to install distribution software on the chosen distribution.</p>
|
||||
<p>In case the distribution does not include the required software it has to be compiled from the source files. This means either to download
|
||||
the source code from the corresponding website, or to clone the git repo. If you need to follow this line, please check the install details of the corresponding package.</p>
|
||||
@ -366,8 +365,8 @@ $ mkdir build
|
||||
$ <span class="nb">cd</span> build
|
||||
$ cmake -DENABLE_HDF5<span class="o">=</span><span class="m">1</span> -DENABLE_HDF4<span class="o">=</span><span class="m">1</span> -DENABLE_MXML<span class="o">=</span><span class="m">0</span> ../code
|
||||
$ cmake --build ./ --clean-first
|
||||
$ <span class="c1"># make install needs either to be carried out as root or sudo depending on your linux flavour.</span>
|
||||
$ sudo make install
|
||||
$ <span class="c1"># install needs either to be carried out as root or sudo depending on your linux flavour.</span>
|
||||
$ sudo cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -412,7 +411,7 @@ $ <span class="c1"># calling it with the option -j <number>, where <num
|
||||
$ <span class="c1"># e.g. cmake --build ./ --clean-first -- -j8</span>
|
||||
$ cmake --build ./ --clean-first
|
||||
$ <span class="c1"># as a last step of the ROOT build process we need to install it</span>
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>What is still missing is that the system should be told where to find the <code class="docutils literal notranslate"><span class="pre">ROOT</span></code> installation, therefore the following is suggested:</p>
|
||||
@ -471,7 +470,7 @@ $ git pull
|
||||
$ <span class="nb">cd</span> build
|
||||
$ xargs rm < install_manifest.txt
|
||||
$ cmake --build ./ --clean-first
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>As an alternative (if git is not available), the source code can also be downloaded from the following web-page: <a class="reference external" href="https://bitbucket.org/muonspin/musrfit/downloads">musrfit at bitbucket</a></p>
|
||||
@ -511,7 +510,7 @@ $ <span class="nb">cd</span> build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX<span class="o">=</span><span class="nv">$ROOTSYS</span> -Dnexus<span class="o">=</span><span class="m">1</span>
|
||||
<span class="c1"># below it is assumed that multiple cores are present, hence the -j8 option</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
$ /sbin/ldconfig <span class="c1"># (as superuser)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
@ -657,7 +656,7 @@ add a new line pointing to your local copy, <em>e.g.</em></p>
|
||||
</ol>
|
||||
<p>Then the MacPorts system should be set up and can be used to install additional software.</p>
|
||||
<p>The installation of the software mentioned above is then done in the terminal:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ sudo port -v install pkgconfig autoconf automake libtool cmake fftw-3 fftw-3-single gsl boost libxml2 qt6 qt6-qtsvg
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ sudo port -v install pkgconfig autoconf automake libtool cmake libomp fftw-3 fftw-3-single gsl boost libxml2 qt6 qt6-qtsvg
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>With <code class="docutils literal notranslate"><span class="pre">Qt6</span></code>, <code class="docutils literal notranslate"><span class="pre">musredit</span></code> will be installed. If it happens that you used <code class="docutils literal notranslate"><span class="pre">musrgui</span></code> in the past,
|
||||
@ -668,6 +667,7 @@ please change over to <code class="docutils literal notranslate"><span class="pr
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ sudo port -v install hdf4 hdf5
|
||||
</pre></div>
|
||||
</div>
|
||||
<p><em>hdf4</em> is likely not available anymore.</p>
|
||||
<p><strong>Only NeXus Version ≥ 4.4 is support!</strong></p>
|
||||
<p>To get things compiled do:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="c1"># get and install NeXus</span>
|
||||
@ -678,9 +678,12 @@ $ <span class="c1"># next we will build NeXus out-of-source</span>
|
||||
$ <span class="nb">cd</span> nexus
|
||||
$ mkdir build
|
||||
$ <span class="nb">cd</span> build
|
||||
$ <span class="c1"># in case hdf4 is present</span>
|
||||
$ cmake -DENABLE_HDF5<span class="o">=</span><span class="m">1</span> -DENABLE_HDF4<span class="o">=</span><span class="m">1</span> -DENABLE_MXML<span class="o">=</span><span class="m">0</span> ../code
|
||||
$ make
|
||||
$ sudo make install
|
||||
$ <span class="c1"># in case hdf4 is **not** present</span>
|
||||
$ cmake -DENABLE_HDF5<span class="o">=</span><span class="m">1</span> -DENABLE_HDF4<span class="o">=</span><span class="m">0</span> -DENABLE_MXML<span class="o">=</span><span class="m">0</span> ../code
|
||||
$ cmake --build ./
|
||||
$ sudo cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -728,7 +731,7 @@ $ <span class="c1"># make with the option -j <number>, where <number>
|
||||
$ <span class="c1"># e.g. make -j8</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ <span class="c1"># make will take quite a while</span>
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For further details see <a class="reference external" href="https://root.cern.ch/building-root">Installing ROOT from Source</a>.</p>
|
||||
@ -816,10 +819,11 @@ install it.</dd>
|
||||
</dl>
|
||||
<p>After installing the <code class="docutils literal notranslate"><span class="pre">Xcode</span></code> tools go to the <a class="reference external" href="https://brew.sh/">Homebrew</a> page, and follow the installation instructions there.</p>
|
||||
<p>The essential packages (called formulae) which you will need to install are</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="n">boost</span> <span class="n">gsl</span> <span class="n">fftw</span> <span class="n">qt6</span> <span class="n">root</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cmake</span> <span class="n">libomp</span> <span class="n">boost</span> <span class="n">gsl</span> <span class="n">fftw</span> <span class="n">qt6</span> <span class="p">(</span><span class="n">root</span><span class="p">)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For example to install <code class="docutils literal notranslate"><span class="pre">cmake</span></code> this is done the following way:</p>
|
||||
<p>The preferred installation of root would be from source (see below), hence it is set here in parenthesis.
|
||||
For example to install <code class="docutils literal notranslate"><span class="pre">cmake</span></code> this is done the following way:</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ brew install cmake
|
||||
</pre></div>
|
||||
</div>
|
||||
@ -842,7 +846,7 @@ $ mkdir build
|
||||
$ <span class="nb">cd</span> build
|
||||
$ cmake ../code -DENABLE_HDF5<span class="o">=</span><span class="m">1</span> -DENABLE_HDF4<span class="o">=</span><span class="m">0</span> -DENABLE_MXML<span class="o">=</span><span class="m">0</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ sudo make install
|
||||
$ sudo cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -880,7 +884,7 @@ $ <span class="c1"># make with the option -j <number>, where <number>
|
||||
$ <span class="c1"># e.g. make -j8</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ <span class="c1"># make will take quite a while</span>
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>For further details see <a class="reference external" href="https://root.cern.ch/building-root">Installing ROOT from Source</a>.</p>
|
||||
@ -993,7 +997,16 @@ If the value is set to <code class="docutils literal notranslate"><span class="p
|
||||
<dd>Will check if <code class="docutils literal notranslate"><span class="pre">OpenMP</span></code> support is possible, and if yes use it. The default is enabled</dd>
|
||||
</dl>
|
||||
<p>Normally it should not be necessary to make use of any of the options except for specifying the installation path with <code class="docutils literal notranslate"><span class="pre">-DCMAKE_INSTALL_PREFIX</span></code>.
|
||||
<code class="docutils literal notranslate"><span class="pre">musrfit</span></code> build with <code class="docutils literal notranslate"><span class="pre">cmake</span></code> takes the <code class="docutils literal notranslate"><span class="pre">out-of-source</span></code> approach. Therefore a typical configuration / make / install process including
|
||||
<code class="docutils literal notranslate"><span class="pre">musrfit</span></code> build with <code class="docutils literal notranslate"><span class="pre">cmake</span></code> takes the <code class="docutils literal notranslate"><span class="pre">out-of-source</span></code> approach.</p>
|
||||
<p>In order to have <strong>OpenMP</strong> available, which allows parallel processing of the fitter, you will need to guide <code class="docutils literal notranslate"><span class="pre">cmake</span></code> to where it can find it. For a <code class="docutils literal notranslate"><span class="pre">Homebrew</span></code> installation, this would be</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">export</span> <span class="nv">OpenMP_ROOT</span><span class="o">=</span><span class="k">$(</span>brew --prefix<span class="k">)</span>/opt/libomp
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>and for a <code class="docutils literal notranslate"><span class="pre">MacPorts</span></code> installation, something like</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">export</span> <span class="nv">OpenMP_ROOT</span><span class="o">=</span>/opt/local/include/libomp
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>Therefore a typical configuration / make / install process including
|
||||
<code class="docutils literal notranslate"><span class="pre">NeXus</span></code> support would look like</p>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> <span class="nv">$HOME</span>/Apps/musrfit
|
||||
$ mkdir build
|
||||
@ -1001,7 +1014,24 @@ $ <span class="nb">cd</span> build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX<span class="o">=</span><span class="nv">$ROOTSYS</span> -Dnexus<span class="o">=</span><span class="m">1</span>
|
||||
<span class="c1"># below it is assumed that multiple cores are present, hence the -j8 option</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ make install
|
||||
$ cmake --install ./
|
||||
$ /sbin/ldconfig <span class="c1"># (as superuser)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">If you use <code class="docutils literal notranslate"><span class="pre">MacPorts</span></code> you will likely need to guide cmake where to find <code class="docutils literal notranslate"><span class="pre">qt6</span></code>.
|
||||
You will need to provide the path to the necessary <code class="docutils literal notranslate"><span class="pre">cmake</span></code> files. This is done
|
||||
from the command line via the switch <code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code>.
|
||||
The configuration, build, and install process might look like this:</p>
|
||||
</div>
|
||||
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$ <span class="nb">cd</span> <span class="nv">$HOME</span>/Apps/musrfit
|
||||
$ mkdir build
|
||||
$ <span class="nb">cd</span> build
|
||||
$ cmake ../ -DCMAKE_INSTALL_PREFIX<span class="o">=</span><span class="nv">$ROOTSYS</span> -Dnexus<span class="o">=</span><span class="m">1</span> -DCMAKE_PREFIX_PATH<span class="o">=</span>/opt/local/libexec/qt6/lib/cmake
|
||||
<span class="c1"># below it is assumed that multiple cores are present, hence the -j8 option</span>
|
||||
$ cmake --build ./ --clean-first -- -j8
|
||||
$ cmake --install ./
|
||||
$ /sbin/ldconfig <span class="c1"># (as superuser)</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
@ -1095,7 +1125,7 @@ $ musrview test-histo-ROOT-NPP.msr
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -1117,7 +1147,7 @@ $ musrview test-histo-ROOT-NPP.msr
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Tutorial for musrfit — musrfit 1.9.3 documentation</title>
|
||||
<title>Tutorial for musrfit — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -527,7 +527,7 @@ For a complete description please refer to the manuals of <a class="reference in
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -549,7 +549,7 @@ For a complete description please refer to the manuals of <a class="reference in
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Documentation of user libs (user functions) — musrfit 1.9.3 documentation</title>
|
||||
<title>Documentation of user libs (user functions) — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -875,7 +875,7 @@ K(m)&=\int_0^{\pi/2}\frac{\mathrm d\varphi}{\sqrt{1-m^2\sin^2{\varphi}}},\en
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -897,7 +897,7 @@ K(m)&=\int_0^{\pi/2}\frac{\mathrm d\varphi}{\sqrt{1-m^2\sin^2{\varphi}}},\en
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>User manual — musrfit 1.9.3 documentation</title>
|
||||
<title>User manual — musrfit 1.9.5 documentation</title>
|
||||
|
||||
|
||||
|
||||
@ -257,6 +257,26 @@
|
||||
<dt><strong>-u, –use-no-of-threads <number></strong></dt>
|
||||
<dd><number>: number of threads to be used (OpenMP). Needs to be <= max. number of cores.
|
||||
If OpenMP is enable, the maximal number of cores is used, if it is not limited by this option.</dd>
|
||||
<dt><strong>-r, –reset</strong></dt>
|
||||
<dd><p class="first">reset startup <code class="docutils literal notranslate"><span class="pre">musrfit_startup.xml</span></code>, i.e. rewrite a default, and quit.
|
||||
The order of which <code class="docutils literal notranslate"><span class="pre">musrfit_startup.xml</span></code> is reset is:</p>
|
||||
<blockquote class="last">
|
||||
<div><ol class="arabic simple">
|
||||
<li>if present in the current dir.</li>
|
||||
<li>if present under <code class="docutils literal notranslate"><span class="pre">$HOME/.musrfit/</span></code></li>
|
||||
<li>if present under <code class="docutils literal notranslate"><span class="pre">$MUSRFITPATH/</span></code></li>
|
||||
<li>if present under <code class="docutils literal notranslate"><span class="pre">$ROOTSYS/</span></code></li>
|
||||
</ol>
|
||||
</div></blockquote>
|
||||
</dd>
|
||||
<dt><strong>-y, –yaml</strong></dt>
|
||||
<dd><p class="first">write fit results (<code class="docutils literal notranslate"><span class="pre">MINUIT2.OUTPUT</span></code>) into a yaml-file. Output <code class="docutils literal notranslate"><span class="pre"><msr-file>.yaml</span></code>.</p>
|
||||
<p class="last">The motivation for storing parameter information in this (hierarchical) manner is to provide easy access to details that are cumbersome
|
||||
to store/access in tabular formats (e.g., <code class="docutils literal notranslate"><span class="pre">CSV</span></code> or <code class="docutils literal notranslate"><span class="pre">TSV</span></code>). This is especially true for the parameter covariance/correlation matrices.
|
||||
The advantage is evident when processing the contents of the <code class="docutils literal notranslate"><span class="pre">.yaml</span></code> output, which can be easily accomplished using one of the
|
||||
YAML parsers implemented in your favourite programming language (see, e.g., <a class="reference external" href="https://yaml.org/">https://yaml.org/</a> for a list of options). As an example,
|
||||
this can be achieved in <code class="docutils literal notranslate"><span class="pre">Python</span></code> using the <code class="docutils literal notranslate"><span class="pre">PyYAML</span></code>.</p>
|
||||
</dd>
|
||||
<dt><strong>–dump <type></strong></dt>
|
||||
<dd>is writing a data file with the fit data and the theory; <type> can be ascii (data in columns) or root (data in ROOT histograms).</dd>
|
||||
<dt><strong>–timeout <timeout_tag></strong></dt>
|
||||
@ -2874,7 +2894,7 @@ The syntax here is attribute driven</li>
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2023, Andreas Suter.
|
||||
Last updated on Apr 23, 2024.
|
||||
Last updated on Jun 24, 2024.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
@ -2896,7 +2916,7 @@ The syntax here is attribute driven</li>
|
||||
<script type="text/javascript">
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'./',
|
||||
VERSION:'1.9.3',
|
||||
VERSION:'1.9.5',
|
||||
LANGUAGE:'None',
|
||||
COLLAPSE_INDEX:false,
|
||||
FILE_SUFFIX:'.html',
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -39,9 +39,10 @@
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <limits>
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include <boost/variant/variant.hpp>
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "Minuit2/FunctionMinimum.h"
|
||||
@ -54,6 +55,7 @@
|
||||
#include "Minuit2/MnPrint.h"
|
||||
#include "Minuit2/MnScan.h"
|
||||
#include "Minuit2/MnSimplex.h"
|
||||
#include "Minuit2/MnStrategy.h"
|
||||
#include "Minuit2/MnUserParameterState.h"
|
||||
#include "Minuit2/MinosError.h"
|
||||
|
||||
@ -264,8 +266,8 @@ UInt_t PSectorChisq::GetNDF(UInt_t idx)
|
||||
* \param runListCollection pointer of the run list collection (pre-processed historgrams)
|
||||
* \param chisq_only flag: true=calculate chisq only (no fitting)
|
||||
*/
|
||||
PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only) :
|
||||
fChisqOnly(chisq_only), fRunInfo(runInfo), fRunListCollection(runListCollection)
|
||||
PFitter::PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only, Bool_t yaml_out) :
|
||||
fChisqOnly(chisq_only), fYamlOut(yaml_out), fRunInfo(runInfo), fRunListCollection(runListCollection)
|
||||
{
|
||||
// initialize variables
|
||||
fIsScanOnly = true;
|
||||
@ -1762,7 +1764,7 @@ Bool_t PFitter::ExecuteMigrad()
|
||||
|
||||
// create migrad object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnMigrad migrad((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMigrad migrad((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -1838,7 +1840,7 @@ Bool_t PFitter::ExecuteMinimize()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnMinimize minimize((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnMinimize minimize((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is MINUIT2 Default maxfcn
|
||||
@ -2473,6 +2475,122 @@ Bool_t PFitter::ExecuteSave(Bool_t firstSave)
|
||||
ccorr->Write("ccorr", TObject::kOverwrite, sizeof(ccorr));
|
||||
hcorr->Write("hcorr", TObject::kOverwrite, sizeof(hcorr));
|
||||
ff.Close();
|
||||
|
||||
if (fYamlOut) {
|
||||
// write the fit results to an easy-to-read/parse yaml file
|
||||
// note: the block names follow those used by Python library iminuit
|
||||
// https://github.com/scikit-hep/iminuit
|
||||
|
||||
// dynamically name the yaml output file
|
||||
// https://stackoverflow.com/a/25389052
|
||||
std::string yaml_filename(fRunInfo->GetFileName().Data());
|
||||
const std::string msr_ext(".msr");
|
||||
yaml_filename.replace(yaml_filename.find(msr_ext), msr_ext.length(),
|
||||
".yaml");
|
||||
|
||||
// define yaml's 2-space indentation
|
||||
const std::string yaml_indent(" ");
|
||||
|
||||
// open the yaml file for writing
|
||||
std::ofstream yaml_file(yaml_filename);
|
||||
|
||||
// number formatting of the output
|
||||
yaml_file << std::scientific << std::setprecision(16);
|
||||
|
||||
// write the parameter values
|
||||
yaml_file << "values:\n";
|
||||
for (unsigned int i = 0; i < fParams.size(); ++i) {
|
||||
yaml_file << yaml_indent << fParams[i].fName.Data() << ": "
|
||||
<< fParams[i].fValue << "\n";
|
||||
}
|
||||
|
||||
// write the parabolic errors
|
||||
yaml_file << "errors:\n";
|
||||
for (unsigned int i = 0; i < fParams.size(); ++i) {
|
||||
yaml_file << yaml_indent << fParams[i].fName.Data() << ": "
|
||||
<< fMnUserParams.Error(i) << "\n";
|
||||
}
|
||||
|
||||
// write the minos errors
|
||||
yaml_file << "mnerrors:\n";
|
||||
for (unsigned int i = 0; i < fParams.size(); ++i) {
|
||||
// use boost's implementation of a variant, which can be streamed by
|
||||
// default - see: https://stackoverflow.com/q/47168477
|
||||
boost::variant<double, std::string> positive_error, negative_error;
|
||||
if (fParams[i].fPosErrorPresent) {
|
||||
positive_error = fParams[i].fPosError;
|
||||
negative_error = fParams[i].fStep;
|
||||
} else {
|
||||
positive_error = "null";
|
||||
negative_error = "null";
|
||||
}
|
||||
|
||||
yaml_file << yaml_indent << fParams[i].fName.Data() << ":\n";
|
||||
yaml_file << yaml_indent << yaml_indent
|
||||
<< "positive: " << positive_error << "\n";
|
||||
yaml_file << yaml_indent << yaml_indent
|
||||
<< "negative: " << negative_error << "\n";
|
||||
}
|
||||
|
||||
// write the parameter limits
|
||||
yaml_file << "limits:\n";
|
||||
for (unsigned int i = 0; i < fParams.size(); ++i) {
|
||||
// use boost's implementation of a variant, which can be streamed by
|
||||
// default - see: https://stackoverflow.com/q/47168477
|
||||
boost::variant<double, std::string> upper_limit, lower_limit;
|
||||
if (fParams[i].fLowerBoundaryPresent) {
|
||||
lower_limit = fParams[i].fLowerBoundary;
|
||||
} else {
|
||||
lower_limit = "null";
|
||||
}
|
||||
if (fParams[i].fUpperBoundaryPresent) {
|
||||
upper_limit = fParams[i].fUpperBoundary;
|
||||
} else {
|
||||
upper_limit = "null";
|
||||
}
|
||||
|
||||
yaml_file << yaml_indent << fParams[i].fName.Data() << ":\n";
|
||||
yaml_file << yaml_indent << yaml_indent << "lower: " << lower_limit
|
||||
<< "\n";
|
||||
yaml_file << yaml_indent << yaml_indent << "upper: " << upper_limit
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
// write if the parameter is fixed
|
||||
yaml_file << "fixed:\n";
|
||||
for (unsigned int i = 0; i < fParams.size(); ++i) {
|
||||
std::string is_fixed = fParams[i].fStep == 0.0 ? "true" : "false";
|
||||
yaml_file << yaml_indent << fParams[i].fName.Data() << ": " << is_fixed
|
||||
<< "\n";
|
||||
}
|
||||
|
||||
// write the covariance matrix (omitting fixed parameters)
|
||||
yaml_file << "covariance:\n";
|
||||
for (unsigned int i = 0; i < cov.Nrow(); ++i) {
|
||||
yaml_file << yaml_indent << mnState.Name(parNo[i]) << ":\n";
|
||||
for (unsigned int j = 0; j < cov.Nrow(); ++j) {
|
||||
yaml_file << yaml_indent << yaml_indent << mnState.Name(parNo[j])
|
||||
<< ": " << cov(i, j) << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
// write the correlation matrix (omitting fixed parameters)
|
||||
yaml_file << "correlation:\n";
|
||||
for (unsigned int i = 0; i < cov.Nrow(); ++i) {
|
||||
yaml_file << yaml_indent << mnState.Name(parNo[i]) << ":\n";
|
||||
for (unsigned int j = 0; j < cov.Nrow(); ++j) {
|
||||
double correlation =
|
||||
i == j ? 1.0
|
||||
: cov(i, j) / (fMnUserParams.Error(parNo[i]) *
|
||||
fMnUserParams.Error(parNo[j]));
|
||||
yaml_file << yaml_indent << yaml_indent << mnState.Name(parNo[j])
|
||||
<< ": " << correlation << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
// close the yaml file
|
||||
yaml_file.close();
|
||||
}
|
||||
}
|
||||
parNo.clear(); // clean up
|
||||
} else {
|
||||
@ -2539,7 +2657,7 @@ Bool_t PFitter::ExecuteSimplex()
|
||||
|
||||
// create minimizer object
|
||||
// strategy is by default = 'default'
|
||||
ROOT::Minuit2::MnSimplex simplex((*fFitterFcn), fMnUserParams, fStrategy);
|
||||
ROOT::Minuit2::MnSimplex simplex((*fFitterFcn), fMnUserParams, ROOT::Minuit2::MnStrategy{fStrategy});
|
||||
|
||||
// minimize
|
||||
// maxfcn is 10*MINUIT2 Default maxfcn
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -188,13 +188,28 @@ void PFunction::FillFuncEvalTree(iter_t const& i, PFuncTreeNode &node)
|
||||
node.fID = PFunctionGrammar::constGammaMuID; // keep the ID
|
||||
node.fDvalue = GAMMA_BAR_MUON; // keep the value
|
||||
} else if (i->value.id() == PFunctionGrammar::constFieldID) { // handle constant field from meta data
|
||||
str = std::string(i->value.begin(), i->value.end()); // get string
|
||||
boost::algorithm::trim(str);
|
||||
if (strstr(str.c_str(), "-"))
|
||||
node.fSign = true;
|
||||
node.fID = PFunctionGrammar::constFieldID; // keep the ID
|
||||
} else if (i->value.id() == PFunctionGrammar::constEnergyID) { // handle constant energy from meta data
|
||||
str = std::string(i->value.begin(), i->value.end()); // get string
|
||||
boost::algorithm::trim(str);
|
||||
if (strstr(str.c_str(), "-"))
|
||||
node.fSign = true;
|
||||
node.fID = PFunctionGrammar::constEnergyID; // keep the ID
|
||||
} else if (i->value.id() == PFunctionGrammar::constTempID) { // handle constant temperature from meta data
|
||||
str = std::string(i->value.begin(), i->value.end()); // get string
|
||||
boost::algorithm::trim(str);
|
||||
status = sscanf(str.c_str(), "T%d", &ivalue); // convert string to temperature index
|
||||
std::string pstr;
|
||||
if (strstr(str.c_str(), "-")) {
|
||||
node.fSign = true;
|
||||
pstr = "-T%d";
|
||||
} else {
|
||||
pstr = "T%d";
|
||||
}
|
||||
status = sscanf(str.c_str(), pstr.c_str(), &ivalue); // convert string to temperature index
|
||||
node.fID = PFunctionGrammar::constTempID; // keep the ID
|
||||
node.fIvalue = ivalue; // Temp idx
|
||||
} else if (i->value.id() == PFunctionGrammar::parameterID) { // handle parameter number
|
||||
@ -432,21 +447,30 @@ Double_t PFunction::EvalNode(PFuncTreeNode &node)
|
||||
} else if (node.fID == PFunctionGrammar::constGammaMuID) {
|
||||
return node.fDvalue;
|
||||
} else if (node.fID == PFunctionGrammar::constFieldID) {
|
||||
return fMetaData.fField;
|
||||
Double_t dval = fMetaData.fField;
|
||||
if (node.fSign)
|
||||
dval *= -1.0;
|
||||
return dval;
|
||||
} else if (node.fID == PFunctionGrammar::constEnergyID) {
|
||||
if (fMetaData.fEnergy == PMUSR_UNDEFINED) {
|
||||
std::cerr << std::endl << "**PANIC ERROR**: PFunction::EvalNode: energy meta data not available." << std::endl;
|
||||
std::cerr << std::endl;
|
||||
exit(0);
|
||||
}
|
||||
return fMetaData.fEnergy;
|
||||
Double_t dval = fMetaData.fEnergy;
|
||||
if (node.fSign)
|
||||
dval *= -1.0;
|
||||
return dval;
|
||||
} else if (node.fID == PFunctionGrammar::constTempID) {
|
||||
if (node.fIvalue >= fMetaData.fTemp.size()) {
|
||||
std::cerr << std::endl << "**PANIC ERROR**: PFunction::EvalNode: Temp idx=" << node.fIvalue << " requested which is >= #Temp(s)=" << fMetaData.fTemp.size() << " available." << std::endl;
|
||||
std::cerr << std::endl;
|
||||
exit(0);
|
||||
}
|
||||
return fMetaData.fTemp[node.fIvalue];
|
||||
Double_t dval = fMetaData.fTemp[node.fIvalue];
|
||||
if (node.fSign)
|
||||
dval *= -1.0;
|
||||
return dval;
|
||||
} else if (node.fID == PFunctionGrammar::parameterID) {
|
||||
Double_t dval;
|
||||
if (node.fSign)
|
||||
@ -610,9 +634,9 @@ void PFunction::EvalTreeForStringExpression(iter_t const& i, bool funcFlag)
|
||||
} else if (i->value.id() == PFunctionGrammar::constGammaMuID) {
|
||||
fFuncString += "gamma_mu";
|
||||
} else if (i->value.id() == PFunctionGrammar::constFieldID) {
|
||||
fFuncString += "B";
|
||||
fFuncString += boost::algorithm::trim_copy(std::string(i->value.begin(), i->value.end())).c_str();
|
||||
} else if (i->value.id() == PFunctionGrammar::constEnergyID) {
|
||||
fFuncString += "EN";
|
||||
fFuncString += boost::algorithm::trim_copy(std::string(i->value.begin(), i->value.end())).c_str();
|
||||
} else if (i->value.id() == PFunctionGrammar::constTempID) {
|
||||
assert(i->children.size() == 0);
|
||||
fFuncString += boost::algorithm::trim_copy(std::string(i->value.begin(), i->value.end())).c_str();
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Bastian M. Wojek / Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Bastian M. Wojek / Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -140,9 +140,12 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
strLine.str(line);
|
||||
strLine >> firstOnLine;
|
||||
if (!to_lower_copy(firstOnLine).compare("run")) {
|
||||
// for path-names with spaces
|
||||
std::string::size_type loc{0};
|
||||
while (!strLine.eof()) {
|
||||
firstOnLine.clear();
|
||||
strLine >> firstOnLine;
|
||||
std::string::size_type loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
if ( loc != std::string::npos ) {
|
||||
while ( loc > 0 ) {
|
||||
if (isdigit(firstOnLine.at(--loc))) {
|
||||
@ -154,7 +157,8 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
in->close();
|
||||
fRunVectorIter = fRunVector.begin(); // set back the runlist-iterator which might have changed during the search for the correct file
|
||||
return 0;
|
||||
} else {
|
||||
}
|
||||
}
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** The first processed run file number does not match the \"file index\"!";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** The number of digits to be used for formatting the run numbers cannot be determined!";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Please check the first msr-file that should be processed;";
|
||||
@ -164,7 +168,6 @@ int PMsr2Data::DetermineRunNumberDigits(unsigned int runNo, bool normalMode) con
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Please check the first msr-file that should be processed;";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** this is either some template or the first file from the run list.";
|
||||
std::cerr << std::endl << ">> msr2data: **ERROR** Obviously it contains no RUN block...";
|
||||
@ -558,11 +561,23 @@ bool PMsr2Data::PrepareNewInputFile(unsigned int tempRun, bool calledFromGlobalM
|
||||
strLine.str(line);
|
||||
strLine >> firstOnLine;
|
||||
if (!to_lower_copy(firstOnLine).compare("run")) {
|
||||
strLine >> firstOnLine;
|
||||
std::string::size_type loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
// needed for path-fln with spaces
|
||||
std::string::size_type loc;
|
||||
std::string sstr{""};
|
||||
firstOnLine.clear();
|
||||
while (!strLine.eof()) {
|
||||
strLine >> sstr;
|
||||
if (firstOnLine.empty())
|
||||
firstOnLine = sstr;
|
||||
else
|
||||
firstOnLine += " " + sstr;
|
||||
loc = firstOnLine.rfind(tempRunNumber.str());
|
||||
if ( loc != std::string::npos ) {
|
||||
firstOnLine.replace(loc, fRunNumberDigits, newRunNumber.str());
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (strLine.eof()) {
|
||||
std::cerr << std::endl << ">> msr2data: **WARNING** The template run file number does not match the \"file index\"";
|
||||
std::cerr << std::endl << ">> msr2data: **WARNING** Unexpected things will happen... (for sure)";
|
||||
std::cerr << std::endl;
|
||||
@ -694,9 +709,16 @@ bool PMsr2Data::PrepareGlobalInputFile(unsigned int tempRun, const std::string &
|
||||
msrParamList->at(i).fIsGlobal = true;
|
||||
++fNumGlobalParam;
|
||||
}
|
||||
// std::cout << "debug> " << msrParamList->at(i).fNo << ": " << msrParamList->at(i).fName.Data() << " is global: " << msrParamList->at(i).fIsGlobal << std::endl;
|
||||
}
|
||||
|
||||
// there should be at least one run specific parameter, otherwise the GLOBAL option doesn't make sense
|
||||
if (fNumSpecParam == 0) {
|
||||
std::cout << ">> msr2data: **ERROR** found NO run specific parameter, hence the GLOBAL option doesn't make sense." << std::endl;
|
||||
std::cout << ">> msr2data: Could it be, that your run specific labling is < 4 digits? Please check your msr-Input-File." << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// check if parameters have been sorted correctly from the beginning
|
||||
bool wasSorted(true);
|
||||
for (unsigned int i(0); i < fNumGlobalParam; ++i) {
|
||||
@ -1793,6 +1815,9 @@ int PMsr2Data::WriteOutput(const std::string &outfile, const std::vector<unsigne
|
||||
rawRunData = fDataHandler->GetRunData((*msrRunList)[0].GetRunName()->Data());
|
||||
}
|
||||
|
||||
if (rawRunData == nullptr)
|
||||
return -1;
|
||||
|
||||
switch (rawRunData->GetNoOfTemperatures()) {
|
||||
case 1:
|
||||
dataParamNames.push_back("dataT");
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -3245,6 +3245,9 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines)
|
||||
// remove potential comment at the end of lines
|
||||
str = iter->fLine;
|
||||
Ssiz_t idx = str.Index("#");
|
||||
if (idx != -1)
|
||||
str.Remove(idx);
|
||||
idx = str.Index("(");
|
||||
if (idx != -1)
|
||||
str.Remove(idx);
|
||||
|
||||
@ -3274,23 +3277,29 @@ Bool_t PMsrHandler::HandleRunEntry(PMsrLines &lines)
|
||||
}
|
||||
|
||||
// get run name, beamline, institute, and file-format
|
||||
// the path/filename could potentially contain spaces! Hence the run name needs to be reconstructed from the parsing
|
||||
if (tokens->GetEntries() < 5) {
|
||||
error = true;
|
||||
} else {
|
||||
// run name
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(1));
|
||||
str = ostr->GetString();
|
||||
str = TString("");
|
||||
for (Int_t i=1; i<tokens->GetEntries()-3; i++) {
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(i));
|
||||
str += ostr->GetString();
|
||||
if (i<tokens->GetEntries()-4)
|
||||
str += TString(" ");
|
||||
}
|
||||
param.SetRunName(str);
|
||||
// beamline
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(2));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-3));
|
||||
str = ostr->GetString();
|
||||
param.SetBeamline(str);
|
||||
// institute
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(3));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-2));
|
||||
str = ostr->GetString();
|
||||
param.SetInstitute(str);
|
||||
// data file format
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(4));
|
||||
ostr = dynamic_cast<TObjString*>(tokens->At(tokens->GetEntries()-1));
|
||||
str = ostr->GetString();
|
||||
param.SetFileFormat(str);
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -260,6 +260,7 @@ PRawRunDataSet::PRawRunDataSet()
|
||||
*/
|
||||
void PRawRunDataSet::Clear()
|
||||
{
|
||||
fTitle = TString("n/a");
|
||||
fName = TString("n/a");
|
||||
fHistoNo = -1;
|
||||
fTimeZeroBin = 0.0;
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -937,8 +937,16 @@ void PMusrCanvas::HandleCmdKey(Int_t event, Int_t x, Int_t y, TObject *selected)
|
||||
if (event != kKeyPress)
|
||||
return;
|
||||
|
||||
// this is a workaround which should prevent that the key event is executed if
|
||||
// a text/latex is written into the canvas.
|
||||
if (selected) {
|
||||
if (!strcmp(selected->GetTitle(), "dataTheoryPad"))
|
||||
return;
|
||||
}
|
||||
|
||||
if (fBatchMode) {
|
||||
if (fStartWithAvg) { // this is needed to get the averaging in the batch mode
|
||||
fAveragedView = fStartWithAvg;
|
||||
HandleAverage();
|
||||
PlotAverage(true);
|
||||
}
|
||||
@ -1928,9 +1936,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_DATA:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, diff, errDiff" << std::endl;
|
||||
fout << "x, diff, errDiff" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()-1; i++) {
|
||||
fout << "x" << i << " , diff" << i << ", errDiff" << i << ", ";
|
||||
}
|
||||
@ -1940,9 +1947,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_REAL:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, F_diffRe" << std::endl;
|
||||
fout << "x, F_diffRe" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()-1; i++) {
|
||||
fout << "freq" << i << ", F_diffRe" << i << ", ";
|
||||
}
|
||||
@ -1952,9 +1958,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_IMAG:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, F_diffIm" << std::endl;
|
||||
fout << "x, F_diffIm" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()-1; i++) {
|
||||
fout << "freq" << i << ", F_diffIm" << i << ", ";
|
||||
}
|
||||
@ -1964,9 +1969,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_REAL_AND_IMAG:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, F_diffRe, F_diffIm" << std::endl;
|
||||
fout << "x, F_diffRe, F_diffIm" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()/2; i++) {
|
||||
fout << "freq" << i << ", F_diffRe" << i << ", ";
|
||||
}
|
||||
@ -1979,9 +1983,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_PWR:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, F_diffPwr" << std::endl;
|
||||
fout << "x, F_diffPwr" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()-1; i++) {
|
||||
fout << "freq" << i << ", F_diffPwr" << i << ", ";
|
||||
}
|
||||
@ -1991,9 +1994,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_PHASE:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% x, F_diffPhase" << std::endl;
|
||||
fout << "x, F_diffPhase" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size()-1; i++) {
|
||||
fout << "freq" << i << ", F_diffPhase" << i << ", ";
|
||||
}
|
||||
@ -2042,7 +2044,6 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% xData, data, errData, xTheory, theory" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
if (i % 2 == 0)
|
||||
fout << "xData" << i/2 << ", data" << i/2 << ", errData" << i/2 << ", ";
|
||||
@ -2057,9 +2058,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_REAL:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% freq, F_Re, freqTheo, F_theoRe" << std::endl;
|
||||
fout << "freq, F_Re, freqTheo, F_theoRe" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
if (i % 2 == 0)
|
||||
fout << "freq" << i/2 << ", F_Re" << i/2 << ", ";
|
||||
@ -2074,7 +2074,7 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_IMAG:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% freq, F_Im, freqTheo, F_theoIm" << std::endl;
|
||||
fout << "freq, F_Im, freqTheo, F_theoIm" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
@ -2091,9 +2091,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_REAL_AND_IMAG:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% freq, F_Re, freqTheo, F_theoRe, freq, F_Im, freqTheo, F_theoIm" << std::endl;
|
||||
fout << "freq, F_Re, freqTheo, F_theoRe, freq, F_Im, freqTheo, F_theoIm" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
if (i % 4 == 0)
|
||||
fout << "freq" << i/4 << ", F_Re" << i/4 << ", ";
|
||||
@ -2112,9 +2111,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_PWR:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% freq, F_Pwr, freqTheo, F_theoPwr" << std::endl;
|
||||
fout << "freq, F_Pwr, freqTheo, F_theoPwr" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
if (i % 2 == 0)
|
||||
fout << "freq" << i/2 << ", F_Pwr" << i/2 << ", ";
|
||||
@ -2129,9 +2127,8 @@ void PMusrCanvas::ExportData(const Char_t *fileName)
|
||||
case PV_FOURIER_PHASE:
|
||||
if (fAveragedView) {
|
||||
fout << "% from averaged view" << std::endl;
|
||||
fout << "% freq, F_Phase, freqTheo, F_theoPhase" << std::endl;
|
||||
fout << "freq, F_Phase, freqTheo, F_theoPhase" << std::endl;
|
||||
} else {
|
||||
fout << "% ";
|
||||
for (UInt_t i=0; i<dumpVector.size(); i++) {
|
||||
if (i % 2 == 0)
|
||||
fout << "freq" << i/2 << ", F_Phase" << i/2 << ", ";
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -9,7 +9,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2018-2024 by Zaher Salman *
|
||||
* Copyright (C) 2018-2025 by Zaher Salman *
|
||||
* zaher.salman@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -1891,6 +1891,10 @@ Bool_t PRunDataHandler::ReadRootFile()
|
||||
}
|
||||
}
|
||||
|
||||
header->Get("RunInfo/Sample Orientation", str, ok);
|
||||
if (ok)
|
||||
runData.SetOrientation(str);
|
||||
|
||||
// check further for LEM specific stuff in RunInfo
|
||||
|
||||
header->Get("RunInfo/Moderator HV", prop, ok);
|
||||
@ -2051,11 +2055,15 @@ Bool_t PRunDataHandler::ReadRootFile()
|
||||
}
|
||||
|
||||
dataSet.Clear();
|
||||
dataSet.SetName(histo->GetTitle());
|
||||
dataSet.SetTitle(histo->GetTitle());
|
||||
dataSet.SetHistoNo(redGreenOffsets[i]+j+1);
|
||||
|
||||
// get detector info
|
||||
path.Form("DetectorInfo/Detector%03d/", redGreenOffsets[i]+j+1);
|
||||
pathName = path + "Name";
|
||||
header->Get(pathName, str, ok);
|
||||
if (ok)
|
||||
dataSet.SetName(str);
|
||||
pathName = path + "Time Zero Bin";
|
||||
header->Get(pathName, dval, ok);
|
||||
if (ok)
|
||||
@ -3697,6 +3705,8 @@ Bool_t PRunDataHandler::ReadAsciiFile()
|
||||
{
|
||||
Bool_t success = true;
|
||||
|
||||
std::cout << "as35> in ReadAsciiFile() ..." << std::endl;
|
||||
|
||||
// open file
|
||||
std::ifstream f;
|
||||
|
||||
@ -3848,7 +3858,14 @@ Bool_t PRunDataHandler::ReadAsciiFile()
|
||||
break;
|
||||
}
|
||||
ey = ostr->GetString().Atof();
|
||||
if (ey == 0) {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadAsciiFile **WARNING** line no " << lineNo << ": error y = 0 which doesn't make sense. Will set it to 1.0. Please check!!";
|
||||
std::cerr << std::endl;
|
||||
ey = 1.0;
|
||||
}
|
||||
} else {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadAsciiFile **WARNING** line no " << lineNo << ": error y = 0 which doesn't make sense. Will set it to 1.0. Please check!!";
|
||||
std::cerr << std::endl;
|
||||
ey = 1.0;
|
||||
}
|
||||
|
||||
@ -4357,7 +4374,7 @@ Bool_t PRunDataHandler::ReadDatFile()
|
||||
// open file
|
||||
std::ifstream f;
|
||||
|
||||
// open db-file
|
||||
// open dat-file
|
||||
f.open(fRunPathName.Data(), std::ifstream::in);
|
||||
if (!f.is_open()) {
|
||||
std::cerr << std::endl << ">> PRunDataHandler::ReadDatFile **ERROR** Couldn't open data file (" << fRunPathName.Data() << ") for reading, sorry ...";
|
||||
@ -4456,6 +4473,12 @@ Bool_t PRunDataHandler::ReadDatFile()
|
||||
idx++;
|
||||
} else { // error value
|
||||
if (isData[i-1] == 1) { // Err or PosErr hence keep it
|
||||
if (dval == 0.0) {
|
||||
std::cout << std::endl << ">> PRunDataHandler::ReadDatFile **WARNING** found Err value = 0. Doesn't make sense! Will set it to 1. Please check!";
|
||||
std::cerr << std::endl << ">> in line: " << lineNo;
|
||||
std::cerr << std::endl;
|
||||
dval = 1.0;
|
||||
}
|
||||
runData.fDataNonMusr.AppendSubErrData(idx-1, dval);
|
||||
}
|
||||
}
|
||||
@ -4470,11 +4493,11 @@ Bool_t PRunDataHandler::ReadDatFile()
|
||||
|
||||
f.close();
|
||||
|
||||
// got through all the data sets and if there is NO error vector set it to '0.0'
|
||||
// got through all the data sets and if there is NO error vector set it to '1.0'
|
||||
for (UInt_t i=0; i<noOfDataSets; i++) {
|
||||
if (runData.fDataNonMusr.GetErrData()->at(i).size() == 0) {
|
||||
for (UInt_t j=0; j<runData.fDataNonMusr.GetData()->at(i).size(); j++) {
|
||||
runData.fDataNonMusr.AppendSubErrData(i, 0.0);
|
||||
runData.fDataNonMusr.AppendSubErrData(i, 1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5563,6 +5586,30 @@ Bool_t PRunDataHandler::WritePsiBinFile(TString fln)
|
||||
Int_t ival = 0;
|
||||
PRawRunDataSet *dataSet;
|
||||
UInt_t size = fData[0].GetNoOfHistos();
|
||||
// collect histo names in order to see if they are still unique after cropping to 4 char.
|
||||
PStringVector hName, hNCrop;
|
||||
TString sCrop;
|
||||
for (UInt_t i=0; i<size; i++) {
|
||||
dataSet = fData[0].GetDataSet(i, false); // i.e. the false means, that i is the index and NOT the histo number
|
||||
// detector name
|
||||
str = dataSet->GetName();
|
||||
hName.push_back(str);
|
||||
sCrop = str;
|
||||
sCrop.Remove(4);
|
||||
hNCrop.push_back(sCrop);
|
||||
}
|
||||
// check cropped for uniqueness
|
||||
ival = 1;
|
||||
for (UInt_t i=0; i<size; i++) {
|
||||
for (UInt_t j=i+1; j<size; j++) {
|
||||
if (hNCrop[i] == hNCrop[j]) {
|
||||
std::string nn = std::to_string(ival);
|
||||
hNCrop[j][3] = nn[0];
|
||||
ival++;
|
||||
}
|
||||
}
|
||||
}
|
||||
// handle rest of the detectors
|
||||
for (UInt_t i=0; i<size; i++) {
|
||||
dataSet = fData[0].GetDataSet(i, false); // i.e. the false means, that i is the index and NOT the histo number
|
||||
if (dataSet == nullptr) { // something is really wrong
|
||||
@ -5572,10 +5619,7 @@ Bool_t PRunDataHandler::WritePsiBinFile(TString fln)
|
||||
}
|
||||
|
||||
// detector name
|
||||
str = dataSet->GetName();
|
||||
if (!str.CompareTo("n/a"))
|
||||
str.Form("Detector%3d", i+1);
|
||||
psibin.PutNameHisto(str.Data(), i);
|
||||
psibin.PutNameHisto(hNCrop[i].Data(), i);
|
||||
// time zero bin
|
||||
ival = static_cast<Int_t>(dataSet->GetTimeZeroBin()/fAny2ManyInfo->rebin);
|
||||
psibin.PutT0Int(i, ival);
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
@ -765,7 +765,7 @@ Bool_t PStartupHandler::WriteDefaultStartupFile(bool reset_startup_file)
|
||||
fout << " <!-- Color as RGB coded string -->" << std::endl;
|
||||
fout << " <color>0,0,0</color> <!-- kBlack -->" << std::endl;
|
||||
fout << " <color>255,0,0</color> <!-- kRed -->" << std::endl;
|
||||
fout << " <color>0,255,0</color> <!-- kGreen -->" << std::endl;
|
||||
fout << " <color>0,153,0</color> <!-- kGreen+2 -->" << std::endl;
|
||||
fout << " <color>0,0,255</color> <!-- kBlue -->" << std::endl;
|
||||
fout << " <color>255,0,255</color> <!-- kMagenta -->" << std::endl;
|
||||
fout << " <color>0,255,255</color> <!-- kCyan -->" << std::endl;
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/BMWtools/BMWStartupHandler.cpp
vendored
2
src/external/BMWtools/BMWStartupHandler.cpp
vendored
@ -11,7 +11,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter, Bastian M. Wojek *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter, Bastian M. Wojek *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/BMWtools/BMWStartupHandler.h
vendored
2
src/external/BMWtools/BMWStartupHandler.h
vendored
@ -11,7 +11,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter, Bastian M. Wojek *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter, Bastian M. Wojek *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/MagProximity/PMagProximity.h
vendored
2
src/external/MagProximity/PMagProximity.h
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -10,7 +10,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2011-2024 by Andreas Suter *
|
||||
* Copyright (C) 2011-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/MusrRoot/TMusrRunHeader.cpp
vendored
2
src/external/MusrRoot/TMusrRunHeader.cpp
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/MusrRoot/TMusrRunHeader.h
vendored
2
src/external/MusrRoot/TMusrRunHeader.h
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/Nonlocal/PNL_PippardFitter.cpp
vendored
2
src/external/Nonlocal/PNL_PippardFitter.cpp
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/Nonlocal/PNL_PippardFitter.h
vendored
2
src/external/Nonlocal/PNL_PippardFitter.h
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/Nonlocal/PNL_StartupHandler.cpp
vendored
2
src/external/Nonlocal/PNL_StartupHandler.cpp
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/Nonlocal/PNL_StartupHandler.h
vendored
2
src/external/Nonlocal/PNL_StartupHandler.h
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2009-2024 by Andreas Suter *
|
||||
* Copyright (C) 2009-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -13,7 +13,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2008-2024 by Bastian M. Wojek, Andreas Suter *
|
||||
* Copyright (C) 2008-2025 by Bastian M. Wojek, Andreas Suter *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/libGbGLF/PGbGLF.cpp
vendored
2
src/external/libGbGLF/PGbGLF.cpp
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/libGbGLF/PGbGLF.h
vendored
2
src/external/libGbGLF/PGbGLF.h
vendored
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2007-2024 by Andreas Suter *
|
||||
* Copyright (C) 2007-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
2
src/external/libGbGLF/PGbGLFLinkDef.h
vendored
2
src/external/libGbGLF/PGbGLFLinkDef.h
vendored
@ -7,7 +7,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2016-2024 by Andreas Suter *
|
||||
* Copyright (C) 2016-2025 by Andreas Suter *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -8,7 +8,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2013-2024 by Andreas Suter *
|
||||
* Copyright (C) 2013-2025 by Andreas Suter *
|
||||
* andreas.suter@psi.ch *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
10
src/external/libZFRelaxation/CMakeLists.txt
vendored
10
src/external/libZFRelaxation/CMakeLists.txt
vendored
@ -53,14 +53,10 @@ target_include_directories(
|
||||
)
|
||||
|
||||
#--- add library dependencies -------------------------------------------------
|
||||
if (OpenMP_FOUND)
|
||||
target_compile_options(ZFRelaxation PUBLIC ${OpenMP_CXX_FLAGS})
|
||||
endif (OpenMP_FOUND)
|
||||
|
||||
set(gomp "")
|
||||
if (OpenMP_FOUND AND (${CMAKE_HOST_SYSTEM_NAME} STREQUAL Linux))
|
||||
set(gomp gomp)
|
||||
endif (OpenMP_FOUND AND (${CMAKE_HOST_SYSTEM_NAME} STREQUAL Linux))
|
||||
if (OpenMP_FOUND)
|
||||
set(gomp OpenMP::OpenMP_CXX)
|
||||
endif (OpenMP_FOUND)
|
||||
target_link_libraries(ZFRelaxation
|
||||
${gomp} FFTW3::FFTW3 ${ROOT_LIBRARIES} PUserFcnBase cuba BMWtools
|
||||
)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user