feat: Add a fastjet plugin
This PR adds a fastjet plugin which allows creating track-jets, as well as iterating over tracks in the core of such jets, subject to kinematic cuts.
Such a plugin would be useful, for example, to studies on using jet information as a track-density proxy before or during ambiguity solving.
This raises the question of whether or not this belongs in the scope of a tracking library, but I think it does since this can be useful e.g. in between track finding & ambiguity solving (or during ambi-solving)
Action items
- [ ] Add this plugin to a CI build
π: Physics performance monitoring for aaca10f8d03cfe05dff46bff618f8014c1afd5c9
physmon summary
- β Particles fatras
- β Particles geant4
- β Particles ttbar
- β Vertices ttbar
- β Truth tracking (KF)
- β Truth tracking (GSF)
- β Truth tracking (GX2F)
- β Truth tracking (KF refit)
- β Truth tracking (GSF refit)
- β CKF finding performance | trackfinding | single muon | truth smeared seeding
- β CKF fitting performance | trackfinding | single muon | truth smeared seeding
- β CKF track summary | trackfinding | single muon | truth smeared seeding
- β Seeding trackfinding | single muon | truth estimated seeding
- β CKF finding performance | trackfinding | single muon | truth estimated seeding
- β CKF fitting performance | trackfinding | single muon | truth estimated seeding
- β CKF track summary | trackfinding | single muon | truth estimated seeding
- β Seeding trackfinding | single muon | default seeding
- β CKF finding performance | trackfinding | single muon | default seeding
- β CKF fitting performance | trackfinding | single muon | default seeding
- β CKF track summary | trackfinding | single muon | default seeding
- β Seeding trackfinding | single muon | orthogonal seeding
- β CKF finding performance | trackfinding | single muon | orthogonal seeding
- β CKF fitting performance | trackfinding | single muon | orthogonal seeding
- β CKF track summary | trackfinding | single muon | orthogonal seeding
- β Seeding trackfinding | 4 muon x 50 vertices | default seeding
- β CKF finding performance | trackfinding | 4 muon x 50 vertices | default seeding
- β CKF fitting performance | trackfinding | 4 muon x 50 vertices | default seeding
- β CKF track summary | trackfinding | 4 muon x 50 vertices | default seeding
- β Ambisolver finding performance | trackfinding | 4 muon x 50 vertices | default seeding
- β IVF notime | trackfinding | 4 muon x 50 vertices | default seeding
- β AMVF gauss notime | trackfinding | 4 muon x 50 vertices | default seeding
- β AMVF grid time | trackfinding | 4 muon x 50 vertices | default seeding
- β Seeding trackfinding | ttbar with 200 pileup | default seeding
- β CKF finding performance | trackfinding | ttbar with 200 pileup | default seeding
- β CKF fitting performance | trackfinding | ttbar with 200 pileup | default seeding
- β CKF track summary | trackfinding | ttbar with 200 pileup | default seeding
- β Ambisolver finding performance | trackfinding | ttbar with 200 pileup | default seeding
- β ML Ambisolver | trackfinding | ttbar with 200 pileup | default seeding
- β AMVF gauss notime | trackfinding | ttbar with 200 pileup | default seeding
- β AMVF grid time | trackfinding | ttbar with 200 pileup | default seeding
- π΅οΈ Comparison - Truth tracking (GX2F vs KF)
We probably need to add this to the CI to make sure it's not instantly broken.
We probably need to add this to the CI to make sure it's not instantly broken.
Right, is there a build in particular in which we turn on plugins?
@gagnonlg At this point, FastJet would have to go into our dependencies build (although we'll likely switch this over to spack some time soon).
https://github.com/acts-project/ci-dependencies/pull/38 @paulgessinger
Hey, where are we with this one?
Quality Gate passed
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code
@asalzburger the fastjet build ob macOS turned out to be a bit tricky. I haven't gotten that to work yet.
[!IMPORTANT]
Review skipped
Auto incremental reviews are disabled on this repository.
Please check the settings in the CodeRabbit UI or the
.coderabbit.yamlfile in this repository. To trigger a single review, invoke the@coderabbitai reviewcommand.You can disable this status message by setting the
reviews.review_statustofalsein the CodeRabbit configuration file.
Walkthrough
A new option for building the FastJet plugin has been introduced in the CMakeLists.txt files across multiple directories. This includes conditional checks for the FastJet package and the addition of a new INTERFACE library for the FastJet plugin. A new header file for managing track jets has been created, along with its implementation. Unit tests for the track jet functionality have also been added, and the documentation has been updated to reflect changes in dependencies and build options.
Changes
| File | Change Summary |
|---|---|
CMakeLists.txt |
Added option ACTS_BUILD_PLUGIN_FASTJET and conditional package requirement for FastJet. |
Plugins/CMakeLists.txt |
Added independent plugin entry for FastJet. |
Plugins/FastJet/CMakeLists.txt |
Introduced INTERFACE library ActsPluginFastJet with include directories and installation rules. |
Plugins/FastJet/include/Acts/Plugins/FastJet/TrackJets.hpp |
Added TrackJetSequence class with methods for managing track jets. |
Plugins/FastJet/include/Acts/Plugins/FastJet/TrackJets.ipp |
Implemented makeTrackJets function and methods for TrackJetSequence. |
Tests/UnitTests/Plugins/CMakeLists.txt |
Added directive to include FastJet plugin conditionally. |
Tests/UnitTests/Plugins/FastJet/CMakeLists.txt |
Added library dependency for ActsPluginFastJet and registered TrackJetsTests. |
Tests/UnitTests/Plugins/FastJet/TrackJetsTests.cpp |
Introduced unit tests for track jet functionality with various test cases. |
cmake/FindFastJet.cmake |
Created script to locate FastJet library and handle its inclusion in the build process. |
docs/getting_started.md |
Updated documentation for prerequisites, build options, and added new optional dependencies. |
Possibly related PRs
- #3836: Related to modifications in
CMakeLists.txtfor conditional build options similar to the integration ofHitSelector.
Suggested labels
automerge
In the realm of code, new paths we tread,
FastJet plugin, now easily spread.
With tests and options, our build is refined,
A journey of jets, in C++ designed.
So let us rejoice, as we code and explore,
For in every change, thereβs always more! β¨
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
πͺ§ Tips
Chat
There are 3 ways to chat with CodeRabbit:
- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
I pushed a fix in commit <commit_id>, please review it.Explain this complex logic.Open a follow-up GitHub issue for this discussion.
- Files and specific lines of code (under the "Files changed" tab): Tag
@coderabbitaiin a new review comment at the desired location with your query. Examples:@coderabbitai explain this code block.@coderabbitai modularize this function.
- PR comments: Tag
@coderabbitaiin a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.@coderabbitai read src/utils.ts and explain its main purpose.@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.@coderabbitai help me debug CodeRabbit configuration file.
Support
Need help? Create a ticket on our support page for assistance with any issues or questions.
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.
CodeRabbit Commands (Invoked using PR comments)
@coderabbitai pauseto pause the reviews on a PR.@coderabbitai resumeto resume the paused reviews.@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository.@coderabbitai full reviewto do a full review from scratch and review all the files again.@coderabbitai summaryto regenerate the summary of the PR.@coderabbitai generate docstringsto generate docstrings for this PR.@coderabbitai generate sequence diagramto generate a sequence diagram of the changes in this PR.@coderabbitai resolveresolve all the CodeRabbit review comments.@coderabbitai configurationto show the current CodeRabbit configuration for the repository.@coderabbitai helpto get help.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile to the root of your repository. - Please see the configuration documentation for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation:
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
Documentation and Community
- Visit our Documentation for detailed information on how to use CodeRabbit.
- Join our Discord Community to get help, request features, and share feedback.
- Follow us on X/Twitter for updates and announcements.
We now have fastjet in the dependencies package, so maybe we can now revive this one!
@pbutti said he was working on something similar. Maybe you could have a look at this one @pbutti so we can converge on something?
@gagnonlg should we try to get this one in?
@gagnonlg should we try to get this one in?
Sure. I've bumped this up on my todo list.
Update on the timeline; I'll try my best to get this done by the end of the week
FYI @XiaocongAi !
Should be in better shape now @paulgessinger, lmk if you have further comments
This should be good to go, @paulgessinger
@paulgessinger I fixed the merge conflicts, should be good to go.
Quality Gate passed
Issues
0 New issues
0 Accepted issues
Measures
0 Security Hotspots
74.4% Coverage on New Code
0.0% Duplication on New Code