2 \namespace xboa::examples::Example_4
4 Example code to read a file, apply a transformation and plot before and after
6 \include xboa/examples/Example_4.py
29 target_beta = 800.*Common.units[
'mm']
32 print '========= XBOA example 4 ========='
36 Now we start manipulating the data. The idea here is to take particles from
37 one system, apply a match condition so that they can be used in another system.
38 Aim is to mimic an ideal transfer line.
40 print "Loading file... "
41 bunch_list = Bunch.new_list_from_read_builtin(
'icool_for003', sys.prefix+
'/share/xboa/data/for003_test.dat')
45 bunch = bunch_list[-1]
48 bunch.cut({
'energy':400}, operator.ge)
49 bunch.cut({
'energy':150}, operator.le)
51 bunch.cut({
'amplitude x y':90}, operator.ge)
52 bunch.root_scatter_graph(
't',
'energy',
'ns',
'MeV', include_weightless=
False)
54 bunch.period_transformation( bunch[0][
't'], 0.20125*Common.units[
'GHz'])
55 bunch.root_scatter_graph(
't',
'energy',
'ns',
'MeV', include_weightless=
False)
58 print "Longitudinal phase space covariance matrix\n",bunch.covariance_matrix([
't',
'energy'])
59 print 'Longitudinal RMS beta ',bunch.get_beta([
'ct']),
'mm'
60 print 'Longitudinal RMS alpha ',bunch.get_alpha([
'ct'])
61 print 'Longitudinal RMS gamma ',bunch.get_gamma([
'ct']),
'mm^{-1}'
62 print 'Longitudinal RMS emittance',bunch.get_emittance([
'ct']),
'mm'
66 bunch.set_geometric_momentum(
True)
69 emit_trans = bunch.get_emittance([
'x'])
70 print '\nInput phase space (x,x\') covariance matrix\n',bunch.covariance_matrix([
'x',
'x\''])
71 print 'Input RMS beta ',bunch.get_beta([
'x']),
'mm'
72 print 'Input RMS alpha ',bunch.get_alpha([
'x'])
73 print 'Input RMS gamma ',bunch.get_gamma([
'x']),
'mm^{-1}'
74 print 'Input RMS emittance',bunch.get_emittance([
'x']),
'mm'
77 bunch.root_scatter_graph(
'x',
'x\'',
'MeV/c',
'MeV/c', include_weightless=
False)
78 bunch.root_histogram(
'amplitude x',
'mm')
81 target_ellipse = Bunch.build_ellipse_2d(target_beta, target_alpha, emit_trans, bunch.mean([
'p'])[
'p'], Common.pdg_pid_to_mass[13],
True)
82 bunch.transform_to([
'x',
'x\''], target_ellipse, mass_shell_variable=
'energy')
85 print '\nNow I will make a transformation to target (x,x\') covariance matrix\n',target_ellipse
86 print 'Target RMS beta ',target_beta,
'mm'
87 print 'Target RMS alpha ',target_alpha
88 print 'Target RMS gamma ',(1.+target_alpha**2)/target_beta,
'mm^{-1}'
89 print 'Transformation will conserve emittance by construction'
93 print "Transformed phase space (x,x\') covariance matrix\n",bunch.covariance_matrix([
'x',
'x\''])
94 print 'Transformed RMS beta ',bunch.get_beta([
'x']),
'mm'
95 print 'Transformed RMS alpha ',bunch.get_alpha([
'x'])
96 print 'Transformed RMS gamma ',bunch.get_gamma([
'x']),
'mm^{-1}'
97 print 'Transformed RMS emittance',bunch.get_emittance([
'x']),
'mm'
101 bunch.root_scatter_graph(
'x',
'x\'',
'MeV/c',
'MeV/c', include_weightless=
False)
102 bunch.root_histogram(
'amplitude x',
'mm')
105 print 'Mean z at start',bunch.mean([
'z'])[
'z']
106 bunch.translate({
'z':-bunch.mean([
'z'])[
'z']})
107 print 'Mean z at end ',bunch.mean([
'z'])[
'z']
110 bunch.hit_write_builtin(
'icool_for003',
'for003_test.dat',
'for003 file generated by XBOA')
112 print 'Press <return> key to finish'
114 Bunch.clear_global_weights()
Implemented within this module:
common module defines common utility data and functions that are used elsewhere
Implemented within this module: