Compare commits

..

372 Commits

Author SHA1 Message Date
suter_a f2ab8dbeb9 add missing path to CMakeLists.txt. 2026-06-06 17:52:59 +02:00
suter_a 017be1fc9c musrFT: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:59:58 +02:00
suter_a 41301bd988 PRunDataHandler: replace tokenizer TObjArray/TObjString with PStringUtils
Convert all TString::Tokenize() call sites to PStringUtils::Split. The
persisted RunSummary TObjArray (read from the MusrRoot file via
FindObjectAny and iterated with TObjArrayIter) and the run-title TObjString
returned by TLemRunHeader::GetRunTitle() remain ROOT types, since they come
from external interfaces / on-disk format, not from tokenization.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:54:46 +02:00
suter_a 6cb69a78a7 PRunSingleHistoRRF: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:32:08 +02:00
suter_a 5dbd3c74f1 PRunSingleHisto: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:32:08 +02:00
suter_a 6a93932f90 PRunMuMinus: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:32:08 +02:00
suter_a 5939db2722 PRunAsymmetryRRF: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:26:00 +02:00
suter_a 850fb6bbc6 PRunAsymmetry: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:26:00 +02:00
suter_a f3abe77e14 PRunAsymmetryBNMR: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:23:11 +02:00
suter_a df58b81997 PRunBase: drop unused TObjArray/TObjString includes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:20:42 +02:00
suter_a 82f668c140 PTheory: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 16:17:05 +02:00
suter_a 5bbcb37370 PMusrCanvas: replace TObjArray/TObjString with PStringUtils
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 15:45:24 +02:00
suter_a 66aa847b58 PFitter: replace TObjArray/TObjString with PStringUtils
Replace ROOT's TString::Tokenize() + TObjArray/TObjString token
handling with the dependency-free PStringUtils::Split() across all
command/theory parsing in PFitter (GetPhaseParams, GetParFromFun,
CheckCommands and the Execute* helpers). Split() mirrors Tokenize()
semantics (delimiter-set, skips empty tokens), so token counts and
indices are unchanged. Each token is still copied into a TString,
so the downstream Atoi/Atof/IsFloat/IsDigit/Contains/CompareTo logic
stays as-is.

Using a std::vector<std::string> removes the manual TObjArray
cleanup and incidentally fixes three pre-existing leaks: the
tokens array in ExecuteFitRange was never freed, and the early
return paths in ExecutePrintLevel and the SECTOR check in
CheckCommands skipped the cleanup.

Build of libPMusr and musrfit is clean; full ctest suite passes
(85/85).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 15:38:15 +02:00
suter_a 76070f2098 msr2msr: replace TObjArray/TObjString with PStringUtils
Replace ROOT's TString::Tokenize() + TObjArray/TObjString token
handling with the dependency-free PStringUtils::Split() across
msr2msr_run, msr2msr_param and msr2msr_theory. Split() mirrors
Tokenize() semantics (skips empty tokens), so token counts and
indices are unchanged.

Using a std::vector<std::string> removes the manual TObjArray
cleanup and incidentally fixes a pre-existing leak in
msr2msr_theory, which tokenized in every branch but never deleted
the TObjArray.

Since msr2msr links only against ROOT (not PMusr, where
PStringUtils lives) and PStringUtils is pure C++17, compile
classes/PStringUtils.cpp directly into the msr2msr executable
rather than pulling in the whole PMusr library.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 15:16:50 +02:00
suter_a e7af0a781e libCuba: guard memcpy in SobolIni against negative length
GCC's -Wstringop-overflow flagged the memcpy in SobolIni() with a bound
of (size_t)(-4): on the (in practice unreachable) path where the Sobol
generator polynomial 'powers' is 0, the bit-count loop leaves inibits at
its initial -1, so inibits*sizeof underflows. The generator-polynomial
table always has a non-zero first column, so this never happens at run
time, but the compiler cannot prove it.

Guard the copy with 'if (inibits > 0)', which silences the false-positive
warning and hardens the edge case without changing behaviour for valid
input.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 15:02:17 +02:00
suter_a 8cdbb24929 PRun*: use reduction(+:mllh) instead of deprecated reduction(-:mllh)
OpenMP 5.2 deprecates the '-' reduction operator (-Wdeprecated-openmp)
because it is functionally identical to '+': the private reduction copy
is initialised to 0 and partial results are combined by addition in both
cases. All affected loops accumulate with 'mllh += ...', so switching to
reduction(+:mllh) is results-identical and silences the warning.

Fixes the pragma in PRunMuMinus.cpp and the two in PRunSingleHisto.cpp,
and corrects the now-inaccurate "for subtraction" doc comment.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:50:12 +02:00
suter_a b2db41194f musredit: capture 'this' explicitly to silence C++20 [-Wdeprecated]
The QProcess::finished lambdas used [=], which implicitly captures 'this'
to call member functions (exitStatusMusrWiz, fileReload,
exitStatusMusrSetSteps). Implicit 'this' capture via [=] is deprecated in
C++20; name it explicitly with [=, this]. Applied to both the qt6 and qt5
copies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:43:11 +02:00
suter_a e3e84a6e56 PMsrHandler: escape '?' to avoid trigraph warning in date placeholder
The fallback date placeholder string contained the sequence '??-', which
the compiler interprets as a trigraph for '~' (-Wtrigraphs warning).
Escape the question marks (\?) so the literal string is unchanged while
the warning is silenced.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:37:35 +02:00
suter_a 1a85444763 PStartupHandler: replace TObjArray/TObjString with PStringUtils
Replace the ROOT TString::Tokenize()/TObjArray/TObjString machinery used
for parsing the RGB color code in OnCharacters() with the C++17
PStringUtils helpers (Split/IsInt/ToInt). Drops the manual heap cleanup
and the <TObjArray.h>/<TObjString.h> includes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:32:17 +02:00
suter_a 07f9c744b3 PStringUtils::IsInt: accept an optional leading sign
IsInt now recognises (possibly signed) integers such as "-5" or "+42",
making it slightly more permissive than TString::IsDigit(). A lone sign,
a double sign, or a sign following a digit are still rejected. strToNum
test expectations updated accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:14:11 +02:00
suter_a aa5cdf8d6a add strToNum test driver for PStringUtils
Stand-alone test under src/tests/strToNum exercising every PStringUtils
method (Split / IsInt / IsFloat / ToInt / ToDouble / IsEqualNoCase /
ContainsNoCase / BeginsWithNoCase). Three modes: built-in pass/fail
suite, ad-hoc inspection of command-line strings, and an interactive
prompt. Adds -h/--help and -i/--interactive options. Pure C++17, no
ROOT dependency.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 14:08:25 +02:00
suter_a bb32426005 PStringUtils::ToDouble: signal conversion errors like ToInt
ToDouble() had the same shortcoming as ToInt(): wrapping strtod() with a
nullptr endptr made a failed conversion indistinguishable from a
legitimate 0.0. Add an optional `bool *ok` out-parameter that reports
success. strtod() (with endptr + errno) is kept instead of
std::from_chars so the accepted input set stays identical to
TString::Atof() (leading whitespace skipped, leading '+' honoured,
trailing characters ignored); ok is set false on a non-numeric string or
an ERANGE overflow. The parameter defaults to nullptr, so existing call
sites keep compiling unchanged.

Convert the IsFloat-guarded ToDouble call sites in PMsrHandler to the
single-parse ToDouble(token, &ok) form (replacing the IsFloat() guard +
separate ToDouble() that parsed every token twice). All downstream
>=0 / <=0 / range checks are preserved, and push_back sites only append
on success so no spurious 0.0 is stored on error. Number-vs-keyword
discriminators (pos.error/boundary "none", rrf_phase/fourier-phase parX)
are restructured so the keyword branch is taken when ok is false.

As a side effect this fixes a latent gap in the GLOBAL rrf_freq handler,
where a non-numeric frequency previously slipped through with a stale
value instead of raising an error.

The IsFloat-guarded ToInt fit-range offsets (fgb/lgb) are intentionally
left untouched, as there the guard type differs from the conversion.

All 85 integration tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 12:08:01 +02:00
suter_a 4319b4ad69 PStringUtils::ToInt: signal conversion errors via from_chars
ToInt() previously wrapped strtol() with a nullptr endptr, so a failed
conversion was indistinguishable from a legitimate 0 (matching the old
TString::Atoi() behaviour). Switch the implementation to std::from_chars
and add an optional `bool *ok` out-parameter that reports success: it is
set to false on a non-numeric string or an out-of-range value, true
otherwise. Leading whitespace is skipped and trailing characters are
ignored, preserving the Atoi-like prefix semantics. The parameter
defaults to nullptr, so existing call sites keep compiling unchanged.

Convert the parse-validation call sites in PMsrHandler to the single
-parse ToInt(token, &ok) form, replacing the IsInt() guard + separate
ToInt() (which parsed every token twice). All downstream >0 / >=0 /
range / enum checks are preserved.

Left untouched the call sites where IsInt() acts as a structural
discriminator rather than a numeric validator (write path, xy-data
index-vs-label, fParamInUse usage scans) and the IsFloat-guarded ToInt
offsets, where switching to ToInt(&ok) would change parsing semantics.

All 85 integration tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 11:54:33 +02:00
suter_a b072a481ba PMsrHandler: replace ROOT tokenizer machinery with C++17 PStringUtils
Reduce the ROOT footprint of the MSR parser by removing the pervasive
TString::Tokenize / TObjArray / TObjString / dynamic_cast pattern (28
tokenize sites, 14 TObjArray, 106 TObjString) used to split lines into
tokens, together with the manual `delete tokens` cleanup.

Add a new dependency-free C++17 utility class PStringUtils (Split, IsInt,
IsFloat, ToInt, ToDouble, IsEqualNoCase, ContainsNoCase, BeginsWithNoCase)
that replicates the relevant TString semantics exactly, so it can be reused
elsewhere in the suite. IsInt/IsFloat tolerate surrounding whitespace to
match TString::IsDigit/IsFloat (needed for tokens split on ',' / ';' only).

The public API and the PMusr.h data structures keep TString unchanged; only
the internal tokenizing logic is rewritten. Net -451 lines in
PMsrHandler.cpp. All 85 integration tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 11:15:02 +02:00
suter_a dd604d4bf6 add mupp/Qt6 python option.
Build and Deploy Documentation / build-and-deploy (push) Successful in 31s
2026-05-28 09:30:52 +02:00
suter_a b05ed4de05 mupp: fix crash in PmuppGui::getValues plotting a variable.
getValues()/getErrors() return a std::vector by value, but the QVector was
built from begin() of one call and end() of a second call -> iterators into
two distinct temporaries -> UB and a segfault in getValues(). Bind the result
to a single local before taking begin()/end(). Same in getPosErr/getNegErr.

This surfaced reliably when plotting a <python>-generated variable added via
the GUI (the script path was unaffected as it reads getValues() only once).

