Touschek#191
Open
gbrogginess wants to merge 47 commits into
Open
Conversation
`compt_scale` is a multiplicative factor applied to the total Compton cross-section. Increasing this factor scales up photon generation in the radiative Bhabha model. This can be useful for testing or for producing a larger number of radiative Bhabha scattering events.
When a line is generated through MAD-X sequence conversion, the line end up having markers sequencename$start and sequencename$end. In the line table these are present, but they do not have an associated s position and this causes an error!
Prevented sampling of particles with |δ|>LMA in Touschek MC by reducing the
longitudinal cutoff per element where needed:
nz_eff = min(nz, 0.9 * min(|δN|, δP) / σδ)
This ensures sampled δ stays strictly within the LMA,
avoiding pathological small-angle events with huge weights that distorted
RMC/RP and Touschek lifetime estimates.
- Adjustment is local: only elements with tight acceptance are clamped
- Prints a warning when nz_eff < nz
- Restores stable RMC/RP≈1 and meaningful lifetime results
giadarol
requested changes
Apr 29, 2026
|
|
||
| touschek_manager = xf.TouschekManager( | ||
| line, | ||
| momentum_aperture=df_momentum_aperture, |
Member
There was a problem hiding this comment.
Let's say that all our API takes tables and not Pandas dataframe
Comment on lines
+167
to
+189
|
|
||
| touschek_manager.initialise_touschek() | ||
|
|
||
| touschek_elements = tab.rows[tab.element_type == 'TouschekScattering'].name | ||
|
|
||
| line.discard_tracker() | ||
| line.build_tracker(_context=xo.ContextCpu(omp_num_threads='auto')) | ||
|
|
||
| particles_list = [] | ||
| for ii in range(len(touschek_elements)): | ||
| element = touschek_elements[ii] # xf.TouschekScattering | ||
| s_start_elem = tab.rows[tab.name == element].s[0] | ||
|
|
||
| # Touschek! | ||
| particles = line[element].scatter() | ||
|
|
||
| # Track! | ||
| print(f"\nTrack particles scattered at {element} at s = {s_start_elem}") | ||
| line.track(particles, ele_start=element, ele_stop=element, num_turns=nturns, with_progress=1) | ||
|
|
||
| particles_list.append(particles) | ||
|
|
||
| particles = xt.Particles.merge(particles_list) |
Member
There was a problem hiding this comment.
Explain with comments what different steps are doing
Member
There was a problem hiding this comment.
no need, lets' put the acknowledgment in the file
Member
There was a problem hiding this comment.
once merged this should go in the Xsuite docs
Comment on lines
+5
to
+10
| If you publish results obtained with this routine, please cite: | ||
|
|
||
| - M. Borland, “elegant: A Flexible SDDS-Compliant Code for Accelerator Simulation,” APS LS-287 (2000). | ||
|
|
||
| - A. Xiao and M. Borland, “Monte Carlo simulation of Touschek effect,” *Phys. Rev. ST Accel. Beams* **13**, 074201 (2010). | ||
| DOI: 10.1103/PhysRevSTAB.13.074201 |
Member
There was a problem hiding this comment.
Put these references in the Python docstring so that they are visible in the documentation
| # Include the license file | ||
| # Include the license files | ||
| include LICENSE.txt | ||
| recursive-include xfields/third_party *LICENSE* |
|
|
||
| recursive-include xfields *.h | ||
| recursive-include xfields *.clh | ||
| recursive-include xfields *.clh No newline at end of file |
giadarol
reviewed
Apr 29, 2026
Member
giadarol
left a comment
There was a problem hiding this comment.
Please add a Touscheck chapter in Physics Guide
| CLASSICAL_ELECTRON_RADIUS = physical_constants['classical electron radius'][0] | ||
|
|
||
| class TouschekCalculator: | ||
| def __init__(self, manager): |
| break | ||
|
|
||
|
|
||
| class TouschekManager: |
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 introduces the possibility to perform Monte Carlo simulations of Touschek scattering in xfields.
It provides:
a new
TouschekScatteringbeam element implementing a Monte Carlo Touschek scattering kernel,a
TouschekManagerthat configures Touschek scattering centers using optics and a supplied local momentum aperture profile,a
TouschekCalculatorthat evaluates Piwinski Touschek scattering rates and integrated per-section rates, used to correctly weight scattered macroparticles.This enables end-to-end Touschek studies within Xsuite, including generation of Touschek-scattered particles, tracking, Touschek loss maps analysis, and Touschek lifetime evaluations.
Checklist
Mandatory:
Optional: