ocelot.cpbd.track

Module Contents

Classes

Track_info

Functions

aperture_limit(lat, xlim=1, ylim=1)

arg_peaks(data, extrema_chk=extrema_chk)

the function search peaks of spectrum and return positions of all peaks

spectrum(data1D)

input: 1D sample data

find_nearest(positions, value)

input: 1D array and value

find_highest(sorted_posns, value, diap)

input: 1D array and value

nearest_particle(track_list, xi, yi)

harmonic_position(data1D, nu=None, diap=0.1, nearest=False)

function searches three highest harmonics and return:

freq_analysis(track_list, lat, nturns, harm=True, diap=0.1, nearest=False, nsuperperiods=1)

contour_da(track_list, nturns, lvl=0.9)

the function defines contour of DA. If particle “lived” > lvl*nturns then we set up nturns

stable_particles(track_list, nturns)

phase_space_transform(x, y, tws)

curved line of second order

create_track_list(x_array, y_array, p_array, energy=0.0)

the function create list of Pxy

ellipse_track_list(beam, n_t_sigma=3, num=1000, type='contour')

track_nturns(lat, nturns, track_list, nsuperperiods=1, save_track=True, print_progress=True)

track_nturns_mpi(mpi_comm, lat, nturns, track_list, errors=None, nsuperperiods=1, save_track=True)

fma(lat, nturns, x_array, y_array, nsuperperiods=1)

da_mpi(lat, nturns, x_array, y_array, errors=None, nsuperperiods=1)

tracking_step(lat, particle_list, dz, navi)

tracking for a fixed step dz

track(lattice, p_array, navi, print_progress=True, calc_tws=True, bounds=None)

tracking through the lattice

lattice_track(lat, p)

merge_drifts(lat)

update_effective_beta(beam, lat)

ocelot.cpbd.track.__author__ = Sergey Tomin
ocelot.cpbd.track._logger
ocelot.cpbd.track.extrema_chk = 1
ocelot.cpbd.track.aperture_limit(lat, xlim=1, ylim=1)
ocelot.cpbd.track.arg_peaks(data, extrema_chk=extrema_chk)

the function search peaks of spectrum and return positions of all peaks if extrema_chk == 1 uses numpy module if extrema_chk == 0 uses independent code (see below)

ocelot.cpbd.track.spectrum(data1D)

input: 1D sample data output: frequency and fourier transform

ocelot.cpbd.track.find_nearest(positions, value)

input: 1D array and value the function searches nearest value in the array to the given value

ocelot.cpbd.track.find_highest(sorted_posns, value, diap)

input: 1D array and value the function searches highest value in the array to the given value

ocelot.cpbd.track.nearest_particle(track_list, xi, yi)
ocelot.cpbd.track.harmonic_position(data1D, nu=None, diap=0.1, nearest=False)

function searches three highest harmonics and return: a. the highest if nu == None b. the nearest harmonics to the nu (if nu != None)

ocelot.cpbd.track.freq_analysis(track_list, lat, nturns, harm=True, diap=0.1, nearest=False, nsuperperiods=1)
class ocelot.cpbd.track.Track_info(particle, x=0.0, y=0.0)
get_x(self)
get_xp(self)
get_y(self)
get_yp(self)
ocelot.cpbd.track.contour_da(track_list, nturns, lvl=0.9)

the function defines contour of DA. If particle “lived” > lvl*nturns then we set up nturns if particle “lived” < lvl*nturns then we set up 0

ocelot.cpbd.track.stable_particles(track_list, nturns)
ocelot.cpbd.track.phase_space_transform(x, y, tws)

curved line of second order a11*x**2 + a22*y**2 + 2*a12*x*y + 2*a13*x + 2*a23*y + a33 = 0 gamma*x**2 + 2*alpha*x*x’ + beta*x’**2 = const

ocelot.cpbd.track.create_track_list(x_array, y_array, p_array, energy=0.0)

the function create list of Pxy

ocelot.cpbd.track.ellipse_track_list(beam, n_t_sigma=3, num=1000, type='contour')
ocelot.cpbd.track.track_nturns(lat, nturns, track_list, nsuperperiods=1, save_track=True, print_progress=True)
ocelot.cpbd.track.track_nturns_mpi(mpi_comm, lat, nturns, track_list, errors=None, nsuperperiods=1, save_track=True)
ocelot.cpbd.track.fma(lat, nturns, x_array, y_array, nsuperperiods=1)
ocelot.cpbd.track.da_mpi(lat, nturns, x_array, y_array, errors=None, nsuperperiods=1)
ocelot.cpbd.track.tracking_step(lat, particle_list, dz, navi)

tracking for a fixed step dz :param lat: Magnetic Lattice :param particle_list: ParticleArray or Particle list :param dz: step in [m] :param navi: Navigator :return: None

ocelot.cpbd.track.track(lattice, p_array, navi, print_progress=True, calc_tws=True, bounds=None)

tracking through the lattice

Parameters
  • lattice – Magnetic Lattice

  • p_array – ParticleArray

  • navi – Navigator

  • print_progress – True, print tracking progress

  • calc_tws – True, during the tracking twiss parameters are calculated from the beam distribution

  • bounds – None, optional, [left_bound, right_bound] - bounds in units of std(p_array.tau())

Returns

twiss_list, ParticleArray. In case calc_tws=False, twiss_list is list of empty Twiss classes.

ocelot.cpbd.track.lattice_track(lat, p)
ocelot.cpbd.track.merge_drifts(lat)
ocelot.cpbd.track.update_effective_beta(beam, lat)