Advanced Photon Source

An Office of Science National User Facility


License Agreement

This web page provides access to software packages produced by the Accelerator Operations and Physics Group.

Note that some of this software (notably the SDDS code) is also distributed by the EPICS collaboration. However, those versions are usually out of date and we suggest that SDDS users download from this site. The directory structures are the same in the two distributions.

Documentation on these software packages can be found here.

Software Tree
Configuration files for EPICS build system

You'll need these files if you don't have the epics/base/configure area already. The files are used by gnumake to customize builds to specific operating systems.

You'll need these files if you don't have the epics/extensions/configure area already. The files are used by gnumake to customize builds to specific operating systems. You'll probably have to modify the RELEASE file for your specific system.
SDDS Source
SDDS Binaries
Java SDDS Source Code
  • Java SDDS Release (February 8, 2016)
    This version works with Java JDK 1.7 and 1.8 This version works independently from the C code. Documentation for the Java SDDS libarary can be found here.
Java SDDS Binaries
Matlab SDDS Source Code
  • Matlab SDDS Release (April 1, 2015)
    This version requires the Java SDDS Binary be installed in the Matlab class path. These files are also included in the SDDS Source distribution. Installation instructions are also available.
Python SDDS Binaries
Retrieving and Building SDDSepics toolkit

Here are the files needed to compile the EPICS control system specific SDDS applications. Simply click on the item and your browser will download the software (prompting you for a destination directory). You can untar this into the directory structure created by the SDDS tar file above, or vice versa. It is simply another module in the same build system.

SDDSepics Source
SDDSepics Binaries
SDDS/EPICS Demonstration Scripts

gzip'd tar file contains a number of Tcl/Tk scripts and data files for running demonstrations of the SDDS and the SDDS/EPICS Toolkits. It uses these toolkits and our extensions to Tcl/Tk. The demonstrations involve simulation of a storage ring using the portable channel access server, collection and analysis of data from the storage ring, measurement of the response matrix, and correction of the orbit. You should download and unpack this file first, then consult the README file for more detailed instructions. At present, these demos are only supported on LINUX and other UNIX platforms.

Configure files for elegant, spiffe, genesis, and shower
The files are used by gnumake to customize builds to specific operating systems. You'll probably have to modify these files for your specific system.
PEM, Tcl/Tk Interpreter, and Tcl/Tk Library Source

This file contains the source for the Procedure Execution Manager (PEM), the OAG Tcl/Tk interpreter (with SDDS, CA, and operating system extensions), and the OAG Tcl/Tk procedure library. The oag directory created by the untarring the SDDS code and the OAG code must be at the same level in your directory structure.


Clinchor calculates the growth rates of longitudinal and transverse coupled bunch modes in an electron storage ring. The manual is available here.
Some example files are here.


elegant is an accelerator code that computes beta functions, matrices, orbits, floor coordinates, amplification factors, dynamic aperture, and more. It does 6-D tracking with matrices and/or canonical integrators, and supports a variety of time-dependent elements. It also does optimization (e.g., matching), including optimization of tracking results. It is the principle accelerator code used at APS. To get started with elegant, you can use the following example files and scripts as a guide.
The manual is available here.
Check out the Pelegant setup guide for multi-CPU-core computers.
Another source of information and help is the on-line forum.


Shield is a computer code for performing shielding analyses around a high-energy electron accelerator. It makes use of simple analytic expressions for the production and attenuation of photons and neutrons resulting from electron beams striking thick targets, such as dumps, stoppers, collimators, and other beam devices. This version is based on SHEILD11 (SLAC).


Spiffe is a fully-electromagnetic 2-1/2 dimensional particle-in-cell code for simulation of rf guns and similar systems with cylindrical symmetry.


Shower is a C-interface to EGS4, a Monte Carlo electromagnetic shower simulation program. EGS4 (developped at SLAC) is a set of subroutines that generates and tracks particle in a electromagnetic shower. In the conventional EGS4 code system, the user must supply their own input and output routines and problem geometry definition written in the MORTRAN language. This arduous process has been replaced by the C-code interface provided here by reading and writing input and output particle information as data files, the geometry definition as a file of namelist type commands, and other information in an addition summary data file. All data files are in SDDS format, and therefore compatible with other processing and tracking programs.

Vorpal Visualization Tool

This application (tcl/tk code) provides the interface for converting vorpal outputs to sdds files, postprocessing and displaying the results. It requires sdds toolkits which including hdf2sdds and OAG tcl/tk libaries.


Genesis is a time dependent Free Electron Laser (FEL) simulation code written by Sven Reiche. This code was modified so that it can output SDDS files which can be plotted using sddsplot. Also the output files from elegant can be converted into input files for Genesis by using the elegant2genesis program in the SDDS ToolKit.

SDDS interface to IDL

This API (sddsIDL) provides the capability for an IDL program to read and write SDDS formatted files.

MOGA optimizer for rings

The file below supplies a set of example input files and instructions for using our genetic optimization script to perform multi-objective optimization of Touschek lifetime and dynamic acceptance in storage rings.