Plotting

The pymadx.Plot module provides various plotting utilities.

Plotting Features

  • Make default optics plots.

  • Compare two sets of optics.

  • Add a machine lattice to any pre-existing plot.

  • Interactive plots with the machine diagram following the mouse zooming.

  • Interactive plots with searching for nearest element.

Optics Plots

A simple optics plot may be made with the following syntax:

a = pymadx.Data.Tfs("mytwissfile.tar.gz")
a.Plot()

This creates a plot of the Beta amplitude functions against curvilinear S position. A colour diagram representing the machine is also produced above the graph as shown below.

_images/optics.pdf

The command has optional arguments such as a title string to be put at the top of the graph and whether to also plot the horizontal dispersion function. This function is provided as a quick utility and not the ultimate plotting script. The user can make their own plot and then append a machine diagram at the end if they wish.:

f = matplotlib.pyplot.figure()
# user plotting commands here
pymadx.Plot.AddMachineLatticeToFigure(f, "mytwissfile.tar.gz")

gcf() is a matplotlib.pyplot function to get a reference to the current matplotlib figure and can be used as the first argument.:

pymadx.Plot.AddMachineLatticeToFigure(gcf(), "mytwissfile.tar.gz")

Note

It becomes difficult to adjust the axes and layout of the graph after adding the machine description. It is therefore strongly recommended to do this last.

Comparing Optics

Either Twiss functions or R-Matrix components can be compared between two files.

Twiss

pymadx.Compare.MadxVsMadx("file1.tfs", "file2.tfs")

R-Matrix

pymadx.Compare.MadxVsMadxRMatrix("file1.tfs", "file2.tfs")

Colour Coding

Each magnet is colour coded an positioned depending on its type and strength.

Type

Shape

Colour

Vertical Position

drift

N/A

Not shown

N/A

sbend

Rectangle

Blue

Central always

rbend

Rectangle

Blue

Central always

hkicker

Rectangle

Purple

Central always

vkicker

Rectangle

Pink

Central always

quadrupole

Rectangle

Red

Top half for K1L > 0; Bottom half for K1L < 0

sextupole

Hexagon

Yellow

Central always

octupole

Hexagon

Green

Central always

multiple

Hexagon

Light grey

Central always

rcollimator

Rectangle

Black

Central always

ecollimator

Rectangle

Black

Central always

any other

Rectangle / Line

Light Grey

Central always

Note

In all cases if the element is a magnet and the appropriate strength is zero, it is shown as a grey line.

Plot Interactivity

With the adition of the machine axes, some extra interactivity is included to the matplotlib figures.

  • zooming - if the ‘right-click and drag’ zoom feature is used on the machine diagram, the graph will automatically update and follow the machine diagram.

  • xlim - setting the horizontal graph limits with the ‘xlim’ command will update both the machine diagram and the graph.

  • querying - right-clicking anywhere on the graph will print out the name of the nearest element in the terminal.