Serpentine -- A Python-based Charged Particle Tracker

The goal of this project is to build a charged particle tracker somewhat similar in capability to Lucretia. Despite its similarities, this will not simply be a rewrite of that code, and will include several features that make it stand out from the crowd:
  1. No reliance on any proprietary software, or on any code that requires a license to use
    • Lucretia's dependence on Matlab leads to the frustrating requirement for each and every user/computer to have a valid Matlab license. In situations where a student (for example) would just like to make a few quick calculations, this is obviously not satisfactory.
    • The license for the code produced here will be the GPL, and care will be taken to ensure that any included libraries/executables, are also compliant with the GPL. To comply with this philosophy, the native input format for beamline lattice files will be AML (although, use of the accompanying Universal Accelerator Parser (UAP) will allow a significant number of the most popular lattice formats to be read).
  2. Build it to be light
    • A package to quickly calculate beamline R-matrices, Twiss parameters, etc. may be constructed to be very small and light, therefore the philosophy behind the design of this code is to build a small, light framework for the most commonly used functions, and to allow expansion of the complexity by importing additional modules/classes.

Planned Capabilities

The following is a (perhaps incomplete) list of the capabilities that are planned for this code. The list is divided into two (the "Basics", and "Add-ons") in order to suggest the priorities of this project.

A list of the capabilities required in the first version ("RC1" in linux jargon) can be found here.

The Basics:

  1. Tracking
  2. Transport matrices (linear & non-linear)
    • Easy calculation of the linear R matrices for a single element (calculated on construction of the beamline element), and for a series of elements.
    • Calculation of the appropriate higher-order matrices for any elements requiring them.
  3. Twiss parameters.
    • Propagation of the Twiss parameters (alpha, beta, phase, dispersion, dispersion_prime, and the sigma matrix) through a system of elements.
  4. Multi-species
    • Electron or positron bunches. Extension to other species later (p, pbar, ions, ...)
  5. Loading of lattice formats in AML.


  1. Collective effects
    • Longitudinal and transverse cavity wakes, represented as both frequency and time domain fields.
    • Synchrotron losses (yeah, yeah, I know SR isn't a collective effect), including average and stochastic effects, coherency for short bunches (or bunches with longitudinal structure), and interaction of the beam with the emitted light.
      • In other words, make this code work well for FELs.
  2. Realistic diagnostics
    • Add realistic effects to the BPM output (such as losing resolution if charge is lost upstream).
    • Prevent OTRs, screens, etc. working in the case of COTR.
    • A full calculation of the BPM signals -- including phase noise, gain changes, etc. -- for diagnostics studies.
  3. Generation of 'special' beams
    • Integration with Parmela for a full simulation of the beam emitted by realistic RF guns.
    • Simulation of the beam expected from a damping ring.
    • A true macro-particle beam (unlike that existing in Lucretia), where each macro-particle carries information on its mean and second moment.

Physics Notes -- Here you can find definitions of the beam coordinate system, R-matrices, and a full description and derivation of the Hamiltonians used to define the dynamics in each of the accelerator elements.

Element-by-element comparison with Lucretia

-- StephenMolloy - 17 Aug 2009

Edit | Attach | Watch | Print version | History: r12 < r11 < r10 < r9 < r8 | Backlinks | Raw View | Raw edit | More topic actions...

Physics WebpagesRHUL WebpagesCampus Connect • Royal Holloway, University of London, Egham, Surrey TW20 0EX; Tel/Fax +44 (0)1784 434455/437520

Topic revision: r11 - 25 Aug 2009 - StephenMolloy

  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding RHUL Physics Department TWiki? Send feedback