Skip to content

feat: Add Mille Solver - #5954

Open
goblirsc wants to merge 13 commits into
acts-project:mainfrom
goblirsc:MG_MilleSolver
Open

goblirsc wants to merge 13 commits into
acts-project:mainfrom
goblirsc:MG_MilleSolver

Conversation

@goblirsc

@goblirsc goblirsc commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Add a MilleSolver to handle running the MillePede alignment step and collect the results.

Adds a MilleSolver which wraps the call to pede. It allows to redirect the output and returns a struct with the fit status and the location of the output files.

Currently, it expects the user to have already configured the steering file for the fit - this will be handled by one of the next PRs in the ongoing stack, by a separate tool.

The child process call required for this wrapping is currently done via Boost::process. For the longer-term future, a refactor of pede is foreseen to allow running the alignment fit via an API call to a library, rather than having to invoke an external program. Once that becomes available, this wrapper will be replaced accordingly.

The PR also adds python bindings for the solver and its configuration, as well as a unit test.

@github-actions github-actions Bot added the Component - Plugins Affects one or more Plugins label Aug 25, 2026
@github-actions github-actions Bot added this to the next milestone Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Public API surface diff

+22 added, 0 breaking.

➕ Added public API

New types / aliases / enums / variables / concepts (4)
  • enums ActsPlugins::ActsToMille::MillePedeError
  • type ActsPlugins::ActsToMille::MillePedeSolver
  • type ActsPlugins::ActsToMille::MillePedeSolver::Config
  • type ActsPlugins::ActsToMille::MillePedeSolver::MpResult
New call signatures (incl. defaulted-arg overloads) (3)
  • ActsPlugins::ActsToMille::MillePedeSolver::MillePedeSolver()
  • ActsPlugins::ActsToMille::MillePedeSolver::MillePedeSolver(Acts::Logging::Level)
  • ActsPlugins::ActsToMille::MillePedeSolver::solve(const Config &) const
New public data members (15)
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::evFileName
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::extraOpts
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::histoFileName
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::logFileName
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::redirectStdout
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::resFileName
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::steeringFile
  • ActsPlugins::ActsToMille::MillePedeSolver::Config::workDir
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::evFile
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::exitCode
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::exitMessage
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::exitStatus
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::histoFile
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::logFile
  • ActsPlugins::ActsToMille::MillePedeSolver::MpResult::resultsFile

@github-actions github-actions Bot added the Infrastructure Changes to build tools, continous integration, ... label Aug 26, 2026
@goblirsc

Copy link
Copy Markdown
Contributor Author

Two questions to the experts triggered by unit test failures (e.g. lcg_109_alma9_gcc15 (pull_request))

  • if I want to test a case which intentionally emits an ERROR message, how can I prevent this message from triggering a unit test failure?
  • if my unit test depends on a thirdparty executable program (here: pede) compiled during the ACTS build process, can I make the CI unit tests run the "install" step / source the ACTS setup script before running the unit tests, to ensure my program is picked up?

@github-actions github-actions Bot removed Component - Core Affects the Core module Component - Fatras Affects the Fatras module labels Sep 21, 2026
@github-actions

github-actions Bot commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

📊: Physics performance monitoring for a0ca38f

Full contents

physmon summary

@goblirsc
goblirsc marked this pull request as ready for review September 22, 2026 08:25
Comment thread Plugins/Mille/include/ActsPlugins/Mille/detail/runChildProcess.hpp Outdated
Comment thread Plugins/Mille/include/ActsPlugins/Mille/detail/runChildProcess.hpp Outdated
Comment thread Plugins/Mille/include/ActsPlugins/Mille/detail/runChildProcess.hpp Outdated
Comment thread Plugins/Mille/include/ActsPlugins/Mille/MillePedeSolver.hpp Outdated
Comment thread Plugins/Mille/include/ActsPlugins/Mille/MillePedeSolver.hpp Outdated
Comment thread Plugins/Mille/src/runChildProcess.cpp Outdated
Comment on lines +22 to +31
#if BOOST_VERSION >= 108800

#include <boost/process/environment.hpp>
#include <boost/process/process.hpp>
#include <boost/process/start_dir.hpp>
#include <boost/process/stdio.hpp>

#else
#include <boost/process.hpp>
#endif

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we support both versions?

@goblirsc goblirsc Sep 22, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We currently support Boost starting from fairly early (pre 1.80), so yes, unfortunately our supported boost range covers both API versions (the switch happened in 1.88).

With the two-header strategy you suggested, it is however fairly easy to get rid of the "old" one once we reach the point of dropping pre-1.88 versions.

Comment thread Plugins/Mille/src/runChildProcess.cpp Outdated
Comment thread Plugins/Mille/src/runChildProcess.cpp Outdated
Comment thread Plugins/Mille/src/runChildProcess.cpp Outdated
Comment thread Plugins/Mille/include/ActsPlugins/Mille/detail/runChildProcess.hpp Outdated
@sonarqubecloud

Copy link
Copy Markdown

This branch has not been deployed

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

Labels

Component - Plugins Affects one or more Plugins Infrastructure Changes to build tools, continous integration, ... Public API

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants