import sys, os
BIN=os.path.expanduser('../../../')
sys.path.append(BIN)


import numpy as np
import pylab as pl
import mystyle as ms

n_segments = 5
B_multip = [0.]

# define machine for PyHEADTAIL
from PyHEADTAIL.particles.slicing import UniformBinSlicer
from machines_for_testing  import shortSPS
machine = shortSPS(n_segments = n_segments, machine_configuration = 'Q20-injection-like')

# remove synchrotron motion
machine.one_turn_map.remove(machine.longitudinal_map)


# compute sigma x and y
epsn_x = 2.5e-6
epsn_y = 2.5e-6

inj_optics = machine.transverse_map.get_injection_optics()
sigma_x = np.sqrt(inj_optics['beta_x']*epsn_x/machine.betagamma)
sigma_y = np.sqrt(inj_optics['beta_y']*epsn_y/machine.betagamma)

				
# generate a bunch 

import numpy as np
import pylab as pl
import PyECLOUD.mystyle as ms

n_segments = 5
B_multip = [0.5]
n_record = 1000
n_part_per_turn = 5000


# define machine for PyHEADTAIL
from PyHEADTAIL.particles.slicing import UniformBinSlicer
from machines_for_testing  import shortSPS
machine = shortSPS(n_segments=n_segments, machine_configuration='Q20-injection-like')

# remove synchrotron motion
machine.one_turn_map.remove(machine.longitudinal_map)


def dict_of_arrays_and_scalar_from_h5(filename):
	import h5py
	with h5py.File(filename, 'r') as fid:
		f_dict = {}
		for kk in list(fid.keys()):
			f_dict[kk] = np.array(fid[kk]).copy()
			if f_dict[kk].shape == ():
				f_dict[kk] = f_dict[kk].tolist()
	return f_dict