234 Commits
Author SHA1 Message Date
suter_a 9229d2ca65 mupp_plot: show its own window/dock icon instead of the generic ROOT one.
Like musrFT and musrt0: set a compiled-in xpm icon (rendered from
mupp-plain.svg) and the class hint "mupp_plot" on the TRootCanvas, and on
Linux install a matching .desktop file and 48x48 icon to MUSRFIT_XDG_DATA_DIR,
refreshing an existing gtk icon cache. Done for the Qt6 and Qt5 plotter.
2026-10-28 11:17:05 +01:00
suter_aandClaude Opus 5.5 875074432c musrview: pick the file of "Export data" in the openui5 "Save as" dialog
"Export data" asked for the file name in a plain prompt, proposing a fixed
musrview_export.dat relative to the current working directory.

It now opens the same ROOT openui5 file dialog (RFileDialog) as "Save
graphics"; the page code of the dialog serves both toolbar entries. It
proposes <msr-base>_<plotNo>[_F].dat in the directory exported to last
(exportname:/EXPORTNAME:, NextExportFileName()), counted up until the name
does not exist yet. Its file type list offers .dat, .txt and any file; typing
an unknown extension selects the latter so that none gets appended. The file
name of 'export:' is now percent encoded as the one of 'save:'. If the dialog
is not available, the prompt is used as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:01:46 +02:00
suter_aandClaude Opus 5.5 fd3a684b6c musrview: pick the file of "Save graphics" in an openui5 "Save as" dialog
"Save graphics" used to write a file with a generated name into the current
working directory and hand it to the browser as a download, the format being
chosen in a separate selector of the toolbar.

It now opens ROOT's openui5 file dialog (RFileDialog), embedded as a channel
of the musrview window, in which the location and the name of the file are
chosen. Its file type list (png, pdf, svg, eps, gif, jpg, xpm, root) selects
the graphics format and replaces the toolbar selector; typing a name with
another supported extension selects that type rather than getting the
selected one appended. The dialog starts in the directory saved to last with
a name which does not exist yet, and asks before overwriting a file.

The dialog browses the machine musrview runs on, hence the file is written
there directly (SaveGraphicsAs()) instead of being served as a download, and
the "currentdir/" location of the web window is no longer opened. openui5 is
loaded on the first save only; if it, or libROOTBrowserv7 on the server side,
is not available, a plain prompt asks for the file name instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 20:36:21 +02:00
suter_aandClaude Opus 5 8ad77694d7 musrview: let "Save graphics" mirror the window instead of a fixed layout
The interactive export always produced the classic 800x600 layout, so neither
the size of the musrview window nor the proportions the user had dragged the
'Fit parameters', 'Theory' and 'RUN INFO' panels to showed up in the saved
graphics.

The page now measures its current view -- window size without toolbar and
status bar, the height of the title and the run info, the width of the
parameter/theory column, the split between the two, plus the font size of the
panels -- and hands it over with the 'save:' message. A boundary which is a
splitter bar on screen is reported as the bar's centre line, since the export
draws the blocks edge to edge.

The C++ side takes that as the new ExportGeometry, which replaces the hard
wired fractions in RenderGraphics(). With a font size given, the panels keep
the size the text has on screen (with the line spacing of the HTML panels)
rather than TPaveText/TLegend scaling the text up to the pave: a larger window
then shows more text instead of bigger text, as the HTML panels do. The text
is only ever scaled down, as far as the pave needs it in height and in width,
the latter measured the way TPaveText measures it.

ExportGeometry's defaults are exactly the previous layout, hence the
--png/--pdf/... batch export, which has no window to take anything over from,
is unchanged -- bit for bit, the musrview_check reference images included.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-04 20:10:36 +02:00
suter_aandClaude Opus 5 2cb76879ff musrview: remove PMusrCanvas
PMusrCanvas was the TCanvas based front end of musrview. Since the ROOT7
rewrite it is no longer part of the build, so drop the class, its header and its
LinkDef rather than leave dead code behind.

Also update the comments in PRunListCollection, PRunMuMinus, PRunSingleHisto
and musrt0 which still named the class, and repair the header comment of
PFourierCanvasLinkDef.h, which carried the file name of the LinkDef it had been
copied from.

Clean rebuild, tests 87/87.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H6YiUNBTMDX9uA3Ts1w2nW
2026-09-11 14:49:04 +02:00
suter_aandClaude Opus 5 3c043af4db musrview: rewrite on top of the ROOT7 web graphics
musrview is now a client/server application following the ROOT7 architecture
(S. Linev et al., J. Phys. Conf. Ser. 1525 (2020) 012092): the C++ side holds
the data, an ROOT::RWebWindow ships it as JSON to a JSROOT page which renders
it. This addresses three long standing problems.

The fit parameter, theory and run info blocks were TPaveText/TLegend objects
which scaled their content down until it became unreadable as soon as a fit had
many parameters. They are HTML panels now: fixed font size, own scrollbar, and
each of them can be shown and hidden individually. The run info keeps listing
every run with the very symbol it is plotted with.

The command keys ('d', 'f', 'a', ...) were executed even while a text or latex
label was being typed into the canvas. The page checks whether a text input has
the focus, so typing a 'd' inserts a 'd'.

The plot views were encoded in a set of entangled variables plus a static one
which leaked state between canvases. PMusrViewMode describes them as four
orthogonal properties - domain, Fourier component, difference including whether
it is formed before or after the transform, and average - so that combinations
such as 'Fourier-difference-average' are well defined. PMusrViewModel::GetCurves()
is the single place which maps a view mode onto histograms; plotting and ascii
export both go through it and can no longer disagree, which removed some 700
lines of duplicated view logic from the export.

New classes, namespace musrview:
  PMusrViewMode   the decoupled view state, free of ROOT and GUI, unit tested
  PMusrViewModel  the GUI-free data layer, physics taken over unchanged
  PMusrWebCanvas  the web front end and the graphics export

Further notes:
- The interactive path builds no TCanvas at all, the spectra travel as a TList
  of drawables. A TCanvas creates and maps its window already in the
  constructor, which would put an empty ROOT canvas next to the musrview window.
- The graphics export keeps the classic pad layout and its 800x600 size and
  runs with ROOT in batch mode, so batch operation needs no browser.
- The window opens at 1200x900, since toolbar and panels take their share.
- Non-muSR axis labels are taken from the data file again, and ROOT/TLatex
  markup is rendered in the HTML panels as well.
- musrview needs a ROOT built with -Droot7=ON -Dwebgui=ON, plus -Dqt6web=ON for
  the embedded window (--embedded, the default). --browser uses the standard
  browser of the system, --browser=server only prints the URL.
- PMusrCanvas is no longer part of the build, the files are kept for reference.

Tests: 87/87 pass, among them a new unit test of the view modes and a new
musrview test covering the non-muSR fit type.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H6YiUNBTMDX9uA3Ts1w2nW
2026-09-11 14:42:55 +02:00
suter_a 5e139a219c updating the ChangeLog.
Build and Deploy Documentation / build-and-deploy (push) Successful in 30s
2026-08-25 11:12:48 +02:00
suter_aandClaude Opus 5 0577d5d211 fix dead time correction for Red/Green (period) NeXus IDF V2 data
Build and Deploy Documentation / build-and-deploy (push) Successful in 34s
Since the Red/Green mode handling was added for NeXus HDF5 IDF V2, the
histogram numbers of the routed histograms carry the period offset, i.e.
histoNo = period*10000 + histo. PRunBase::DeadTimeCorrection() was still
addressing the dead time parameter vector with 'histoNo-1', hence for any
period > 0 it read far beyond the end of the vector. The garbage picked up
there scaled the counts, so every invocation of musrfit gave a different
(sometimes nan) result for the affected run blocks.

The dead time parameters are stored contiguously, period-by-period, and
therefore need to be addressed as period*noOfHistosPerPeriod + histo - 1.
Introduce PERIOD_HISTO_OFFSET for the period encoding, keep the number of
histos per period in PRawRunData, and add PRawRunData::GetDeadTimeParam(histoNo)
which does the mapping and guards against out-of-range access.

Cross-checked against the HDF4 IDF V1 twin of the same run, where the two
periods are flattened into histos 1-192: both readers now yield bit-identical
chisq, with and without dead time correction.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 11:10:53 +02:00
suter_a ead8c4b17a move on to v1.12.0 - refactoring.
Build and Deploy Documentation / build-and-deploy (push) Successful in 26s
2026-07-22 08:25:19 +02:00
suter_a 1f4fa54928 add Red/Green mode handling for NeXus HDF5 IDF V2. See also the musrfit docu.
Build and Deploy Documentation / build-and-deploy (push) Successful in 32s
2026-07-15 07:54:42 +02:00
suter_a f730385397 minor version increase, since this is relevant for the newest macOS 26.5.1 2026-06-27 15:28:05 +02:00
suter_a e90590b908 allow to set the number of threads for fitting directly via the preferences of musredit. Qt5 ui not yet adopted.
Build and Deploy Documentation / build-and-deploy (push) Successful in 31s
2026-06-07 11:03: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 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 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 189f95cb04 Update ChangeLog
Build and Deploy Documentation / build-and-deploy (push) Successful in 18s
2025-10-15 08:00:50 +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 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 ebdb0feb7f path-run-name in RUN block of the msr-file can now handle spaces. 2025-01-18 13:35:08 +01:00
suter_a 458913ca31 update of the ChangeLog 2024-12-03 18:13:02 +01:00
suter_a 032510fbcb update of the ChangeLog. 2024-04-19 12:44:43 +02:00
suter_a 6f521668c0 increased main version to 1.9.2, libPMusr to 1.4.0, and mupp to 1.1.0. 2023-10-25 08:46:02 +02:00
suter_a 420b301ac5 dump_header can dump #counts for each detector. Currently only for MusrRoot. 2023-05-16 14:21:33 +02:00
suter_a 832450d183 updated ChangeLog. 2023-02-17 08:32:41 +01:00
suter_a 0f7e22f363 updated the ChangeLog. 2023-01-05 09:31:38 +01:00
suter_a e0ec00deab update ChangeLog 2022-05-29 11:31:41 +02:00
suter_a 7486637998 revision of ChangeLog. 2021-11-05 14:24:38 +01:00
suter_a a0dd51e1b7 updated the ChangeLog. 2021-06-16 19:57:00 +02:00
suter_a 3b24d512be increased the version number. 2021-06-01 17:31:37 +02:00
suter_a 93c537ba22 update of ChangeLog. Increase version number. 2021-04-16 20:53:56 +02:00
suter_a cb0e8d2e65 update of the ChangeLog. 2021-03-30 15:43:26 +02:00
suter_a 5dcc962351 add first Qt6 version of musredit, mupp, etc. 2021-01-22 22:04:11 +01:00
suter_a 66f3b48e2a musrview gets the new feature: calculate theory points only at data points. 2020-08-29 11:15:02 +02:00
suter_a 0e2d880249 A single asymmetry plot allows to toggle the color of the theory function line by the key 't'. 2020-07-27 18:36:27 +02:00
suter_a 7b6180a688 Functions can now not only operate on parameters and maps but also on meta information
obtained from the data files. Currently the following meta information can be accessed
if available:
field in (G): B or b
energy in (keV): En or en
temperature in (K): since some data files contain a vector of temperature, they have
                    to be accessed with an index, like T0 or t0, etc.
2020-06-17 19:31:31 +02:00
suter_a 58461bf013 updated the docu and adopted the ChangLog 2020-05-25 16:27:18 +02:00
suter_a cf0ab74ba7 release new version 1.6.0 2020-05-15 21:19:26 +02:00
suter_a e9247ed3d5 increment version. 2020-02-03 21:03:45 +01:00
suter_a 25bfa1f66b update of the docu. 2019-05-15 10:14:39 +02:00
suter_a dbfeeddf3f Remove automake support
Since the cmake tool chain is now stable, the automake tool chain is removed from musrfit.
This makes documentation and code less cluttered.
2019-03-08 12:50:41 +01:00
suter_a c4d52df3bc since my automake structure is now ready for rpmbuild, the version number is increased. 2017-10-26 15:47:35 +02:00
suter_a 450a5c9d1b release of V.1.0.0 2017-05-18 13:32:23 +02:00
suter_a 454e6771e2 refer to the repos for the changes rather than updating ChangeLog. 2017-02-08 09:48:51 +01:00
suter_a 421fe729f8 resolved merge conflict. 2016-12-19 12:13:35 +01:00
suter_a dce31426a7 increased the version number form 0.17.0 to 0.18.0 2016-12-18 10:43:53 +01:00
suter_a 333eaea7f1 Merge branch 'master' into root6 2016-08-25 13:38:57 +02:00
suter_a 6585032df0 in musrview it is now possible to enable/disable a crosshair cursor by pressing 'c'. 2016-08-24 15:37:14 +02:00
suter_a e95bee2c41 Merge branch 'master' into root6 2016-08-10 12:49:24 +02:00
suter_a 08848e68a8 drop NeXus support for Version < 4.4 2016-08-10 10:28:31 +02:00
suter_a f93ef114e0 merge master 2016-08-09 14:05:40 +02:00