Skip to content

[DRAFT] Union logger transformations#2426

Draft
mads-bertelsen wants to merge 5 commits intomainfrom
union_logger_transformations
Draft

[DRAFT] Union logger transformations#2426
mads-bertelsen wants to merge 5 commits intomainfrom
union_logger_transformations

Conversation

@mads-bertelsen
Copy link
Copy Markdown
Contributor

@mads-bertelsen mads-bertelsen commented Apr 29, 2026

Free-form text area

Please describe what your PR is adding in terms of features or bugfixes:

In the Union system, loggers and absorption loggers handled coordinate transformation from the master to their local coordinate system in different ways. That has been streamlined so they both perform the transformation in the logger, as the transformation is not always necessary which saves computation time (think logging just the time).
Fixed issue the caused loggers to not account for rotation.
Fixed issue that prevented conditional on absorption loggers in certain circumstances.

Updated all tests of loggers and absorption loggers to include:

  • Union master with weird coordinates making the transformation harder, wrong transformation would result in 0 intensity
  • Included conditional component for all such tests, activating a very different code path in each, and provided test for that

Many tests lacked examples, this has been rectified in all cases except where only event output is possible. One component lacked a test, and it was added.

Still todo: Check linting and other pull request requirements.


Development OS / boundary conditions

Please describe what OS you developed and tested your additions on, and if any special dependencies are required:


PR Checklist for contributing to McStas/McXtrace

For a coherent and useful contribution to McStas/McXtrace, please fill in relevant parts of the checklist:

  • My contribution includes patches to an existing component file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the component (please attach as screenshot in comments!)
    • I have ensured that basic use of the component is OK (e.g. an instrument using it compiles?)
    • I have used the mctest utility to test one or more instruments making use of the component (please attach mcviewtest report as screenshot in comments)
    • I have used the mccode-clangformat tool to apply the standard McCode component indentation scheme
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
  • My contribution includes patches to an existing instrument file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the instrument (please attach as screenshot in comments!)
    • I have used the mctest utility to test the instrument (please attach mcviewtest report as screenshot in comments)
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
  • My contribution includes a new component file

    • I have ensured that naming of parameters are in the style of existing components. (Please check the McStas or McXtrace NOMENCLATURE docs.)
    • I have ensured that component parameters are in the usually units of McStas or McXtrace (SI + neutron/x-ray 'usual' units)
    • I have used the mcdoc utility and rendered a reasonable documentation page for the component (please attach as screenshot in comments!)
    • I have ensured that basic use of the component is OK (e.g. an instrument using it compiles?)
    • I have included a corresponding example instrument and will fill in the new instrument section below
    • I have used the mccode-clangformat tool to apply the standard McCode component indentation scheme
    • My new component is added within the contrib component category
  • My contribution includes a new instrument file

    • I have used the mcdoc utility and rendered a reasonable documentation page for the instrument (please attach as screenshot in comments!)
    • I have ensured that basic use of the instrument is OK (e.g. it compiles?)
    • ... and provided reasonable default parameters in that instrument that produce reasonable output
    • ... and maybe even added a %Example: line to describe expected behaviour
    • I have used the mcrun --c-lint "linter" and followed advice to remove most / all warnings that are raised
    • My new instrument is added within the examples hierarchy in a folder in the style of examples/ESS/New_stuff/New_stuff.instr
    • My new instrument has a new, unique filename, not clashing with existing example instruments
    • My new instrument requires a data/input file. If the datafile is specific for my instrument I have left it in the same example folder, but if general use I have placed it in the global data folder.
  • My work touches the code-generator in mccode/src

    • I have added reasoning and documentation for the change through an ADR record in our GRAMMAR section
    • I am attaching test output in the comments
  • My work touches / adds to the runtime lib code (.c,.h etc in multiple locations

    • I am have added reasoning and documentation for the change below
    • I am attaching test output in the comments
  • My PR is meant to fix a specific, existing issue

    • I have indicated the issue number here:
    • I have added documentation for the fix and possible side effects
  • My contribution contains something else

    • Explanation is added in free form text above or below the checklist

Logger components had coordinate transformation from master to local in their code, and didn't take rotation into account.

Abs_loggers on the other hand had the transformation done in master, this was moved into the abs_loggers to be more consistent with loggers.

It was decided to have transformation in the loggers, abs_loggers instead of master for performance reasons, a logger may look on just the
time, and then there is no need to transform position and wavevector.
Additional tests are needed and will be added to the branch.
- Union_master at weird position, requires loggers to correct with their transformation, harder test
- Added conditional component to all abs_logger and logger tests, testing a significantly different code path for each

Found issue in conditionals as relating to absorption loggers with speicifc target, fixed that.
@mads-bertelsen mads-bertelsen marked this pull request as draft April 29, 2026 14:52
@mads-bertelsen
Copy link
Copy Markdown
Contributor Author

Screenshot of very simple mcdoc page for the new test instrument

Screenshot 2026-04-30 at 10 30 23

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant