RF-Track 2.5.4
Description
RF-Track is a tracking code developed at CERN for the design and optimisation of particle accelerators, offering outstanding flexibility and rapid simulation speed.
RF-Track can transport beams of particles of any energy, mass and charge, including mixed beams, solving fully relativistic equations of motion and including spin polarization. It can simulate the effects of space-charge forces in bunched and continuous-wave beams, synchrotron radiation emission, wakefields, beam-loading, intrabeam scattering, multiple Coulomb scattering, inverse Compton scattering, and the list of collective effects is growing. It can transport single- and multi-bunch beams through both conventional and special elements: 1D, 2D and 3D static or oscillating radio-frequency electromagnetic field maps (standing wave and travelling wave), flux concentrators and electron coolers. RF-Track uses fast parallel algorithms and allows element overlap and direct and indirect space charge calculations.
RF-Track is written in optimised multi-threaded C++ and comes in two separate and independent versions: one for use in Octave and the other in Python. A general knowledge of Octave or Python is recommended to get the most out of RF-Track.
Installation
RF-Track is available as pre-compiled binaries for MacOS (MacPorts), Ubuntu Linux, and on PyPI. RF-Track also works on Windows under WSL. See the RF-Track manual for detailed information.
Documentation
An updated version of the RF-Track manual can be found in this repository, or directly at this LINK.
Mailing list
For news and updates subscribe to the mailing list »HERE«.
Changelog
What is new in version 2.5.4
- Bugfixes and general improvements (autophase, backtracking in Volume, generator)
What was new in version 2.5.3
- Lattice: lost particles’ longitudinal positions are now reported in meters (previously in millimeters)
- Fixed bug in transport table when multiple Volumes are inserted as elements into a Lattice
- Added support for converting multipoles up to order 20 when importing MAD-X lattice files
- Changed default
Volume::emission_rangesetting from 2 to 10 to improve accuracy
What was new in version 2.5.2
- Now screens in Volume preserve the same particle order as the incoming beam
- General bug fixes and performance improvements
What was new in version 2.5.1
- Fixed a bug introduced in version 2.5.0 in Volume
- Added automatic check for available updates
What was new in version 2.5.0
-
UserElement– Custom accelerator elements and transfer maps in Python or Octave. -
UserField– User‑defined electromagnetic field equations in Python or Octave. -
UserEffect– Prototype collective effects in Python or Octave. -
UserVisitor– Traverse lattices/volumes with custom Python functions. - Secondary particle generation – Collective effects can now emit and track new particles (e.g., synchrotron‑radiation photons, BDSIM secondaries).
- Cathode emission – Improved accuracy in Volume‑based emission simulations.
- Minor improvements and bug fixes.
What was new in version 2.4.2
- Added BPM element to
Volume - Improved
Volume–Latticeintegration for Beam-Based Alignment inVolume - Enabled partial polarization of individual macroparticles
- Bug fixes:
- Fixed issue in PillBox cavity
- Resolved problem with beam losses when all particles are lost
- Corrected RF phase of structures imported from MAD-X
What was new in version 2.4.1
- Added spin polarization support to both
LatticeandVolumetracking
What was new in version 2.4.0
- Speed-up and memory-management improvement in
TW_Field - Added new collective effect
IntraBeamScattering(Paula Desiré Valdor) - Redefined
Lattice's transverse emittances as calculated from x-x' and y-y' - Cathodes in Volume can have arbitrary misalignment, mirror charges included
What was new in version 2.3.4
- Fixed a memory problem in Python's numpy interface
What was new in version 2.3.3
- Added
TW_Fieldelement to create RF structures from shunt impedance, group velocity, and quality factor - The new
TW_Fieldelement can account for steady input power, or time-dependent RF pulses - Long-range wakefields can now have arbitrary linear polarization
- Improved speed of
SW_StructureandTW_Structureelements -
BeamandBeamTcan now be saved and loaded in binary format - Elements can now be removed from and inserted into an existing
Lattice -
LatticeandVolumetransport tables now return transmission in number of particles (no longer in number of macroparticles) - Improved error message handling to avoid redundant repetitions
- Various minor bug fixes
What was new in version 2.3.2
- Fixed a potential beam-laser synchronisation issue in the LaserBeam element
- Added multi-pulse laser trains in LaserBeam
- Fixed minor bug in Python interface
What was new in version 2.3.1
- ShortRangeWakefield allows the simulation of tapered irises and cell-to-cell misalignment
- Sped up Solenoid field calculation
- Now Screens can have a width, a height, and a time window
- Now SpaceCharge_Field() uses a fast Cartesian Multipole Expansion
- Added Undulator element to simulate planar undulators
- Minor bug fixes and improvements
What was new in version 2.3.0
- Introduced new Beam and BeamT models for multi-bunch simulations
- Optimized multi-bunch effects for multi-bunch beam simulations
- Modified the transport table to support multi-bunch beams
- Added the RF_TRACK_NOSPLASH environment variable
- Implemented element misalignment handling in Volume
- Added scaling error support to the Bpm element
- Enhanced Lattice::autophase() to automatically set the magnetic strength of magnets
- Improved detection of the solenoid fringe field extension in Volume
- Enhanced the 3d solenoid field modelling using multiple thin sheets of current
- Introduced a new on-the-fly BeamLoading implementation compatible with Beam (thanks to Javier Olivares Herrador)
- Enhanced long-range wakefields to accept tapered modes along the structure
- Added generalized Gaussian distribution to Generator
- Added the displaced() method to Bunch6d and Bunch6dT to create offset bunches
- Added Screen element support to Lattice and Volume
- Implemented the fast multipole method to significantly speed up the SpaceCharge_Field() element
- Various minor bug fixes and improvements
A full Changelog is available HERE.