Skip to content

feat: Python-only histogram writer and plotting utilities#5276

Merged
kodiakhq[bot] merged 44 commits intoacts-project:mainfrom
benjaminhuth:feature/boost-hist-python-binding
Apr 2, 2026
Merged

feat: Python-only histogram writer and plotting utilities#5276
kodiakhq[bot] merged 44 commits intoacts-project:mainfrom
benjaminhuth:feature/boost-hist-python-binding

Conversation

@benjaminhuth
Copy link
Copy Markdown
Member

@benjaminhuth benjaminhuth commented Mar 22, 2026

Adds a writer to the python-bindings that exposes the histograms as a dictionary to python. Adds plotting convenience functions to histograms.

@github-actions github-actions bot added this to the next milestone Mar 22, 2026
@github-actions github-actions bot added the Component - Examples Affects the Examples module label Mar 22, 2026
@benjaminhuth benjaminhuth force-pushed the feature/boost-hist-python-binding branch from 81acf9e to bd73cb3 Compare March 23, 2026 10:26
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 23, 2026

📊: Physics performance monitoring for 7a8a14b

Full contents

physmon summary

benjaminhuth and others added 19 commits March 23, 2026 17:08
After acts-project#5223 I cannot locally compile `Examples/Detectors/MuonSpectrometerMockupDetector/src/GeoMuonMockupExperiment.cpp` anymore. I suspect that the captured lambda does not trigger the type switch correctly while using `auto` does because the lambda will be effectively templated.
After we fully migrated to the new non-templated seeding and space point algorithms and EDM it is time to deprecate the templated ones. Apart from this tests are already removed. A future breaking change will remove the code completely and rename the new implementation to remove the `2`, for examples `SpacePointContainer2` -> `SpacePointContainer`.

Quick update guide:
- `SeedFinder` -> `TripletSeeder`
- `CylindricalSpacePointGrid` -> `CylindricalSpacePointGrid2`
- `Seed` -> `SeedContainer2`, `SeedProxy2`
- new space point EDM `SpacePointContainer2`, `SpacePointProxy2`
- `SpacePointBuilder` -> `PixelSpacePointBuilder`
- `StripSpacePointBuilder` -> `StripSpacePointBuilder`

Moving our Examples from the old EDM to the new one was done here acts-project#5088
Fixes the association of spacepoints to tracks that was broken since acts-project#5088.

Also improve python scripts and add track finder performance writer and track selection to have meaningful metrics.
Also put the schedule on the weekend so reviewers won't get bored on Sundays and merge everything until Monday morning.
This moves the subspace encoding / decoding into headers that are located with the EDM.
… 26.1.0 to 26.3.1 (acts-project#5273)

Bumps [https://github.com/psf/black-pre-commit-mirror](https://github.com/psf/black-pre-commit-mirror) from 26.1.0 to 26.3.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/psf/black-pre-commit-mirror/commit/fa505ab9c3e0fedafe1709fd7ac2b5f8996c670d"><code>fa505ab</code></a> black 26.3.1</li>
<li><a href="https://github.com/psf/black-pre-commit-mirror/commit/044edd3b57c805fa7a0165b7936d44f6e56ecfd8"><code>044edd3</code></a> black 26.3.0</li>
<li>See full diff in <a href="https://github.com/psf/black-pre-commit-mirror/compare/26.1.0...26.3.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=https://github.com/psf/black-pre-commit-mirror&package-manager=pre_commit&previous-version=26.1.0&new-version=26.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
…from v22.1.0 to 22.1.1 (acts-project#5272)

Bumps [https://github.com/pre-commit/mirrors-clang-format](https://github.com/pre-commit/mirrors-clang-format) from v22.1.0 to 22.1.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pre-commit/mirrors-clang-format/commit/88c364bab316f4b6b18f6c298133bbbf32d7cd15"><code>88c364b</code></a> Mirror: 22.1.1</li>
<li>See full diff in <a href="https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.0...v22.1.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=https://github.com/pre-commit/mirrors-clang-format&package-manager=pre_commit&previous-version=v22.1.0&new-version=22.1.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
…to 0.26.1 (acts-project#5274)

Bumps [https://github.com/BlankSpruce/gersemi](https://github.com/BlankSpruce/gersemi) from 0.26.0 to 0.26.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/BlankSpruce/gersemi/releases">https://github.com/BlankSpruce/gersemi's releases</a>.</em></p>
<blockquote>
<h2>0.26.1</h2>
<h2>Added</h2>
<ul>
<li>Support for new keywords in native commands available in CMake 4.3.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/BlankSpruce/gersemi/blob/master/CHANGELOG.md">https://github.com/BlankSpruce/gersemi's changelog</a>.</em></p>
<blockquote>
<h2>[0.26.1] 2026-03-13</h2>
<h3>Added</h3>
<ul>
<li>Support for new keywords in native commands available in CMake 4.3.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/BlankSpruce/gersemi/commit/79ddf2c9f3a84d766fce4e39fb2f83eac62b34f7"><code>79ddf2c</code></a> Release 0.26.1</li>
<li>See full diff in <a href="https://github.com/BlankSpruce/gersemi/compare/0.26.0...0.26.1">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=https://github.com/BlankSpruce/gersemi&package-manager=pre_commit&previous-version=0.26.0&new-version=0.26.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
Requires a new module map file due to changes in the definition of the
geometric cuts. For now, the new patched module map files have the
min/max values of the affected `deta` and `diff_dydx` cuts inflated to
`+/- inf` to avoid regeneration of the module map files.

Should go in after acts-project#5263 

--- END COMMIT MESSAGE ---

Any further description goes here, @-mentions are ok here!

- Use a *conventional commits* prefix: [quick
summary](https://www.conventionalcommits.org/en/v1.0.0/#summary)
- We mostly use `feat`, `fix`, `refactor`, `docs`, `chore` and `build`
types.
- A milestone will be assigned by one of the maintainers

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…project#5243)

Generalizes external surfaces from `Navigator::Options` to `NavigatorPlainOptions` which is the base for all our navigators. This way all navigators fulfill the interface necessary to deal with external surfaces. The `DirectNavigator` now also uses this central external surface list.

Also
- adapt `Navigator` to handle the new option vs the previous 2 lists
- rename `Navigator::State::reset` to `resetForRenavigation`
- rename `insertExternalSurface` to `appendExternalSurface` to hit that order is important
- improve `appendExternalSurface` doc
- downstream changes
@andiwand andiwand marked this pull request as draft March 26, 2026 09:33
@benjaminhuth benjaminhuth marked this pull request as ready for review March 31, 2026 07:30
Copy link
Copy Markdown
Member

@paulgessinger paulgessinger left a comment

Choose a reason for hiding this comment

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

I like it overall, I have a couple of suggestions.

andiwand
andiwand previously approved these changes Apr 1, 2026
andiwand
andiwand previously approved these changes Apr 1, 2026
@andiwand andiwand removed the automerge label Apr 2, 2026
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 2, 2026

@kodiakhq kodiakhq bot merged commit 717c8c0 into acts-project:main Apr 2, 2026
42 checks passed
@github-actions github-actions bot removed the automerge label Apr 2, 2026
@andiwand andiwand modified the milestones: next, v46.1.0 Apr 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component - Examples Affects the Examples module Infrastructure Changes to build tools, continous integration, ...

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants