# -*- coding: utf-8 -*- """ SOLEIL synchrotron parameters script. @author: Alexis Gamelin @date: 14/01/2020 """ import numpy as np from tracking.synchrotron import Synchrotron from tracking.optics import Optics from tracking.particles import Electron, Beam def soleil(mode = 'Uniform'): """ """ h = 416 L = 3.540969742590899e+02 E0 = 2.75e9 particle = Electron() ac = 1.47e-4 U0 = 0.310e6 tau = np.array([6.56e-3, 6.56e-3, 3.27e-3]) tune = np.array([18.15687, 10.22824, 0.00502]) emit = np.array([4.5e-9, 4.5e-9*0.01]) sigma_0 = 8e-12 sigma_delta = 8.6e-4 chro = [2,3] # mean values beta = np.array([3, 1.3]) alpha = np.array([0, 0]) disp = np.array([0, 0]) dispp = np.array([0, 0]) mean_val = Optics(beta, alpha, disp, dispp) ring = Synchrotron(h, L, E0, particle, ac=ac, U0=U0, tau=tau, mean_optics=mean_val, emit=emit, tune=tune, sigma_delta=sigma_delta, sigma_0=sigma_0, chro=chro) if mode == 'Uniform': beam = Beam(ring, ) elif mode == 'Hybrid': pass elif mode == 'Low alpha/25': pass elif mode == 'Low alpha/25': pass elif mode == '8 bunches': pass elif mode == 'Single': pass else: raise ValueError("{} is not a correct operation mode.".format(mode)) return ring