Also fix check() to validate the actually selected collections
(GetCollection(idx[i]) instead of GetCollection(i)).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 15:52:02 +02:00
suter_a a575d7398e mupp: simplify the python example to a single <python> block.
Use the new coll[]/collErr[] interface so sigmaSC-vs-temp-py.txt computes both
SigmaSC_10 and SigmaSC_150 in one block instead of one block per collection.
Collection 0 is addressed by index (coll[0]) and collection 1 by name
(coll['...Tscan.db']) to show both addressing modes. Output is unchanged.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:04:03 +02:00
suter_a 3abdace782 mupp: expose all collections inside a <python> block (coll[]/collErr[]).
A <python> variable block previously saw only the parameters of the single
collection the variable is linked to via 'col', injected as bare names plus
par[]/parErr[]. To compute variables for several collections one therefore
needed a separate block per collection.

Now every loaded collection is additionally injected as coll[]/collErr[]
dictionaries, addressable both by integer index (matching 'col <idx>' /
'select <idx>') and by collection name; index and name keys reference the same
per-parameter dict. A single block placed after all 'var = python' declarations
can thus compute - and combine - variables for any collection, e.g.
coll[0]['Sigma'] or coll['NAME.db']['Sigma'].

The bound-collection bare names / par[] / parErr[] are unchanged, so existing
scripts and GUI variables keep working. The collection list is threaded through
PmuppScript::var_cmd and the GUI add()/check() paths into PVarHandler.

Verified: a one-block script using both an index key and a name key reproduces
the numeric output of the equivalent two-block script bit-for-bit.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 13:55:38 +02:00
suter_a f58b65a338 add a python mupp script file. 2026-05-27 13:04:29 +02:00
suter_a 9c09d0bd1a mupp: pair each python variable with its own <python> block.
getPythonBlock() always returned the first <python> ... </python>
entry of the script, so when several 'var X = python' declarations
each had their own block, every declaration after the first one
re-ran the first block and the read-back of the requested variable
failed. Thread the script index through var_cmd into getPythonBlock,
which now scans from that position onwards. Each declaration is
paired with the next block in script order.
2026-05-27 13:03:17 +02:00
suter_a 6a6de42308 mupp: add x-axis error bar support to all plot outputs.
Previously only y-errors were rendered. The IPC data file format now
includes x-errors per point (x, xPosErr, xNegErr, y, yPosErr, yNegErr,
...). Both the live canvas (PMuppCanvas) and the ROOT macro exports
(GUI and script path) propagate x-errors to TGraphAsymmErrors;
x-errors default to 0.0 when the parameter carries none.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 20:43:05 +02:00
suter_a 9d859950d2 mupp: optional Python3 interface for variables via ROOT TPython.
Variables can now be computed by an embedded Python3 interpreter in addition
to the Boost.Spirit X3 expression engine. A <python> ... </python> block
receives all collection parameters as per-run lists (bare names, plus
par[]/parErr[] dictionaries as a fallback for names that are not valid Python
identifiers such as 'lambda') and must assign <name> and <name>Err; errors are
user supplied. Works both in the GUI variable dialog and in scripts.

