Commit Graph

2678 Commits

Author SHA1 Message Date
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>
v1.11.0
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
v1.10.0
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