# Capabilities required for release of Version #1

## Elements

- Drift
- Quadrupole: Calculation of 'thick' R and T matrices. Twiss propagation. Tracking (with or without synchrotron radiation).
- Sextupole: Calculation of 'thick' R and T matrices. Twiss propagation. Tracking (with or without synchrotron radiation). Inclusion of an additional element to perform the same operations for a thin sextupole.
- Basic diagnostics (BPM, screen, wirescanner, OTR/ODR (with limitations), laserwire (with limitations)
- Sector bend
- Accelerating cavity
- Transverse deflecting cavity
- Solenoid
- Thin multipole

## Processing of Diagnostic Elements

The measurements for diagnostic elements is done on the beam distribution as it enters the element (i.e. all measurements are done at the upstream face), so care should be taken when designing the lattice that this is accounted for.

- BPMs should return the total charge of the beam (C), the x & y centroids (m), plus the S location (m) of the device. Each device will have an intrinsic resolution that is represented by adding Gaussian noise to the x & y centroid readings. This resolution will be defined for the design charge, and will degrade in the case where charge has been lost upstream (i.e. for those particles whose 6D position contains NaN).
- Screens should return the 2D transverse distribution of the particles, as well as the RMS of the x & y spreads.
- OTRs are a simple subclass of Screens, and will be processed in exactly the same way.
- Wirescanners should return the x, y, & u, distribution of the beam.
- Laserwires are a simple subclass of Wirescanners and will be processed in exactly the same way.
- ICTs simply return the charge of the beam.

## Physics

### Tracking

The Track() method will properly track the 6D representation of the particles through all the elements mentioned in the "Elements" subsection of this page, where "properly" implies that the correct 1st and 2nd order matrices will be used, and that any other appropriate effects mentioned on this page (e.g. synchrotron losses or processing of diagnostics output) will be taken care of.

### Twiss Propagation

It will be possible to propagate the standard set of Twiss parameters through the lattice, and to acquire their expected values for each element in the line.

### Matching (and other optimisation problems)

It will be possible to define an optimisation procedure (using Minuit) that allows tweaking of quad values to achieve a particular set of values for the Twiss parameters at set points in the line. This will allow the matching of two different beamline (e.g. two sections of a transport line), or the matching of the start and end conditions of a ring.

This will be written in such a way that generic optimisation routines are possible.

-- StephenMolloy - 17 Aug 2009