The feature is optional and only enabled when ROOT is built with TPython
(CMake target ROOT::ROOTTPython); otherwise it compiles out. See MUPP_PY.README
for ROOT configure requirements and usage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 19:06:07 +02:00
suter_a 64f4e1d2dd mupp: RUN is now treated as a variable.
Build and Deploy Documentation / build-and-deploy (push) Successful in 31s
2026-05-20 12:45:13 +02:00
suter_a bedbe2584b proper handling in dump_header of TDirectory in combination with the summary option.
Build and Deploy Documentation / build-and-deploy (push) Successful in 31s
2026-04-30 11:07:20 +02:00
suter_a a8cd816123 Merge pull request 'adds files for the new tutorial to doc/tutorials .' (#14) from tutorial into root6
Build and Deploy Documentation / build-and-deploy (push) Successful in 30s
Reviewed-on: #14
2026-04-29 13:18:41 +02:00
krieger_j b1ac4d33b2 fixed relative paths to new data location. 2026-04-22 14:57:56 +02:00
krieger_j a5181c4429 data and template files for the tutorials. State: as used in the 2026 Muon Spectroscopy School. 2026-04-22 14:54:09 +02:00
suter_a 92143b1c2e fix wrong install path for macOS Qt-based applications.
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-04-17 14:20:43 +02:00
suter_a 3a71dea163 cmake: make sure that lib's are lib and not lib64 for musrfit. 2026-04-17 13:54:38 +02:00
suter_a a735f92195 more improvements on the cmake build system. 2026-04-17 09:15:07 +02:00
suter_a 53ec95db6e work on cleaner cmake. 2026-04-15 20:29:55 +02:00
suter_a dbbaf554b2 MusrRoot: XML-schema evaluation files are moved to https://doi.org/10.5281/zenodo.19593555. to have a DOI and not be depend on a shaky URL
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-04-15 14:34:32 +02:00
suter_a bc20dd33be Merge pull request 'adds installation of musredit as a unix app' (#13) from dev-rpm-app into root6
Build and Deploy Documentation / build-and-deploy (push) Successful in 28s
Reviewed-on: #13
Reviewed-by: suter_a <andreas.suter@psi.ch>
2026-03-15 09:59:12 +01:00
krieger_j 5304f276d8 adds installation of musredit as a unix app 2026-03-13 15:20:31 +01:00
suter_a 9083561e20 added PyScripts/nexus_muon_validator.py to nexus.
Build and Deploy Documentation / build-and-deploy (push) Successful in 21s
2026-03-07 14:50:57 +01:00
suter_a 14d2648fc4 remove obsolate test/nexus
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-03-07 13:38:53 +01:00
suter_a f91bc12709 suppress warning missing deadtime correction if not relevant.
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-03-03 08:52:19 +01:00
suter_a 3174b320b2 fix linker errors: add HDF5 C++ lib and FFTW3 include paths
Build and Deploy Documentation / build-and-deploy (push) Successful in 22s
- Add ${HDF5_LIBRARIES} to PMusr link dependencies so HDF5 C++ symbols
  (H5::DataType, H5::PredType, etc.) used in PRunDataHandler.cpp resolve.
- Add ${FFTW3_INCLUDE} to musrRootValidation and write_musrRoot_runHeader
  include paths; both pull in PMusr.h which transitively includes fftw3.h.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 11:21:01 +01:00
suter_a c062e0f4e9 add musrfitConfig.cmake, etc. for musrfit.
Build and Deploy Documentation / build-and-deploy (push) Successful in 30s
2026-03-01 09:35:34 +01:00
suter_a ed2451d657 adopted after deadtime correction offset fix.
Build and Deploy Documentation / build-and-deploy (push) Successful in 21s
2026-02-23 13:17:00 +01:00
suter_a a005e5750f fixed an index by one offset issue.
Build and Deploy Documentation / build-and-deploy (push) Successful in 21s
2026-02-23 13:02:46 +01:00
suter_a b29c7247e7 make sure that the requested pointer is not a nullptr.
Build and Deploy Documentation / build-and-deploy (push) Successful in 21s
2026-02-23 12:52:26 +01:00
suter_a 92008a4e49 fix Boost_INCLUDE_DIR -> Boost_INCLUDE_DIRS
Build and Deploy Documentation / build-and-deploy (push) Successful in 21s
2026-02-21 17:38:11 +01:00
suter_a 49e355f58a updated the local user-docu.
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-02-21 16:04:48 +01:00
suter_a 901fda9298 adopted ChangeLog. Fixed a minor issue in PTextEdit. Adopted ctests for the new NeXus handling.
Build and Deploy Documentation / build-and-deploy (push) Successful in 29s
2026-02-21 15:32:03 +01:00
suter_a 7115c0027c Merge branch 'nxs' into root6 2026-02-21 12:37:21 +01:00
suter_a 7d5aaf6429 increased the version number of musrfit and libPMusr. 2026-02-21 07:45:25 +01:00
suter_a 79b05cced7 adopted the PNeXus lib such that the class naming scheme is self-consistent. 2026-02-21 07:44:20 +01:00
suter_a 08350a2fde warning that deadtime correction estimate is not yet implemented. I am not even sure this would be a good feature. 2026-02-21 07:19:42 +01:00
suter_a 22b1ad7f2f full implementation of the deadtime correction from file for PRunAsymmetryRRF. 2026-02-21 07:15:44 +01:00
suter_a bb8bdafddd full implementation of the deadtime correction from file. 2026-02-21 07:10:48 +01:00
suter_a d5e305411f added a warning if deadtime correction cannot be carried out (missing parameters, etc.) 2026-02-21 07:09:36 +01:00
suter_a 50187b0c65 add DeadTimeCorrection to PRunAsymmetry - no ADDRUN handling yet. 2026-02-20 19:47:21 +01:00
suter_a d7908573b8 PRunSingleHistoRRF: add DeadTimeCorrection, and improve ADDRUN readability 2026-02-20 19:01:33 +01:00
suter_a 9aae350c13 move DeadTimeCorrection to PRunBase. Make ADDRUN part in PrepareData more readable. 2026-02-20 18:17:05 +01:00
suter_a 390b9770ca add an ADDRUN example. 2026-02-20 16:14:13 +01:00
suter_a ba939574a4 added musrview png ref test via ctest
Build and Deploy Documentation / build-and-deploy (push) Successful in 27s
2026-02-18 17:07:20 +01:00
suter_a c50e4a3a06 add ctest integration tests for musrfit maxLH/chisq validation
Build and Deploy Documentation / build-and-deploy (push) Successful in 28s
Add a Python-based test script that runs musrfit -c on each example
msr-file, extracts the maxLH or chisq value, and checks it against
a reference value with a relative tolerance of 1e-4. Covers all 13
example msr-files (single histogram and asymmetry fits).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 18:05:24 +01:00
suter_a f00f188f0b filter out '\r' and '\n' from command string (macOS issue). 2026-02-13 12:56:50 +01:00
suter_a 5a2f45c083 filter out '\r' and '\n' from command string (macOS issue).
Build and Deploy Documentation / build-and-deploy (push) Successful in 27s
2026-02-13 12:46:16 +01:00
suter_a 4136806847 better hdf4/5 include handling. 2026-02-11 16:05:02 +01:00
suter_a 6a41458310 start working on the deadtime correction. 2026-02-08 15:34:22 +01:00
suter_a d70fd34345 improved NeXus docu. 2026-02-08 09:11:36 +01:00
suter_a 3858cc723a improved docu for HDF4/5. 2026-02-07 21:43:34 +01:00
suter_a a6f5b956bf adopt HDF4 support for proper hierarchical writing of the data. 2026-02-07 21:26:35 +01:00
suter_a 86ecfc84af fixed a copy/paste error. 2026-02-07 21:24:14 +01:00
suter_a 8cb4fc7221 clean up HDF4 in PNeXus. First implementation for HDF4 IDF1/2 write. Compiles, but still some issues. 2026-02-07 20:54:09 +01:00
suter_a 95d087164d first full mandatory HDF5 IDF V2 writer. 2026-02-07 20:17:23 +01:00
suter_a 8f3ad0c61d PNeXus now handles std::vector<> attributes new correctly. HDF4/5 now is using int. 2026-02-07 20:00:27 +01:00
suter_a 49d42c93ba more work on HDF5 IDF V2. 2026-02-07 19:34:26 +01:00
suter_a df379b834e first full version for HDF5 IDF V1 write. 2026-02-07 17:25:52 +01:00
suter_a 3bb004ea2d more work on the NeXus write routines. 2026-02-07 11:31:11 +01:00
suter_a fc478d27c7 make sure that the config.h is accessible for the PMusr lib. 2026-02-07 11:29:48 +01:00
suter_a c690965025 add a function in the NeXus lib which gives the time in ISO8601. 2026-02-07 11:28:38 +01:00
suter_a 300c9200df start implementing the NeXus write routines, needed by any2many. 2026-02-07 08:05:42 +01:00
suter_a 4dcef1a835 add HDF4/HDF5 library version information, needed for writing. 2026-02-07 08:05:09 +01:00
suter_a 4519a0b76e add more complete dump info for NeXus. 2026-02-06 18:08:37 +01:00
suter_a 3aecdbf0a8 added the missing sample information when reading NeXus IDF V2. 2026-02-06 15:15:10 +01:00
suter_a dfa8852cfe removed debug tag. 2026-02-06 15:14:25 +01:00
suter_a 29fbb4a62b replace the NeXus IDF 2 example. 2026-02-06 14:03:55 +01:00
suter_a de8b02b94d more complete doxygen docu. 2026-02-06 12:43:55 +01:00
suter_a dd2f743b3a added docu by Claude for PNeXus. 2026-02-06 08:45:58 +01:00
suter_a d5dbc12175 NeXus HDF4/HDF5 IDF V1: read 'frames_good' 2026-02-05 13:29:27 +01:00
suter_a 643be9738f fixed wrong path in NeXus IDF V2. 2026-02-05 12:59:10 +01:00
suter_a 88b5e492dd NeXus IDF V2 detector_1 -> instrument/detector_1 where possible. 2026-02-05 12:08:40 +01:00
suter_a 810306cb2a first full IDF V2 implementation. 2026-02-05 10:59:15 +01:00
suter_a 43cb8b2460 start with the implementation of NeXus IDF V2. 2026-02-04 19:48:38 +01:00
suter_a ceb9673330 read deadtime parameters for IDF V1. 2026-02-04 17:57:48 +01:00
suter_a da0b356e3b more work on the deadtime correction on the msr-file side. 2026-02-04 13:29:07 +01:00
suter_a b262ee33c5 start implementing with the deadtime correction, if present 2026-02-04 13:20:10 +01:00
suter_a 12888be4c9 add deadtime correction related params. 2026-02-04 11:06:56 +01:00
suter_a 867ac4895b switched to HDF4/HDF5 template loading in order to simplify the code. 2026-02-04 09:26:49 +01:00
suter_a a6c9120d06 check for IDF 1/2. 2026-02-03 17:38:56 +01:00
suter_a 417901e271 HDF4 handling completed. 2026-02-03 16:17:06 +01:00
suter_a 8d1dcef2de add more HDF4 header info: counts. 2026-02-03 08:03:13 +01:00
suter_a 30fbd8eb67 fixed typo, and added file pointer checks. 2026-02-02 19:14:14 +01:00
suter_a 76dbd757e3 dump_header can now handle HDF4/HDF5 NeXus files, without the NeXus library. 2026-02-02 19:08:12 +01:00
suter_a c894c21bf3 add more HDF4 header info. 2026-02-02 08:02:41 +01:00
suter_a 008ca7210a add more HDF4 header info. 2026-02-01 19:49:55 +01:00
suter_a 60f11dfc0e add more HDF4 header info. 2026-02-01 18:55:49 +01:00
suter_a 3aaca28c87 start populating HDF4 header info. 2026-02-01 17:54:02 +01:00
suter_a d4f0855b19 fix git-revision.h generation: output to build tree and add missing dependencies
Generate git-revision.h into CMAKE_BINARY_DIR/src/ (which is in the
include path) instead of the source tree. Remove the header from
add_executable() source lists, and add missing add_dependencies on
git_revision for all Qt5/Qt6 targets.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 19:59:47 +01:00
suter_a 9d173203ff fix git-revision.h generation: output to build tree and add missing dependencies
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
Generate git-revision.h into CMAKE_BINARY_DIR/src/ (which is in the
include path) instead of the source tree. Remove the header from
add_executable() source lists, and add missing add_dependencies on
git_revision for all Qt5/Qt6 targets.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 19:52:16 +01:00
suter_a 00c980af68 generate git-revision.h at build time instead of configure time
Replace execute_process with add_custom_target so the git revision
check runs on every build, not just on cmake configure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 19:40:33 +01:00
suter_a fb9d6e917c proper TDirectory handling for the histos. 2026-01-29 19:40:20 +01:00
suter_a 2eb0cf28d5 fixed missing TDirectory handling of RunSummary in dump_header.cpp 2026-01-29 19:40:10 +01:00
suter_a 8b054b77b9 generate git-revision.h at build time instead of configure time
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
Replace execute_process with add_custom_target so the git revision
check runs on every build, not just on cmake configure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 19:35:20 +01:00
suter_a 4e29ad6898 proper TDirectory handling for the histos.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2026-01-26 20:32:34 +01:00
suter_a 4ac7a7d01c fixed missing TDirectory handling of RunSummary in dump_header.cpp
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2026-01-26 19:52:41 +01:00
suter_a 65efb389c3 first test to read hdf4/hdf5 directly. 2026-01-25 16:20:10 +01:00
suter_a 83c8f6630c 2nd spot for cmake version check for policy setting. 2026-01-25 14:50:23 +01:00
suter_a 227bfb7419 2nd spot for cmake version check for policy setting.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2026-01-25 14:49:38 +01:00
suter_a 70eb0397df cmake version check for policy setting. 2026-01-25 14:45:46 +01:00
suter_a 3c02c6073a cmake version check for policy setting. 2026-01-25 14:43:49 +01:00
suter_a b3e4d247f0 add HDF4/HDF5 example programs. 2026-01-25 14:07:36 +01:00
suter_a 6aaed94adf add doxygen file comment. 2026-01-25 12:05:04 +01:00
suter_a c3e9c03920 added HDF5 ISIS NeXus class handling. 2026-01-25 11:15:49 +01:00
suter_a 909fa6519d added HDF4 ISIS NeXus class handling. 2026-01-25 10:51:23 +01:00
suter_a 3eea73f07a stub for new NeXus file handling. Not much is working yet. 2026-01-25 08:26:43 +01:00
suter_a f66c832d56 updated the copyright info. 2026-01-25 07:45:44 +01:00
suter_a 4de660788d updated the copyright info.
Build and Deploy Documentation / build-and-deploy (push) Successful in 26s
2026-01-25 07:42:29 +01:00
suter_a 990e280c8f set cmake Boost find policy. Removed NeXus library find from cmake, since it will not be used anymore. 2026-01-25 07:28:47 +01:00
suter_a af3c8832fe set cmake Boost find policy.
Build and Deploy Documentation / build-and-deploy (push) Successful in 28s
2026-01-25 07:26:25 +01:00
suter_a 7615e791d3 version update of the doxygen config file. 2026-01-24 18:30:18 +01:00
suter_a 394ea01d37 further playing with the Prefs dialog. 2026-01-24 18:30:06 +01:00
suter_a d19d7b59c8 further playing with the Prefs dialog. 2026-01-24 18:29:46 +01:00
suter_a 7dc0a237dc further playing with the Prefs dialog. 2026-01-24 18:29:37 +01:00
suter_a 1b4b9cc238 increased size of prefs dialog, since it seems too small for the newest qt6 version, especially on macOS. 2026-01-24 18:29:28 +01:00
suter_a 123acec405 version update of the doxygen config file.
Build and Deploy Documentation / build-and-deploy (push) Successful in 30s
2026-01-22 15:15:42 +01:00
suter_a eaa2ba8faf further playing with the Prefs dialog.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2026-01-21 12:19:34 +01:00
suter_a 8b9ac6e5b1 further playing with the Prefs dialog.
Build and Deploy Documentation / build-and-deploy (push) Successful in 26s
2026-01-21 12:16:27 +01:00
suter_a 2601e80c8a further playing with the Prefs dialog.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2026-01-21 11:20:08 +01:00
suter_a 1b91d8b281 increased size of prefs dialog, since it seems too small for the newest qt6 version, especially on macOS.
Build and Deploy Documentation / build-and-deploy (push) Successful in 27s
2026-01-21 11:11:17 +01:00
suter_a db54db3394 more detailed NeXus support message.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2026-01-16 18:00:39 +01:00
suter_a 84bb6e3a72 spirit classic/qi -> x3. Increase musrfit and library version to 1.9.10/1.7.0.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2026-01-16 09:24:09 +01:00
suter_a ce1bc1583b for tests/spirit: replace 'nil' by 'leer' since 'nil' leads to conflict with macOS. 2026-01-01 09:53:12 +01:00
suter_a 4adf66cb26 replace 'nil' by 'leer' since 'nil' leads to conflict with macOS. 2025-12-30 14:34:26 +01:00
suter_a 8a86351674 add missing header files for install for cmake. 2025-12-30 13:59:00 +01:00
suter_a 418ca6b0a1 add missing header file PFunctionsAst.h 2025-12-30 13:56:50 +01:00
suter_a 73aff4ec69 modernize musrfit function handling using spirit x3 instead of spirit classic now. 2025-12-30 13:31:18 +01:00
suter_a 7ce0926fd9 migrated spirit qi grammar to x3 of mupp variable handling. 2025-12-30 11:02:46 +01:00
suter_a e4ff8ca7d5 added doxygen docu to spirit X3 under tests.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-12-27 13:57:14 +01:00
suter_a 5d3981d8b2 test spirit parser moved from classic to X3.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-12-27 12:32:01 +01:00
suter_a 3442ca7b62 adopted from AFS to NFS.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-12-24 14:03:44 +01:00
suter_a a023a4b090 perform Fourier phase checks only if a Fourier block is present and not set to power spectra.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-12-22 16:09:32 +01:00
suter_a 642f878833 improve comment in comment.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-12-21 16:09:01 +01:00
suter_a 8852cf21cf add missing #include<cmath> to make some compilers happy (qt5 part).
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-11-27 16:16:04 +01:00
suter_a 89f695d6ce adopt PFitter to ROOT v6-38-00 and make sure it is backwards compatible.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-11-27 15:32:16 +01:00
suter_a 975f48f3fa add missing #include<cmath> to make some compilers happy. 2025-11-27 15:30:45 +01:00
suter_a 93f6bccaef improve the doxygen docu of the BMWtools.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-11-25 18:51:57 +01:00
suter_a 1a922125bb improve the doxygen documentation of the plotter-part of mupp. 2025-11-25 18:33:31 +01:00
suter_a 322aa58fbc improve the doxygen documentation of the var-part of mupp. 2025-11-25 17:56:04 +01:00
suter_a 4cbf625b84 improve the doxygen docu of PVarDialog.* (musredit_qt6). 2025-11-25 17:36:13 +01:00
suter_a 1b0cddc0ee improve the doxygen docu of PmuppScript.* (musredit_qt6).
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-11-25 12:30:59 +01:00
suter_a 4f52ff7b9b improve the doxygen docu of PmuppGui.* (musredit_qt6). 2025-11-25 12:23:33 +01:00
suter_a 0cb9b20738 improve the doxygen docu of PmuppAdmin.* (musredit_qt6).
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-11-25 12:18:18 +01:00
suter_a 20d5955977 improve the doxygen docu of mupp.* Pmupp.* (musredit_qt6). 2025-11-25 09:27:59 +01:00
suter_a ab14747460 improve the doxygen docu of PTextEdit.* (musredit_qt6). 2025-11-25 09:16:43 +01:00
suter_a 6c87889f5c improve the doxygen docu of PSubTextEdit.* (musredit_qt6). 2025-11-25 08:52:43 +01:00
suter_a c434993763 improve the doxygen docu of PReplaceDialog.* (musredit_qt6). 2025-11-25 08:44:41 +01:00
suter_a 9fa970a53e improve the doxygen docu of PReplaceConfirmationDialog.* (musredit_qt6). 2025-11-25 08:39:44 +01:00
suter_a 87fcf91593 improve the doxygen docu of PPrefsDialog.* (musredit_qt6). 2025-11-25 08:36:54 +01:00
suter_a 02ddc3889d improve the doxygen docu of PMusrEditAbout.* (musredit_qt6). 2025-11-25 08:32:59 +01:00
suter_a 2fd0248e37 deal with Boost 1.89 not having system as component anymore. 2025-11-25 08:29:45 +01:00
suter_a b658b8b9de improve the doxygen docu of PMsr2DataDialog.* (musredit_qt6). 2025-11-25 07:58:47 +01:00
suter_a 948ac57be6 improve the doxygen docu of PGetTitleBlockDialog.* (musredit_qt6). 2025-11-25 07:52:10 +01:00
suter_a 4802a7a016 improve the doxygen docu of PGetTheoryBlockDialog.* (musredit_qt6). 2025-11-25 07:49:24 +01:00
suter_a 244baa4dd4 add PSI/VMS to dump_header.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-11-24 19:25:45 +01:00
suter_a e1f2941d7f add PSI/VMS to the musrfit_startup.xml.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-11-24 19:12:12 +01:00
suter_a 98ee6a3983 add musrStep and musrWiz to the workflow.
Build and Deploy Documentation / build-and-deploy (push) Successful in 20s
2025-11-24 18:23:45 +01:00
suter_a 3f50462ce4 make the technical docu more complete by adding musrStep and musrWiz.
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-11-24 18:18:58 +01:00
suter_a 4c5a009305 Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
switch Qt docu from Qt5 to Qt6
2025-11-24 17:32:00 +01:00
suter_a 7e415e636c improve the doxygen docu of PGetSingleHistoRunBlockDialog.* (musredit_qt6).
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-11-24 13:51:35 +01:00
suter_a b3bffd6a51 improve the doxygen docu of PGetPlotBlockDialog.* (musredit_qt6). 2025-11-24 13:44:21 +01:00
suter_a cbd6bb984e improve the doxygen docu of PGetParameterBlockDialog.* (musredit_qt6). 2025-11-24 13:40:15 +01:00
suter_a 1aec75d5ad improve the doxygen docu of PGetNonMusrRunBlockDialog.* (musredit_qt6). 2025-11-24 13:35:54 +01:00
suter_a 8b631e026c improve the doxygen docu of PGetMusrFTOptionsDialog.* (musredit_qt6). 2025-11-24 13:30:27 +01:00
suter_a 456bc2adb4 improve the doxygen docu of PGetFunctionBlockDialog.* (musredit_qt6). 2025-11-24 13:24:35 +01:00
suter_a 8b42254cbb improve the doxygen docu of PGetFourierBlockDialog.* (musredit_qt6). 2025-11-24 12:25:29 +01:00
suter_a 06ccceb810 improve the doxygen docu of PGetAsymmetryRunBlockDialog.* (musredit_qt6). 2025-11-24 11:15:21 +01:00
suter_a 6ca0461f9b improve the doxygen docu of PFitOutputHandler.* (musredit_qt6). 2025-11-24 11:08:03 +01:00
suter_a 9cbcec63be improve the doxygen docu of PFindDialog.* (musredit_qt6). 2025-11-24 10:53:43 +01:00
suter_a b714c8d170 improve the doxygen docu of PDumpOutputHandler.* (musredit_qt6). 2025-11-24 10:48:14 +01:00
suter_a eb807ade7b improve the doxygen docu of PChangeDefaultPathDialog.* (musredit_qt6). 2025-11-24 10:42:16 +01:00
suter_a 1f7ce9f88a improve the doxygen docu of PAdmin.* (musredit_qt6). 2025-11-24 10:34:58 +01:00
suter_a be24a3aa73 improve the doxygen docu of main.cpp and musredit.h (musredit_qt6). 2025-11-24 10:24:36 +01:00
suter_a aaa609b3e2 improve the doxygen docu of musrWiz.
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-11-23 18:41:03 +01:00
suter_a a0e6a3a83d improve the doxygen docu of musrStep. 2025-11-23 18:25:48 +01:00
suter_a 0db498284f improve the doxygen docu of PUserFcn.* and PUserFcnBase.*
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-11-23 17:58:07 +01:00
suter_a d8ae606a55 improve the doxygen docu of PTheory.* 2025-11-23 17:47:46 +01:00
suter_a e940ad09b4 improve the doxygen docu of PStartupHandler.* 2025-11-23 17:35:31 +01:00
suter_a 633f63b104 improve the doxygen docu of PRunSingleHistoRRF.* 2025-11-23 17:25:45 +01:00
suter_a db4b6395ef fixed a AI glich in the docu. 2025-11-23 17:08:43 +01:00
suter_a fa1d496cf5 improve the doxygen docu of PRunSingleHisto.*
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-11-15 21:31:09 +01:00
suter_a 310713da0e improve the doxygen docu of PRunNonMusr.* 2025-11-15 08:42:21 +01:00
suter_a 3e545f1d50 improve the doxygen docu of PRunMuMinus.* 2025-11-15 08:35:24 +01:00
suter_a 278fd47e52 improve the doxygen docu of PRunListCollection.* 2025-11-15 08:27:51 +01:00
suter_a 26b87e0659 improve the doxygen docu of PRunDataHandler.h 2025-11-15 08:16:15 +01:00
suter_a 38decd8b58 improve the doxygen docu of PRunBase.* 2025-11-15 08:02:11 +01:00
suter_a a05b4fe867 improve the doxygen docu of PRunAsymmetryRRF.* 2025-11-15 07:54:12 +01:00
suter_a 7b82b2c2c8 improve the doxygen docu of PRunAsymmetry.*. 2025-11-15 07:43:49 +01:00
suter_a 4d5ad0a00c improve doxygen documentation of PRunAsymmetryBNMR.*
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-11-14 10:21:07 +01:00
suter_a c5d5038b4d improve doxygen documentation of PRgeHandler.* 2025-11-14 10:05:36 +01:00
suter_a be8161bac1 improve doxygen documentation of PPrepFourier.* 2025-11-14 09:57:18 +01:00
suter_a cdd248d116 improve doxygen documentation of PMusrT0.* 2025-11-14 09:48:35 +01:00
suter_a 26d55bc048 improve doxygen documentation of PMusrCanvas.* 2025-11-14 09:36:18 +01:00
suter_a 218e2125e3 improve doxygen documentation of PMsrHandler.* 2025-11-14 09:22:24 +01:00
suter_a 5f1b4fa5f5 improve doxygen documentation of PMsr2Data.* 2025-11-14 09:11:28 +01:00
suter_a a40c431396 improve doxygen documentation of PMsgBox.* 2025-11-14 07:57:06 +01:00
suter_a 40a797c0da improve doxygen documentation of PFunction.* and PFunctionGrammar.h
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-11-14 07:50:50 +01:00
suter_a f8a2d646dc improve the doxygen docu.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-11-13 08:36:42 +01:00
suter_a 224f7a15d0 improve the doxygen docu. 2025-11-13 07:59:10 +01:00
suter_a 25024aae6b improve the doxygen docu with the help of Claude AI.
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-11-12 20:32:20 +01:00
suter_a 4ab01f4faf added some more sanity checks for dump_header.
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-11-12 17:56:33 +01:00
suter_a 5ae66a0614 added some more sanity checks for any2many. 2025-11-12 13:13:40 +01:00
suter_a d38fb078f9 added some more sanity checks for addRun. 2025-11-12 12:21:08 +01:00
suter_a f1587af451 added some more sanity checks for musrview. 2025-11-12 11:05:56 +01:00
suter_a ddf434f595 added some more sanity checks for musrt0. 2025-11-12 10:48:36 +01:00
suter_a 22112e47b2 added paranoia pointer checks.
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-11-12 08:09:03 +01:00
suter_a 9363bafec4 make sure that the comment content is not confused with end of comment. 2025-11-12 08:06:38 +01:00
suter_a 3d07894b2d use Claude ai to generate doxygen documentation.
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-11-10 15:14:08 +01:00
suter_a 262b5a36aa Update README.md - updated the docu web-page link.
Build and Deploy Documentation / build-and-deploy (push) Successful in 16s
2025-11-06 14:25:13 +01:00
suter_a 7745fe6e65 Update README.md
Build and Deploy Documentation / build-and-deploy (push) Successful in 16s
updated the docu web-page link
2025-11-06 14:13:08 +01:00
suter_a 189f95cb04 Update ChangeLog
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-10-15 08:00:50 +02:00
suter_a f3250ededc Update INSTALL
Build and Deploy Documentation / build-and-deploy (push) Successful in 19s
2025-10-15 07:58:50 +02:00
bruhn_b 9820c5dba7 Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Successful in 17s
2025-10-13 16:10:07 +02:00
ebner 7b9a473296 Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Successful in 13s
2025-10-13 15:40:41 +02:00
ebner 23e68c1c4f Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Failing after 17s
test
2025-10-13 15:36:51 +02:00
bruhn_b c9414f7f08 Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Successful in 11s
2025-10-13 15:31:08 +02:00
ebner bac6202a73 Update .gitea/workflows/deploy-pages.yml
Build and Deploy Documentation / build-and-deploy (push) Failing after 17s
change action trigger to default branch name
2025-10-13 15:16:12 +02:00
ebner b5447aef32 Update .gitea/workflows/deploy-pages.yml
changed build image
2025-10-13 15:13:06 +02:00
suter_a 1e9b82f1c2 add TDirectory option to any2many. 2025-10-03 15:42:44 +02:00
suter_a fbfce99790 better handling of values=n/a when dumping the header info. 2025-10-01 12:36:01 +02:00
suter_a 32b49e7ac8 fixed char* comparison bug. 2025-10-01 09:38:17 +02:00
suter_a df7b8433e1 adopted PRunDataHandler::ReadRootFile such that it can handle TDirectory in addition to the deprecated TFolder. 2025-09-30 14:32:47 +02:00
suter_a 10117abeff dump_header can now handle TMusrRoot with TFolder as well as TDirectory. 2025-09-30 12:30:45 +02:00
suter_a 675ed39739 update of the in-source MusrRoot docu. 2025-09-29 16:41:17 +02:00
suter_a 7f911cd3ab make musrRootValidation TDirectory compatible. 2025-09-29 14:28:53 +02:00
suter_a 288c4c644b updated the docu and removed unused DrawHeader. 2025-09-29 12:45:24 +02:00
suter_a ea646e012b increase the MusrRoot version to 2.0. 2025-09-29 12:43:21 +02:00
suter_a d8d1eb1838 added necessary FOURIER block. 2025-09-29 11:43:30 +02:00
suter_a 4917e5c7ae added the reader part for MusrRoot if written with TDirectory rather than TFolder. 2025-09-29 10:47:58 +02:00
suter_a 7e28402e25 start implementing TDirectory infrastructure. 2025-09-28 16:45:49 +02:00
suter_a db71346ebb Update .gitea/workflows/deploy-pages.yml
added graphiz for the collaboration diagrams
2025-09-17 14:03:50 +02:00
suter_a 4fbd678a88 split argv parsing between root (un)related parts. 2025-09-15 13:25:21 +02:00
suter_a 376b4f59ba add the errno information onto the IPC, in case of a failure. 2025-09-07 18:15:12 +02:00
suter_a a61a09bddd added musredit.dox in the doc directory. 2025-09-02 09:14:41 +02:00
suter_a 475bb6a9f7 changed copy path for pages. 2025-09-02 09:10:35 +02:00
suter_a a6153a0eb7 add first technical docu pages pipeline. 2025-09-02 09:07:00 +02:00
suter_a 7405a95c6e removed qmake leftovers. Only cmake is used for the future. Reorganized the technical docu, for better gitea-pages integration. 2025-09-02 08:55:00 +02:00
suter_a ed6e392a53 prevent crash if no tab is present. 2025-08-19 18:09:29 +02:00
suter_a ef4c6d75e5 make sure that index states in proper range for PRunAsymmetryRRF. 2025-08-05 10:30:41 +02:00
suter_a 392a0b089d added more histo length versus fgb, lgb checks. 2025-07-11 13:05:49 +02:00
suter_a 06a509a420 improved reload of msr-files in musredit after a msr2data command. 2025-07-07 10:02:14 +02:00
suter_a 2e951d92f1 error feed fStep rather than fPosError for expected chisq. Tweaked the param rounding for expected chisq. 2025-07-04 16:29:33 +02:00
suter_a d9016d82a8 better exp estimate for precision. 2025-07-04 08:31:52 +02:00
suter_a 25bcdd25e5 add err==0.0 handling for rounding. 2025-07-03 10:22:11 +02:00
suter_a 781a2e7dbd also apply the parameter rounding onto the per run block estimate. 2025-07-03 09:50:48 +02:00
suter_a 1aa7e6941f improved rounding handling to get a more consistent expected chisq after fitting compared to pure chisq estimate of musrfit. Essentially get rid of rounding issues. 2025-07-03 09:38:34 +02:00
suter_a 7491a2c331 now all error messages from musrview can be sent to PMsgBox. 2025-06-29 09:12:11 +02:00
suter_a 832a74e0b5 added a feature which brings up a error message box, if there was any issue with the msr-file when starting musrview from musredit. 2025-06-29 09:04:45 +02:00
suter_a 0b1c9e53c6 (i) make most internal checking functions in the msr handler private. (ii) improved checking of real Fourier for consistency. 2025-06-23 16:02:07 +02:00
suter_a 18bf65a231 changed theory functionc abbriviation 'if' to 'ifld'. 2025-06-10 13:23:03 +02:00
suter_a 0cde84d756 updated of the offline docu. 2025-06-09 09:10:49 +02:00
suter_a 0943f1f061 increase libPMusr version to 1.5.0. 2025-06-08 10:58:40 +02:00
suter_a 769a828a76 new version 1.9.9. Adopted ChangeLog and CMakeLists.txt. 2025-06-08 10:48:12 +02:00
suter_a ecec59c8a3 1st full Gauss/Lorentz LF. Still room for optimization, and further testing. 2025-06-06 10:21:09 +02:00
suter_a 66af890157 add new functions to musredit select. 2025-06-05 11:19:48 +02:00
suter_a eb98c9727c add simple F-mu-F to the standard theory functions. 2025-06-05 10:41:12 +02:00
suter_a 079baa3edf start adding more standard theory functions. Not all ready yet. 2025-06-04 17:39:02 +02:00
suter_a 7df47a05f3 create src dir if not present. Needed for git-revision.h 2025-06-03 12:58:00 +02:00
suter_a 15c5b02c8b more docu. 2025-05-28 13:48:57 +02:00
suter_a 37f099542a stripped CMakeLists.txt to the bare minimum. 2025-05-28 13:48:05 +02:00
suter_a c2fb166d3b add necessary docu for the Gaussian Lorentzian approach. 2025-05-28 12:47:20 +02:00
suter_a e8806c3e72 changed the integral approximation approach for Gaussian/Lorentzian. 2025-05-28 12:46:37 +02:00
suter_a 91a45cad90 added ZF, LF geometry, dynamic approximation width/hopp << 1. 2025-05-27 15:59:58 +02:00
suter_a d1f025a8c2 improved GL integration. 2025-05-27 15:59:08 +02:00
suter_a e525abe614 simplify git-revision.h generation. 2025-05-19 13:29:54 +02:00
suter_a 005b33c379 added missing MACOSX_BUNDLE_GUI_IDENTIFIER for mupp. 2025-05-14 18:10:51 +02:00
suter_a 3bcc382679 allow to define Tmax from the cmd line. 2025-05-13 16:08:23 +02:00
suter_a 249d6ff97c add missing header. 2025-05-12 20:25:40 +02:00
suter_a 69ab03d5ae first LGKT_LF. Might need to slightly improve Simpson. 2025-05-12 16:36:37 +02:00
suter_a 819d209863 proper class for GKT LF. 2025-05-12 10:58:53 +02:00
suter_a bcc1597e30 add LF Gaussian/Lorentzian testing code. 2025-05-09 16:02:04 +02:00
suter_a 9fa90c24fb start populating nfs4 path rather than afs in the musrfit_startup.xml. 2025-05-06 15:33:13 +02:00
suter_a 236a702d36 needed to add an additional header (stdbool.h, libCuba) to make clang happy. 2025-05-03 15:13:26 +02:00
suter_a 09f9782a31 comment outdated typedef in libCuba. 2025-05-02 19:18:43 +02:00
suter_a f99f71a8db slight improvement on mud.h needed that it doesn't crash on macos15.4 m3pro. 2025-04-09 17:11:14 +02:00
suter_a 6e60013037 updated mud.h (thanks to Donald Arseneau). Makes modern compiler happy again. 2025-04-08 17:00:04 +02:00
suter_a e38fa47961 add skeleton for MusrRoot which will handle TDirectoryFile rather than TFolder. 2025-04-04 18:37:42 +02:00
suter_a 764cdf4e51 start implementing TDirectoryFile instead of TFolder, since TFolder is depricated. First I added the necessary parts on the validator. The read/write are still missing. 2025-04-04 16:58:57 +02:00
suter_a e5ff0fa743 switched from raw to QScopedPointer pointer in mupp.cpp. 2025-04-01 14:10:59 +02:00
suter_a e26fa4eea2 removed my quick and dirty fix. It doesn't work for all compilers. Reported bug to triumf and wait for a fix. 2025-03-31 07:54:25 +02:00
suter_a 5648757389 back ported some qt6 recent file handling. 2025-03-30 18:14:04 +02:00
Andreas Suter c3b4c7c3b1 improved recent file handling for macos. 2025-03-30 17:09:04 +02:00
suter_a e233c860d1 slight improvement in handling of the recent msr-files. 2025-03-30 15:30:46 +02:00
suter_a c230bfb1bc updated the icon switching by adding the missing View2Dat. 2025-03-29 22:36:48 +01:00
suter_a 5119b1cd13 fixed typo and added necessary update for the theme flags. 2025-03-29 21:48:23 +01:00
suter_a d937324885 improved dark theme handling on mupp for qt5. 2025-03-29 20:54:03 +01:00
suter_a f7e5c53879 improved dark theme handling on mupp for qt6. 2025-03-29 20:17:28 +01:00
suter_a 3796925e93 needed to adopt mud.h to make it gcc15.0.1 ready. 2025-03-26 17:05:16 +01:00
suter_a d5343a0073 activate the status bar. 2025-03-25 15:35:10 +01:00
suter_a bb99482461 add a user interface option to export data from a msr-file view (single- or multiple files) - qt6. 2025-03-24 20:28:57 +01:00
suter_a f0869935d1 add a user interface option to export data from a msr-file view (single- or multiple files). 2025-03-24 20:10:01 +01:00
suter_a 0f95551200 add necessary increment for unique cropped name for PSI-BIN. 2025-03-19 16:24:56 +01:00
suter_a b8ce741534 make sure that for PSI-BIN export the 4 char detector names are unique. 2025-03-19 09:45:16 +01:00
suter_a 4b6654ca2a add title to PRawRunDataSet. 2025-03-19 09:44:13 +01:00
suter_a 38d4ec1806 read 'Sample Orientation' from ROOT file, since it might be needed by any2many. 2025-03-18 12:51:40 +01:00
suter_a 4231d26604 make sure that the 'selected' object is present. 2025-02-24 20:22:20 +01:00
suter_a a28650f017 this is a workaround which should prevent that the key event is executed if a text/latex is written into the canvas. 2025-02-17 17:53:39 +01:00
suter_a 9a23c4f241 fix of a copy/paste error. 2025-02-15 10:41:02 +01:00
suter_a 5f7f79e46d header of exported data adopted for easier read in with pandas. 2025-02-14 09:06:55 +01:00
suter_a 4a20d805dd updated the copyright info. 2025-01-30 11:15:42 +01:00
suter_a 10cfe3f863 Merge branch 'root6' of https://git.psi.ch/nemu/musrfit into root6 2025-01-29 08:05:29 +01:00
suter_a 0828d1b8d4 proper handling of comments and descriptions in the RUN block. 2025-01-29 08:04:48 +01:00
suter_a 75785d2c0e add switch to enable/disable HDF4 support for NeXus. 2025-01-28 21:40:58 +01:00
suter_a e4b84b12df make sure that 'ASCII', 'DAT', and 'DB' is rejected from musrFT. 2025-01-27 18:00:32 +01:00
suter_a 124a31386c add a new tag PMUSR_UNSUPPORTED_FEATURE 2025-01-27 17:58:42 +01:00
suter_a ebdb0feb7f path-run-name in RUN block of the msr-file can now handle spaces. 2025-01-18 13:35:08 +01:00
ext-mcfadd_r e67d92fc05 Merged in mnstrategy (pull request #19)
Explicit passing of MnStrategy during minimizer initialization

Approved-by: Suter Andreas
2025-01-10 10:00:30 +00:00
ext-mcfadd_r ead1674b13 Explicit passing of MnStrategy during minimizer initialization
This patch fixes compilation errors that arise with recent ROOT versions (e.g., 6.34.02),
which require a ROOT::Minuit2::MnStrategy object to be passed when initializing the
ROOT::Minuit2::MnX (X = Migrad, Simplex, Minimize) minimizers (i.e., instead of the integer
representing the "strategy").
2025-01-09 11:38:33 -08:00
suter_a fd22884ce8 slightly re-ordered the default files for mupp in the open dialog. 2024-12-16 07:41:24 +01:00
suter_a 20dd08fbef changed default ROOT color kGreen to kGreen+2. 2024-12-14 14:54:17 +01:00
suter_a 3e66760c26 adopted for custom button handling qt5. 2024-12-11 14:06:32 +01:00
suter_a d6bcdf52b8 adopted for custom button handling. 2024-12-11 13:58:11 +01:00
suter_a 30bd2b2876 added missing enum tag. 2024-12-11 09:36:57 +01:00
suter_a 9f8f89db6d make the theme handling in musredit more flexible. At the same time adopted some part to more modern c++. 2024-12-11 09:25:28 +01:00
suter_a 458913ca31 update of the ChangeLog 2024-12-03 18:13:02 +01:00
suter_a 5c3accc6ed added jump to block feature. 2024-12-02 20:05:50 +01:00
suter_a 6f8b0a2341 center edit widget for find. This gives a better user experience. 2024-12-02 17:06:02 +01:00
suter_a 4febdb42b4 make sure that for non-muSR data errors are not = 0. Will set it to 1, and issue a warning. This prevents chisq to crash. 2024-10-14 12:22:25 +02:00
suter_a ae95a5dc1c implemented unary operator for metaData in functions. 2024-10-11 16:34:49 +02:00
suter_a c3f531e0d5 fixed a bug for out-of-repo build to generate git-info. 2024-10-11 08:19:54 +02:00
suter_a 0b61130e28 adopted OpenMP handling for libZFRelaxation. 2024-09-23 09:41:20 +02:00
suter_a d1cd63dcb0 fixed a bug in the mupp gui refresh of a collection. 2024-09-21 13:02:31 +02:00
suter_a 7838901fbe make sure that the run template number has at least 4 digits before proceeding. 2024-09-17 16:27:04 +02:00
suter_a 00b012d0dd Merge https://bitbucket.org/muonspin/musrfit into root6 2024-09-12 09:29:03 +02:00
ext-mcfadd_r d2984d8923 Merged in avg (pull request #18)
fix batch mode averaged output

Approved-by: Andreas Suter
2024-09-12 07:28:15 +00:00
ext-mcfadd_r 58889614e5 fix batch mode averaged output
closes issue #63
2024-09-10 13:52:30 -07:00
suter_a c9fc373862 improved dat-file reading for mupp. 2024-07-02 09:26:44 +02:00
suter_a ebefcf7af9 updated the docu. 2024-06-24 09:44:07 +02:00
suter_a 64d3b6192b added the option to write the content of the MINUIT2.OUTPUT ascii file as yaml. This extends the previous commit from Ryan M.L. McFadden. 2024-06-18 11:16:15 +02:00
suter_a 6bcb26f9d5 Merge branch 'root6' of https://bitbucket.org/muonspin/musrfit into root6 2024-06-18 08:19:01 +02:00
ext-mcfadd_r 6b865efd3b Merged in ignore (pull request #17)
ignore all files generated from an in-repo build

Approved-by: Andreas Suter
2024-06-18 06:18:56 +00:00
ext-mcfadd_r caccfb175a Merged in yaml (pull request #16)
write the fit results to an easy-to-read/parse yaml file

Approved-by: Andreas Suter
2024-06-18 06:18:31 +00:00
ext-mcfadd_r 1845b5c176 Merged in segfault (pull request #15)
fix segfault

Approved-by: Andreas Suter
2024-06-18 06:18:14 +00:00
ext-mcfadd_r 8821112927 ignore all files generated from an in-repo build 2024-06-17 13:07:06 -03:00
ext-mcfadd_r 833171c712 write the fit results to an easy-to-read/parse yaml file
This patch adds routines for writing a comprehensive set of fit results (i.e., parameter values, parabolic errors, asymmetric errors, covariances, correlation coefficients, etc.) for an individual `.msr` file to an easy-to-read/parse `.yaml` file.

The main motivation for the code addition is to provide users with easy access to the fit's covariance matrix without the need for "extra" manual effort (e.g., parsing the contents of `MINUIT2.OUTPUT` or `MINUIT2.root`). The other fit quantities are also included for completeness.

Reading/accessing the output is trivial using, for example, the PyYAML Python library (https://github.com/yaml/pyyaml):

```python
import yaml

with open("2125_tf_histo.yaml", "r") as fh:
	results = yaml.load(fh, Loader=yaml.SafeLoader)

cov = results["covariance"]["Field_1"]["Sigma_1"]
```

Note: the naming conventions chosen for the blocks in the `.yaml` output closely follow those used by the iminuit Python library (https://github.com/scikit-hep/iminuit).
2024-06-17 12:51:04 -03:00
ext-mcfadd_r 61749b91c4 fix segfault
This patch provides a memory-safe alternative to the changes introduced in commit 418adfde67, which causes a segfault when the "batch mode" flag is required (i.e., for ascii/graphic export).

Note: the program name (i.e., argv[0]) has been added the list arguments passed to ROOT's TApplication. This ensures that the TApplication name matches that of the program (see https://github.com/root-project/root/blob/542b98b2ccca760fd83117b750b89d81b8e9b926/core/base/src/TApplication.cxx#L179-L180).
2024-06-17 10:52:14 -03:00
suter_a 3d92e2eefb add CPU info to the configure process. 2024-06-09 17:45:02 +02:00
suter_a b71dce9291 remove more accidently added file. 2024-06-08 16:39:57 +02:00
suter_a 1aa4ce0a99 remove accidentely added file. 2024-06-08 16:36:54 +02:00
suter_a 425ed02e22 update of the docu. 2024-06-08 09:23:36 +02:00
suter_a a36abfc461 updated version info, due to the macOS OpenMP support. 2024-06-08 09:17:05 +02:00
suter_a ccaba41868 modernize the way how to check/deal with OpenMP. This helps also on the macOS side. 2024-06-07 12:44:59 +02:00
suter_a 418adfde67 propagate only necessary root flags to TApplication. 2024-06-06 10:06:50 +02:00
suter_a 66df43c663 moved mupp examples form the mupp source destination to doc/examples. 2024-04-26 15:54:44 +02:00
suter_a 4a6885f55b update of the documentation. 2024-04-23 10:50:11 +02:00
suter_a 92b1aac7a6 got rid off some double brackets. 2024-04-20 18:13:09 +02:00
suter_a 26e25ce10b fixed a fruther bracket bug. 2024-04-20 17:39:18 +02:00
suter_a cedaabeb98 improved bracket handling in function string generation. 2024-04-20 09:40:04 +02:00
suter_a 032510fbcb update of the ChangeLog. 2024-04-19 12:44:43 +02:00
938 changed files with 74286 additions and 49580 deletions
Vendored
BIN
View File
Binary file not shown.
+45
View File
@@ -0,0 +1,45 @@
name: Build and Deploy Documentation
on:
push:
branches:
- root6
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
container:
image: gitea.psi.ch/images/alpine-jupyterbook
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install system dependencies
run: |
apk add doxygen graphviz
- name: Build musrfit-tech-docu
run: |
cd doc
mkdir technical
doxygen musrfit_dox.cfg
doxygen musredit_qt6_dox.cfg
doxygen mupp_qt6_dox.cfg
doxygen musrStep_qt6_dox.cfg
doxygen musrWiz_qt6_dox.cfg
- name: Configure Git
run: |
git config --global user.name "Gitea Actions"
git config --global user.email "actions@gitea.local"
- name: Push to gitea-pages branch
run: |
git checkout --orphan gitea-pages
git reset --hard
cp -r ./doc/technical/html/* .
git add .
git commit -m "Deploy site"
git push --verbose -f https://${{secrets.GITHUB_TOKEN}}@gitea.psi.ch/${{ github.repository }}.git gitea-pages
+2
View File
@@ -0,0 +1,2 @@
# ignore all files generated from an in-repo build
build/
+123 -31
View File
@@ -1,7 +1,19 @@
# - musrfit
cmake_minimum_required(VERSION 3.17)
project(musrfit VERSION 1.9.3 LANGUAGES C CXX)
# cmake: use BoostConfig.cmake instead of FindBoost
if (CMAKE_VERSION GREATER_EQUAL "3.3")
cmake_policy(SET CMP0167 NEW)
endif ()
project(musrfit VERSION 1.11.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_INSTALL_LIBDIR lib CACHE PATH "Object code libraries")
include(GNUInstallDirs)
#--- musrfit specific options -------------------------------------------------
option(nexus "build optional NeXus support. Needed for ISIS" OFF)
@@ -73,11 +85,6 @@ find_package(Git REQUIRED)
#--- check for ROOT -----------------------------------------------------------
find_package(ROOT 6.18 REQUIRED COMPONENTS Gui MathMore Minuit2 XMLParser)
if (ROOT_mathmore_FOUND)
execute_process(COMMAND root-config --bindir OUTPUT_VARIABLE ROOT_BINDIR)
string(STRIP ${ROOT_BINDIR} ROOT_BINDIR)
execute_process(COMMAND root-config --version OUTPUT_VARIABLE ROOT_VERSION)
string(STRIP ${ROOT_VERSION} ROOT_VERSION)
message("-- Found ROOT: ${ROOT_BINDIR} (found version: ${ROOT_VERSION})")
#---Define useful ROOT functions and macros (e.g. ROOT_GENERATE_DICTIONARY)
include(${ROOT_USE_FILE})
endif (ROOT_mathmore_FOUND)
@@ -92,11 +99,14 @@ endif ()
set(ROOT_GRTEQ_24 ${ROOT_GRTEQ_24} CACHE INTERNAL "ROOT Version check")
#--- check for boost ----------------------------------------------------------
find_package(Boost REQUIRED
COMPONENTS
system
filesystem
)
find_package(Boost QUIET)
if (Boost_VERSION VERSION_GREATER_EQUAL "1.89")
find_package(Boost REQUIRED COMPONENTS filesystem)
set(BOOST_LINK_LIBS Boost::filesystem)
else (Boost_VERSION VERSION_GREATER_EQUAL "1.89")
find_package(Boost REQUIRED COMPONENTS system filesystem)
set(BOOST_LINK_LIBS Boost::filesystem Boost::system)
endif (Boost_VERSION VERSION_GREATER_EQUAL "1.89")
message(STATUS "Boost libs: ${Boost_LIBRARIES}")
#--- check for gsl ------------------------------------------------------------
@@ -109,13 +119,13 @@ find_package(FFTW3 REQUIRED)
find_package(LibXml2 REQUIRED)
#--- check for OpenMP ---------------------------------------------------------
if (try_OpenMP AND NOT APPLE)
if (try_OpenMP)
find_package(OpenMP)
if (OpenMP_FOUND)
add_definitions(-DHAVE_GOMP)
if (OpenMP_CXX_FOUND)
add_compile_definitions(HAVE_GOMP)
set(HAVE_GOMP 1 CACHE INTERNAL "Have GOMP")
endif (OpenMP_FOUND)
endif (try_OpenMP AND NOT APPLE)
endif (OpenMP_CXX_FOUND)
endif (try_OpenMP)
#--- check for Qt -------------------------------------------------------------
if (qt_based_tools)
@@ -198,12 +208,38 @@ if (qt_based_tools)
endif (qt_version STREQUAL 3)
endif (qt_based_tools)
#--- if NeXus check also for HDF4, HDF5, and MXML -----------------------------
#--- if NeXus check also for HDF4 (optional), HDF5 ----------------------------
if (nexus)
find_package(HDF5 COMPONENTS CXX REQUIRED )
find_package(HDF4 REQUIRED)
find_package(NEXUS REQUIRED)
add_definitions(-DPNEXUS_ENABLED)
find_package(HDF5 COMPONENTS CXX REQUIRED)
if (HAVE_HDF4)
#--- check for HDF4 -----------------------------------------------------------
# Find HDF4 manually (pkg-config often doesn't have hdf4)
find_path(HDF4_INCLUDE_DIR
NAMES mfhdf.h
PATH_SUFFIXES hdf
)
find_library(HDF4_DF_LIBRARY
NAMES df libdf
)
find_library(HDF4_MFHDF_LIBRARY
NAMES mfhdf libmfhdf
)
if (HDF4_INCLUDE_DIR AND HDF4_DF_LIBRARY AND HDF4_MFHDF_LIBRARY)
set(HDF4_FOUND TRUE)
set(HDF4_INCLUDE_DIRS ${HDF4_INCLUDE_DIR})
set(HDF4_LIBRARIES ${HDF4_MFHDF_LIBRARY} ${HDF4_DF_LIBRARY})
message(STATUS "Found HDF4: ${HDF4_INCLUDE_DIR}")
message(STATUS " HDF4 libraries: ${HDF4_LIBRARIES}")
else()
message(FATAL_ERROR "HDF4 library not found. Please install libhdf4-dev or hdf-devel")
endif()
add_compile_definitions(HAVE_HDF4)
endif (HAVE_HDF4)
add_compile_definitions(PNEXUS_ENABLED)
endif (nexus)
#--- check for Cuba lib if BMWlibs are enabled --------------------------------
@@ -222,6 +258,21 @@ else ()
set(IS_GIT_REPO 0)
endif ()
#--- start create git-revision.h ----------------------------------------------
if (IS_GIT_REPO)
add_custom_target(git_revision ALL
COMMAND sh ${CMAKE_SOURCE_DIR}/src/git_revision.sh ${CMAKE_BINARY_DIR}/src
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Checking git revision"
)
set(HAVE_GIT_REV_H "-DHAVE_GIT_REV_H")
else (IS_GIT_REPO)
set(HAVE_GIT_REV_H "")
endif (IS_GIT_REPO)
#--- end create git-revision.h ------------------------------------------------
#--- rpath related things -----------------------------------------------------
# use, i.e. don't skip the full RPATH for the build tree
set(CMAKE_SKIP_BUILD_RPATH FALSE)
@@ -230,25 +281,33 @@ set(CMAKE_SKIP_BUILD_RPATH FALSE)
# (but later on when installing)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
endif("${isSystemDir}" STREQUAL "-1")
set(rpath ${CMAKE_INSTALL_RPATH})
string(APPEND rpath ";/usr/local/lib")
set(CMAKE_INSTALL_RPATH "${rpath}")
if (UNIX)
set(rpath ${CMAKE_INSTALL_RPATH})
string(APPEND rpath ";/usr/local/lib")
set(CMAKE_INSTALL_RPATH "${rpath}")
endif ()
#--- propagate to the sub-directories -----------------------------------------
add_subdirectory(src)
#--- testing ------------------------------------------------------------------
enable_testing()
add_subdirectory(tests)
#--- write summary of the installation
cmake_host_system_information(RESULT PROCESSOR QUERY PROCESSOR_DESCRIPTION)
message("")
message("|-----------------------------------------------------------------------|")
message("| |")
@@ -256,8 +315,9 @@ message("| Summary
message("| |")
message("|-----------------------------------------------------------------------|")
message("")
message(" System: ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR} - ${CMAKE_HOST_SYSTEM_VERSION}")
message(" -------")
message(" System: ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR} - ${CMAKE_HOST_SYSTEM_VERSION}")
message(" Processor: ${PROCESSOR} (${CMAKE_SYSTEM_PROCESSOR})")
message(" ----------")
message("")
message(" musrfit Version: ${musrfit_VERSION}")
message(" ----------------")
@@ -283,9 +343,12 @@ endif (OpenMP_FOUND)
if (nexus)
message("")
message(" HDF4 found in ${HDF4_INCLUDE_DIRS}")
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)
message("")
@@ -381,6 +444,35 @@ message("")
message("-------------------------------------------------------------------------")
message("")
#--- generate and install cmake package config files --------------------------
include(CMakePackageConfigHelpers)
configure_package_config_file(
${CMAKE_SOURCE_DIR}/cmake/musrfitConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/musrfitConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/musrfit
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/musrfitConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)
install(
EXPORT musrfitTargets
FILE musrfitTargets.cmake
NAMESPACE musrfit::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/musrfit
)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/musrfitConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/musrfitConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/musrfit
)
#--- cpack specific info ......................................................
file(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} PROJECT_SOURCE_DIR_NATIVE)
file(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} PROJECT_BINARY_DIR_NATIVE)
+57 -2
View File
@@ -6,11 +6,66 @@ The ChangeLog will describe feature changes rather than coding detail changes.
For detailed information about changes have a look here:
https://gitlab.psi.ch/nemu/musrfit/activity
https://gitea.psi.ch/LMU/musrfit
or
https://bitbucket.org/muonspin/musrfit/commits/all
https://bitbucket.org/muonspin/musrfit
Release of V1.11.0, 2026/05/28
==============================
add to the mupp/Qt6 version the option to handle variables not only via the
Spirit/X3 interface, but also via Python3. It requires that ROOT is compiled
with Python support. For details see the musrfit-manual section mupp.
Release of V1.10.0, 2026/02/21
==============================
ditch the use of the NeXus lib. NeXus files are now directly read via hdf4/5
add deadtime correction of pulsed sources, assuming the relevant parameters are
present in the file.
Release of V1.9.10, 2026/01/16
==============================
function handling lifted from boost/spirit classic/qi to x3
Release of V1.9.9, 2025/06/08
=============================
add THEORY functions for local Gaussian / global Lorentzian, and a simple F-mu-F function.
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
=============================
fix of function string generation from AST.
Release of V1.9.2, 2023/10/25
=============================
+3 -3
View File
@@ -18,7 +18,7 @@ directory and
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$ROOTSYS (or where ever musrfit should be installed)
cmake --build ./ --clean-first
make install (as superuser -- maybe)
cmake --install ./ (as superuser -- maybe)
/sbin/ldconfig (as superuser)
cmake configuration allows a couple of switches. For details check the documentation at
@@ -31,7 +31,7 @@ An example with NeXus support and BMWlibs needed would look like this
cd build
cmake ../ -Dnexus=1 -DBMWlibs=1 -DCMAKE_INSTALL_PREFIX=$ROOTSYS
cmake --build ./ --clean-first
make install (as superuser -- maybe)
cmake --install ./ (as superuser -- maybe)
/sbin/ldconfig (as superuser)
In the optimal case everything is ready to be used ;-)
@@ -43,7 +43,7 @@ In the optimal case everything is ready to be used ;-)
More information regarding software requirements and the installation process
can be found here:
http://lmu.web.psi.ch/musrfit/user/MUSR/MusrFitSetup.html
https://lmu.pages.psi.ch/musrfit-docu/setup-standard.html
#---------------------------------------------------------------------
# this is the end ...
+1 -1
View File
@@ -32,7 +32,7 @@ Documentation
For a more exhaustive user documentation see:
http://lmu.web.psi.ch/musrfit/user/html/index.html
https://lmu.pages.psi.ch/musrfit-docu/index.html
Contacts
+1 -1
View File
@@ -26,7 +26,7 @@ Currently it allows the following:
For a more exhaustive user documentation see:
http://lmu.web.psi.ch/musrfit/user/html/index.html
https://lmu.pages.psi.ch/musrfit-docu/index.html
### Contacts ###
+1 -1
View File
@@ -17,7 +17,7 @@ set (CPACK_RESOURCE_FILE_LICENSE "@PROJECT_SOURCE_DIR@/COPYING")
set (CPACK_RESOURCE_FILE_README "@PROJECT_SOURCE_DIR@/README.md")
set (CPACK_RESOURCE_FILE_WELCOME "@PROJECT_SOURCE_DIR@/cmake/welcome.txt")
set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "@CMAKE_INSTALL_PREFIX@;@CMAKE_INSTALL_PREFIX@/bin;@CMAKE_INSTALL_PREFIX@/include;@CMAKE_INSTALL_PREFIX@/share;@CMAKE_INSTALL_PREFIX@/lib64;@CMAKE_INSTALL_PREFIX@/lib;@CMAKE_INSTALL_PREFIX@/pkgconfig")
set (CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "@CMAKE_INSTALL_PREFIX@;@CMAKE_INSTALL_PREFIX@/bin;@CMAKE_INSTALL_PREFIX@/include;@CMAKE_INSTALL_PREFIX@/share;@CMAKE_INSTALL_PREFIX@/lib64;@CMAKE_INSTALL_PREFIX@/lib;@CMAKE_INSTALL_PREFIX@/pkgconfig;@CMAKE_INSTALL_PREFIX@/share/applications;@CMAKE_INSTALL_PREFIX@/share/icons;@CMAKE_INSTALL_PREFIX@/share/icons/hicolor;@CMAKE_INSTALL_PREFIX@/share/icons/hicolor/48x48;@CMAKE_INSTALL_PREFIX@/share/icons/hicolor/48x48/apps")
# we do not have any absolute paths, so do not need DESTDIR
set (CPACK_SET_DESTDIR "OFF")
+1 -3
View File
@@ -74,9 +74,7 @@ endfunction()
#as35 return()
#as35 endif()
find_path(FFTW3_INCLUDE NAMES fftw3.h
HINTS "/usr/include" "/opt/local/include" "/app/include"
)
find_path(FFTW3_INCLUDE NAMES fftw3.h)
find_library(FFTW3_LIBRARY fftw3)
find_library(FFTW3_OMP_LIBRARY fftw3_omp)
-97
View File
@@ -1,97 +0,0 @@
## Process this file with cmake
#=============================================================================
# NeXus - Neutron & X-ray Common Data Format
#
# CMakeLists for building the NeXus library and applications.
#
# Copyright (C) 2011 Stephen Rankin
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This library is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
# for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# For further information, see <http://www.nexusformat.org>
#
#
#=============================================================================
#------------------------------------------------------------------------------
# find the runtime binaries of the HDF4 library
#------------------------------------------------------------------------------
find_library(HDF4_DF_LIBRARY NAMES df hdf
HINTS ENV HDF4_ROOT
PATH_SUFFIXES hdf)
if(HDF4_DF_LIBRARY MATCHES HDF4_DF_LIBRARY-NOTFOUND)
message(FATAL_ERROR "Could not find HDF4 DF library!")
else()
get_filename_component(HDF4_LIBRARY_DIRS ${HDF4_DF_LIBRARY} PATH)
message(STATUS "Found HDF4 DF library: ${HDF4_DF_LIBRARY}")
message(STATUS "HDF4 libary path: ${HDF4_LIBRARY_DIRS}")
endif()
find_library(HDF4_MFHDF_LIBRARY NAMES mfhdf
HINTS ENV HDF4_ROOT
PATH_SUFFIXES hdf)
if(HDF4_MFHDF_LIBRARY MATCHES HDF4_MFHDF_LIBRARY-NOTFOUND)
message(FATAL_ERROR "Could not find HDF5 MFHDF library!")
else()
message(STATUS "Found HDF4 MFHDF library: ${HDF4_MFHDF_LIBRARY}")
endif()
#------------------------------------------------------------------------------
# find the HDF4 header file
#------------------------------------------------------------------------------
find_path(HDF4_INCLUDE_DIRS mfhdf.h
HINTS ENV HDF4_ROOT
PATH_SUFFIXES hdf)
if(HDF4_INCLUDE_DIRS MATCHES HDF4_INCLUDE_DIRS-NOTFOUND)
message(FATAL_ERROR "Could not find HDF4 header files")
else()
message(STATUS "Found HDF4 header files in: ${HDF4_INCLUDE_DIRS}")
endif()
#------------------------------------------------------------------------------
# search for additional packages required to link against HDF4
#------------------------------------------------------------------------------
find_package(JPEG REQUIRED)
#------------------------------------------------------------------------------
# add libraries to the link list for NAPI
#------------------------------------------------------------------------------
get_filename_component(LIB_EXT ${HDF4_DF_LIBRARY} EXT)
if(LIB_EXT MATCHES .a)
message(STATUS "HDF4 DF library is static")
list(APPEND NAPI_LINK_LIBS "-Wl,-whole-archive" ${HDF4_DF_LIBRARY} "-Wl,-no-whole-archive")
else()
list(APPEND NAPI_LINK_LIBS ${HDF4_DF_LIBRARY})
endif()
get_filename_component(LIB_EXT ${HDF4_MFHDF_LIBRARY} EXT)
if(LIB_EXT MATCHES .a)
message(STATUS "HDF4 MFHDF library is static")
list(APPEND NAPI_LINK_LIBS "-Wl,-whole-archive" ${HDF4_MFHDF_LIBRARY} "-Wl,-no-whole-archive")
else()
list(APPEND NAPI_LINK_LIBS ${HDF4_MFHDF_LIBRARY})
endif()
list(APPEND NAPI_LINK_LIBS jpeg)
include_directories ( SYSTEM ${HDF4_INCLUDE_DIRS} )
link_directories(${HDF4_LIBRARY_DIRS})
-34
View File
@@ -1,34 +0,0 @@
# - find MXML
# find the MXML lib and includes
# This module defines
# LIBMXML_INCLUDE_DIR, where to find mxml.h
# LIBMXML_LIBRARY, library to link against
# LIBMXML_FOUND, if false, do not try to use the MXML lib
find_path(LIBMXML_INCLUDE_DIR mxml.h
HINT "/usr/include"
)
# find position of mxml.h from the end
string(FIND "${LIBMXML_INCLUDE_DIR}" "/mxml.h" pos REVERSE)
# truncate the string
string(SUBSTRING "${LIBMXML_INCLUDE_DIR}" 0 ${pos} substr)
set(LIBMXML_INCLUDE_DIR ${substr})
unset(substr)
find_library(LIBMXML_LIBRARY mxml)
# get version string
# currently do not know from where to get it automatically
# handle the QUIETLY and REQUIRED arguments and set LIBMXML_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(MXML
REQUIRED_VARS LIBMXML_LIBRARY LIBMXML_INCLUDE_DIR)
if (NOT LIBMXML_FOUND)
unset(LIBMXML_LIBRARY)
endif()
mark_as_advanced(LIBMXML_INCLUDE_DIR LIBMXML_LIBRARY)
-45
View File
@@ -1,45 +0,0 @@
# - Find NeXus library
# Find the native NEXUS includes and library
# This module defines
# NEXUS_INCLUDE_DIR, where to find NeXus.h, etc.
# NEXUS_LIBRARY, library to link against to use NEXUS
# NEXUS_FOUND, if false, do not try to use NEXUS.
find_path(NEXUS_INCLUDE_DIR napi.h
HINTS "/usr/local/include" "/opt/nexus/include" "/usr/local/include/nexus"
)
# find position of napi.h from the end
string(FIND "${NEXUS_INCLUDE_DIR}" "/napi.h" pos REVERSE)
# truncate the string
string(SUBSTRING "${NEXUS_INCLUDE_DIR}" 0 ${pos} substr)
set(NEXUS_INCLUDE_DIR ${substr})
unset(substr)
find_library(NEXUS_LIBRARY NeXus
HINTS "/usr/lib" "/usr/lib64" "/usr/local/lib" "/usr/local/lib64" "/opt/nexus/lib")
# get version string
if (NEXUS_INCLUDE_DIR AND EXISTS ${NEXUS_INCLUDE_DIR}/napi.h)
file(STRINGS "${NEXUS_INCLUDE_DIR}/napi.h" NEXUS_version_str
REGEX "^#define[\t ]+NEXUS_VERSION[\t ].*")
string(REGEX REPLACE "^#define[\t ]+NEXUS_VERSION[\t ]+\"([^\"]*).*"
"\\1" NEXUS_VERSION_STRING "${NEXUS_version_str}")
unset(NEXUS_version_str)
endif()
# handle the QUIETLY and REQUIRED arguments and set NEXUS_FOUND to TRUE if
# all listed variables are TRUE
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NEXUS
REQUIRED_VARS NEXUS_LIBRARY NEXUS_INCLUDE_DIR
VERSION_VAR NEXUS_VERSION_STRING)
if (NOT NEXUS_FOUND)
unset(NEXUS_LIBRARY)
endif()
mark_as_advanced(NEXUS_INCLUDE_DIR NEXUS_LIBRARY)
@@ -1,30 +0,0 @@
# configure_musrfit_version_file.cmake.in:
set(SRC_DIR "@CMAKE_SOURCE_DIR@")
set(BIN_DIR "@CMAKE_CURRENT_BINARY_DIR@")
# Set variables
set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
set(MUSRFIT_VERSION "@MUSRFIT_VERSION@")
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND git log -1 --pretty="%h, %ci"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_CURRENT_SHA1
OUTPUT_STRIP_TRAILING_WHITESPACE
)
configure_file(
${SRC_DIR}/cmake/git-revision.h.in
${BIN_DIR}/git-revision.h
@ONLY
)
# EOF
+13
View File
@@ -0,0 +1,13 @@
[Desktop Entry]
Name=MuSRedit
Comment=editor and launcher for the musrfit data analysis
GenericName=musrfit editor
Exec=musredit %F
Icon=musredit
Terminal=false
Type=Application
StartupWMClass=MuSRedit
Categories=Science;DataEditing;
MimeType=text/plain;
Keywords=muSR;fitting;musrfit;physics;muon;
StartupNotify=true
+2
View File
@@ -91,6 +91,8 @@ rm -rf $RPM_BUILD_ROOT
%_prefix/lib64/*
%license COPYING
%doc %_prefix/share/doc/musrfit
%{_datadir}/applications/musredit.desktop
%{_datadir}/icons/hicolor/48x48/apps/musredit.png
+15
View File
@@ -0,0 +1,15 @@
# musrfitConfig.cmake.in
# CMake package configuration template for musrfit.
# Generated by configure_package_config_file().
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(ROOT REQUIRED COMPONENTS Gui MathMore Minuit2 XMLParser)
find_dependency(Boost REQUIRED COMPONENTS filesystem)
find_dependency(GSL REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/musrfitTargets.cmake")
check_required_components(musrfit)
+7
View File
@@ -10,3 +10,10 @@ then
fi
/sbin/ldconfig
#update .desktop and icons
if command -v update-desktop-database &>/dev/null; then
update-desktop-database -q /usr/share/applications || true
fi
if command -v gtk-update-icon-cache &>/dev/null; then
gtk-update-icon-cache -q -t /usr/share/icons/hicolor || true
fi
+8
View File
@@ -3,3 +3,11 @@
echo " >> musrfit post uninstall script started ..."
/sbin/ldconfig
#update .desktop and icons
if command -v update-desktop-database &>/dev/null; then
update-desktop-database -q /usr/share/applications || true
fi
if command -v gtk-update-icon-cache &>/dev/null; then
gtk-update-icon-cache -q -t /usr/share/icons/hicolor || true
fi
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -8,7 +8,7 @@
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2024 by Andreas Suter *
* Copyright (C) 2007-2026 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
+1 -1
View File
@@ -8,7 +8,7 @@
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2021 by Andreas Suter *
* Copyright (C) 2007-2026 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More