Support harmonic number-based cavity definitions in RF sweep#190
Merged
freddieknets merged 2 commits intoxsuite:release/v0.9.11from Mar 9, 2026
Merged
Support harmonic number-based cavity definitions in RF sweep#190freddieknets merged 2 commits intoxsuite:release/v0.9.11from
freddieknets merged 2 commits intoxsuite:release/v0.9.11from
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR generalizes the RF sweep to support cavities defined with
frequency == 0andharmonic != 0.Changes
A new private method
_resolve_cavity_frequency()is introduced in RFSweep. It is called at the start of _get_cavity_data(), before any frequency values are read, and iterates over all cavities. For each cavity with frequency=0, it computes the RF frequency as:f = harmonic * beta0 * c / L
then zeros out harmonic and writes the computed value back to frequency.
This is necessary because xtrack does not allow both attributes to be nonzero simultaneously.
From this point on, the rest of the sweep logic can assume frequency is always set, with no further changes required.
Testing
An existing test has been adapted to cover the changes.
Checklist
Mandatory:
Optional: