py4sci

Previous topic

Examples

Next topic

PyMad API

This Page

Plot BetaΒΆ

The following example shows how to use pymad to plot the beta functions for the LHC for injection and collision optics:

from matplotlib import pyplot
from cern import pymad

def plot_beta(model, postfix=''):
    # Run twiss on the model, optionally give name of file
    # where tfs table is stored
    result, summary = model.twiss(seqname='lhcb1',
                                  columns=['name', 's', 'betx', 'bety'],
                                  file='lhcb1' + postfix + '.tfs')

    pyplot.figure()
    # do something with the result (note, madx is still waiting!):
    pyplot.xlabel('dist. from IP1')
    pyplot.ylabel(r'$\beta$')
    pyplot.plot(result.s, result.betx, label=r'$\beta_x$')
    pyplot.plot(result.s, result.bety, label=r'$\beta_y$')
    pyplot.savefig('beta' + postfix + '.eps')


# choose the mode
mode = 'jpymad'
#mode = 'cpymad'

mdefname = 'lhc'
opticname = 'injection'

#
# Here it starts
#
# create the PyMad Service
pms = pymad.init(mode)

# print the name of all model definitions
print pms.mdefnames

# alternatively use convenience function
#pymad.ls_mdefs()

# get one model-definition
model = pms.create_model(mdefname)

# alternatively: create the model by name and get the model definition afterwards:
# model = pms.create_model(mdefname)
# mdef = model.mdef

# list the available (running) models
pymad.ls_models()

# print a list of available sequences:
print mdef.seqnames

plot_beta(model, '_inj')

# list the available optics and set a new one
print mdef.opticnames
model.set_optic(opticname)

plot_beta(model, '_coll')

# remove the model from the service:
pms.delete_model(model)

# and do a cleanup
pymad.cleanup()