Skip to content
Snippets Groups Projects
Commit a2ba86e6 authored by Alexis GAMELIN's avatar Alexis GAMELIN
Browse files

[Fix] beam size sigma and import of new plots

Fixed error on the computation of the beam size with dispersion in Synchrotron.sigma method.
Add import of plot_beamspectrum and streak_beamspectrum
parent ce461809
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,8 @@ from mbtrack2.tracking.monitors.plotting import (plot_bunchdata, ...@@ -21,6 +21,8 @@ from mbtrack2.tracking.monitors.plotting import (plot_bunchdata,
plot_cavitydata, plot_cavitydata,
streak_beamdata, streak_beamdata,
plot_bunchspectrum, plot_bunchspectrum,
streak_bunchspectrum) streak_bunchspectrum,
plot_beamspectrum,
streak_beamspectrum)
from mbtrack2.tracking.monitors.tools import merge_files from mbtrack2.tracking.monitors.tools import merge_files
\ No newline at end of file
...@@ -257,13 +257,13 @@ class Synchrotron: ...@@ -257,13 +257,13 @@ class Synchrotron:
if position is None: if position is None:
sigma = np.zeros((4,)) sigma = np.zeros((4,))
sigma[0] = (self.emit[0]*self.optics.local_beta[0] + sigma[0] = (self.emit[0]*self.optics.local_beta[0] +
self.optics.local_dispersion[0]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[0]**2*self.sigma_delta**2)**0.5
sigma[1] = (self.emit[0]*self.optics.local_gamma[0] + sigma[1] = (self.emit[0]*self.optics.local_gamma[0] +
self.optics.local_dispersion[1]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[1]**2*self.sigma_delta**2)**0.5
sigma[2] = (self.emit[1]*self.optics.local_beta[1] + sigma[2] = (self.emit[1]*self.optics.local_beta[1] +
self.optics.local_dispersion[2]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[2]**2*self.sigma_delta**2)**0.5
sigma[3] = (self.emit[1]*self.optics.local_gamma[1] + sigma[3] = (self.emit[1]*self.optics.local_gamma[1] +
self.optics.local_dispersion[3]**2*self.sigma_delta)**0.5 self.optics.local_dispersion[3]**2*self.sigma_delta**2)**0.5
else: else:
if isinstance(position, (float, int)): if isinstance(position, (float, int)):
n = 1 n = 1
...@@ -271,13 +271,13 @@ class Synchrotron: ...@@ -271,13 +271,13 @@ class Synchrotron:
n = len(position) n = len(position)
sigma = np.zeros((4, n)) sigma = np.zeros((4, n))
sigma[0,:] = (self.emit[0]*self.optics.beta(position)[0] + sigma[0,:] = (self.emit[0]*self.optics.beta(position)[0] +
self.optics.dispersion(position)[0]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[0]**2*self.sigma_delta**2)**0.5
sigma[1,:] = (self.emit[0]*self.optics.gamma(position)[0] + sigma[1,:] = (self.emit[0]*self.optics.gamma(position)[0] +
self.optics.dispersion(position)[1]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[1]**2*self.sigma_delta**2)**0.5
sigma[2,:] = (self.emit[1]*self.optics.beta(position)[1] + sigma[2,:] = (self.emit[1]*self.optics.beta(position)[1] +
self.optics.dispersion(position)[2]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[2]**2*self.sigma_delta**2)**0.5
sigma[3,:] = (self.emit[1]*self.optics.gamma(position)[1] + sigma[3,:] = (self.emit[1]*self.optics.gamma(position)[1] +
self.optics.dispersion(position)[3]**2*self.sigma_delta)**0.5 self.optics.dispersion(position)[3]**2*self.sigma_delta**2)**0.5
return sigma return sigma
def synchrotron_tune(self, Vrf): def synchrotron_tune(self, Vrf):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment