Skip to content

Commit d6e144d

Browse files
Merge branch 'release/0.95.0'
2 parents 3f77462 + 2f1c8d6 commit d6e144d

File tree

179 files changed

+2748
-2148
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+2748
-2148
lines changed

examples/acceleration/000_acceleration.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
energy_increase = xt.ReferenceEnergyIncrease(Delta_p0c=Delta_p0c)
1515
line.append_element(energy_increase, 'energy_increase')
16-
line.build_tracker()
1716

1817
particles = xt.Particles(p0c=26e9, zeta=np.linspace(-1, 1, 40))
1918

examples/acceleration/001_energy_ramp.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@
22
from cpymad.madx import Madx
33
import xtrack as xt
44

5-
# Import a line and build a tracker
6-
line = xt.load(
7-
'../../test_data/psb_injection/line_and_particle.json')
8-
e_kin_start_eV = 160e6
9-
line.particle_ref = xt.Particles(mass0=xt.PROTON_MASS_EV, q0=1.,
10-
energy0=xt.PROTON_MASS_EV + e_kin_start_eV)
11-
line.build_tracker()
5+
# Import a line
6+
line = xt.load('../../test_data/psb_injection/line_and_particle.json')
7+
line.set_particle_ref('proton', kinetic_energy0=160e6)
128

139
tw0 = line.twiss4d()
1410

examples/acceleration/002_energy_ramp_transverse.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,11 @@
11
import numpy as np
2-
from cpymad.madx import Madx
32
import xtrack as xt
43

54
# Import a line and build a tracker
6-
7-
test_data_folder = '../../test_data'
8-
9-
mad = Madx(stdout=False)
10-
11-
# Load mad model and apply element shifts
12-
mad.input(f'''
13-
call, file = '{str(test_data_folder)}/psb_chicane/psb.seq';
14-
call, file = '{str(test_data_folder)}/psb_chicane/psb_fb_lhc.str';
15-
beam;
16-
use, sequence=psb1;
17-
''')
18-
19-
line = xt.Line.from_madx_sequence(mad.sequence.psb1,
20-
deferred_expressions=True)
21-
e_kin_start_eV = 160e6
22-
line.particle_ref = xt.Particles(mass0=xt.PROTON_MASS_EV, q0=1.,
23-
energy0=xt.PROTON_MASS_EV + e_kin_start_eV)
5+
env = xt.load('../../test_data/psb_chicane/psb.seq')
6+
env.vars.load('../../test_data/psb_chicane/psb_fb_lhc.str')
7+
line = env.psb1
8+
line.set_particle_ref('proton', kinetic_energy0=160e6)
249

2510
# Slice to gain some tracking speed
2611
line.slice_thick_elements(

examples/amplitude_detuning/000_detuning.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88
line = xt.Line(elements=[xt.LineSegmentMap(qx=62.31, qy=60.32,
99
det_xx=1000, det_xy=10, det_yx=20, det_yy=2000)])
10-
line.particle_ref = xt.Particles(p0c=7e9)
11-
line.build_tracker()
10+
line.set_particle_ref('proton', p0c=7e12)
1211

1312
nemitt_x = 2.5e-6
1413
nemitt_y = 2.5e-6

examples/boris_spatial/000_conventional_boris.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@
181181
line = xt.Line(elements=[xt.VariableSolenoid(length=dz,
182182
ks_profile=[ks_entry[ii], ks_exit[ii]])
183183
for ii in range(len(z_axis)-1)])
184-
line.build_tracker()
185184
line.configure_radiation(model='mean')
186185

187186
p_xt = p0.copy()

examples/boris_spatial/001_spatial_boris.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
line = xt.Line(elements=[xt.VariableSolenoid(length=dz,
5252
ks_profile=[ks_entry[ii], ks_exit[ii]])
5353
for ii in range(len(z_axis)-1)])
54-
line.build_tracker()
5554

5655
p_xt = p0.copy()
5756
line.track(p_xt, turn_by_turn_monitor='ONE_TURN_EBE')

examples/boris_spatial/004_study_convergence.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ def get_field(self, x, y, s):
6666
s_end=sf.s4,
6767
n_steps=n_steps)
6868
line = xt.Line(elements=[integrator])
69-
line.build_tracker()
7069
R_obj = line.compute_one_turn_matrix_finite_differences(particle_on_co=p0.copy(),
7170
include_collective=True
7271
)

examples/collimation/001_loss_location_refinement.py

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,17 @@
1717
# Build test line #
1818
###################
1919

20-
ctx = xo.context_default
21-
buf = ctx.new_buffer()
22-
2320
# We build a test line having two aperture elements which are shifted and
2421
# rotated w.r.t. the accelerator reference frame.
2522

2623
# Define aper_0
27-
aper_0 = xt.LimitEllipse(_buffer=buf, a=2e-2, b=1e-2)
24+
aper_0 = xt.LimitEllipse(a=2e-2, b=1e-2)
2825
shift_aper_0 = (1e-2, 0.5e-2)
2926
rot_deg_aper_0 = 10.
3027

3128
# Define aper_1
32-
aper_1 = xt.LimitRect(_buffer=buf, min_x=-1e-2, max_x=1e-2,
33-
min_y=-2e-2, max_y=2e-2)
29+
aper_1 = xt.LimitRect(min_x=-1e-2, max_x=1e-2,
30+
min_y=-2e-2, max_y=2e-2)
3431
shift_aper_1 = (-5e-3, 1e-2)
3532
rot_deg_aper_1 = 10.
3633
aper_1.shift_x = shift_aper_1[0]
@@ -40,39 +37,35 @@
4037

4138
# aper_0_sandwitch
4239
line_aper_0 = xt.Line(
43-
elements=[xt.XYShift(_buffer=buf, dx=shift_aper_0[0], dy=shift_aper_0[1]),
44-
xt.SRotation(_buffer=buf, angle=rot_deg_aper_0),
40+
elements=[xt.XYShift(dx=shift_aper_0[0], dy=shift_aper_0[1]),
41+
xt.SRotation(angle=rot_deg_aper_0),
4542
aper_0,
46-
xt.Multipole(_buffer=buf, knl=[0.001]),
47-
xt.SRotation(_buffer=buf, angle=-rot_deg_aper_0),
48-
xt.XYShift(_buffer=buf, dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
49-
line_aper_0.build_tracker(_buffer=buf)
43+
xt.Multipole(knl=[0.001]),
44+
xt.SRotation(angle=-rot_deg_aper_0),
45+
xt.XYShift(dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
5046

5147
# aper_1_sandwitch
5248
line_aper_1 = xt.Line(
5349
elements=[aper_1,
54-
xt.Multipole(_buffer=buf, knl=[0.001])
50+
xt.Multipole(knl=[0.001])
5551
])
56-
line_aper_1.build_tracker(_buffer=buf)
5752

5853
#################
5954
# Build tracker #
6055
#################
6156

6257
line=xt.Line(
63-
elements = ((xt.Drift(_buffer=buf, length=0.5),)
58+
elements = ((xt.Drift(length=0.5),)
6459
+ line_aper_0.elements
65-
+ (xt.Drift(_buffer=buf, length=1),
66-
xt.Drift(_buffer=buf, length=1),
67-
xt.Drift(_buffer=buf, length=1.),)
60+
+ (xt.Drift(length=1),
61+
xt.Drift(length=1),
62+
xt.Drift(length=1.),)
6863
+ line_aper_1.elements))
69-
line.build_tracker(_buffer=buf)
7064
num_elements = len(line.element_names)
7165

7266
# Generate test particles
73-
particles = xt.Particles(_context=ctx,
74-
px=np.random.uniform(-0.01, 0.01, 10000),
75-
py=np.random.uniform(-0.01, 0.01, 10000))
67+
particles = xt.Particles(px=np.random.uniform(-0.01, 0.01, 10000),
68+
py=np.random.uniform(-0.01, 0.01, 10000))
7669

7770
#########
7871
# Track #
@@ -111,8 +104,8 @@
111104
loss_loc_refinement.i_apertures[1]]
112105
s0 = interp_line.s0
113106
s1 = interp_line.s1
114-
polygon_0 = interp_line.elements[0]
115-
polygon_1 = interp_line.elements[-1]
107+
polygon_0 = interp_line._elements[0]
108+
polygon_1 = interp_line._elements[-1]
116109
for ii, (ln, poly) in enumerate(
117110
zip([line_aper_0, line_aper_1],
118111
[polygon_0, polygon_1])):
@@ -127,7 +120,6 @@
127120
ln.track(pp)
128121
ids = pp.particle_id
129122

130-
131123
fig = plt.figure(ii+1)
132124
ax = fig.add_subplot(111)
133125
plt.plot(x0, y0, '.', color='red')

examples/collimation/001b_loss_location_refinement_thick_elements.py

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,17 @@
1717
# Build test line #
1818
###################
1919

20-
ctx = xo.context_default
21-
buf = ctx.new_buffer()
22-
2320
# We build a test line having two aperture elements which are shifted and
2421
# rotated w.r.t. the accelerator reference frame.
2522

2623
# Define aper_0
27-
aper_0 = xt.LimitEllipse(_buffer=buf, a=2e-2, b=1e-2)
24+
aper_0 = xt.LimitEllipse(a=2e-2, b=1e-2)
2825
shift_aper_0 = (1e-2, 0.5e-2)
2926
rot_deg_aper_0 = 10.
3027

3128
# Define aper_1
32-
aper_1 = xt.LimitRect(_buffer=buf, min_x=-1e-2, max_x=1e-2,
33-
min_y=-2e-2, max_y=2e-2)
29+
aper_1 = xt.LimitRect(min_x=-1e-2, max_x=1e-2,
30+
min_y=-2e-2, max_y=2e-2)
3431
shift_aper_1 = (-5e-3, 1e-2)
3532
rot_deg_aper_1 = 10.
3633
aper_1.shift_x = shift_aper_1[0]
@@ -40,39 +37,35 @@
4037

4138
# aper_0_sandwitch
4239
line_aper_0 = xt.Line(
43-
elements=[xt.XYShift(_buffer=buf, dx=shift_aper_0[0], dy=shift_aper_0[1]),
44-
xt.SRotation(_buffer=buf, angle=rot_deg_aper_0),
40+
elements=[xt.XYShift(dx=shift_aper_0[0], dy=shift_aper_0[1]),
41+
xt.SRotation(angle=rot_deg_aper_0),
4542
aper_0,
46-
xt.Multipole(_buffer=buf, knl=[0.001]),
47-
xt.SRotation(_buffer=buf, angle=-rot_deg_aper_0),
48-
xt.XYShift(_buffer=buf, dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
49-
line_aper_0.build_tracker(_buffer=buf)
43+
xt.Multipole(knl=[0.001]),
44+
xt.SRotation(angle=-rot_deg_aper_0),
45+
xt.XYShift(dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
5046

5147
# aper_1_sandwitch
5248
line_aper_1 = xt.Line(
5349
elements=[aper_1,
54-
xt.Multipole(_buffer=buf, knl=[0.001])
50+
xt.Multipole(knl=[0.001])
5551
])
56-
line_aper_1.build_tracker(_buffer=buf)
5752

5853
#################
5954
# Build tracker #
6055
#################
6156

6257
line=xt.Line(
63-
elements = ((xt.Drift(_buffer=buf, length=0.5),)
58+
elements = ((xt.Drift(length=0.5),)
6459
+ line_aper_0.elements
65-
+ (xt.Quadrupole(_buffer=buf, length=1),
66-
xt.Quadrupole(_buffer=buf, length=1),
67-
xt.Quadrupole(_buffer=buf, length=1.),)
60+
+ (xt.Quadrupole(length=1),
61+
xt.Quadrupole(length=1),
62+
xt.Quadrupole(length=1.),)
6863
+ line_aper_1.elements))
69-
line.build_tracker(_buffer=buf)
7064
num_elements = len(line.element_names)
7165

7266
# Generate test particles
73-
particles = xt.Particles(_context=ctx,
74-
px=np.random.uniform(-0.01, 0.01, 10000),
75-
py=np.random.uniform(-0.01, 0.01, 10000))
67+
particles = xt.Particles(px=np.random.uniform(-0.01, 0.01, 10000),
68+
py=np.random.uniform(-0.01, 0.01, 10000))
7669

7770
#########
7871
# Track #
@@ -111,8 +104,8 @@
111104
loss_loc_refinement.i_apertures[1]]
112105
s0 = interp_line.s0
113106
s1 = interp_line.s1
114-
polygon_0 = interp_line.elements[0]
115-
polygon_1 = interp_line.elements[-1]
107+
polygon_0 = interp_line._elements[0]
108+
polygon_1 = interp_line._elements[-1]
116109
for ii, (ln, poly) in enumerate(
117110
zip([line_aper_0, line_aper_1],
118111
[polygon_0, polygon_1])):

examples/collimation/002_loss_refinement_check_cone.py

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,67 +18,59 @@
1818
shift_x = 0.3e-2
1919
shift_y = 0.5e-2
2020

21-
ctx = xo.context_default
22-
buf = ctx.new_buffer()
23-
2421
logger = logging.getLogger('xtrack')
2522
logger.setLevel(logging.DEBUG)
2623

2724
# Define aper_0
28-
aper_0 = xt.LimitEllipse(_buffer=buf, a=2e-2, b=2e-2)
25+
aper_0 = xt.LimitEllipse(a=2e-2, b=2e-2)
2926
shift_aper_0 = (shift_x, shift_y)
3027
rot_deg_aper_0 = 10.
3128

3229
# Define aper_1
33-
aper_1 = xt.LimitEllipse(_buffer=buf, a=1e-2, b=1e-2)
30+
aper_1 = xt.LimitEllipse(a=1e-2, b=1e-2)
3431
shift_aper_1 = (shift_x, shift_y)
3532
rot_deg_aper_1 = 10.
3633

3734
# aper_0_sandwitch
3835
line_aper_0 = xt.Line(
39-
elements=[xt.XYShift(_buffer=buf, dx=shift_aper_0[0], dy=shift_aper_0[1]),
40-
xt.SRotation(_buffer=buf, angle=rot_deg_aper_0),
36+
elements=[xt.XYShift(dx=shift_aper_0[0], dy=shift_aper_0[1]),
37+
xt.SRotation(angle=rot_deg_aper_0),
4138
aper_0,
42-
xt.Multipole(_buffer=buf, knl=[0.00]),
43-
xt.SRotation(_buffer=buf, angle=-rot_deg_aper_0),
44-
xt.XYShift(_buffer=buf, dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
45-
line_aper_0.build_tracker(_buffer=buf)
39+
xt.Multipole(knl=[0.00]),
40+
xt.SRotation(angle=-rot_deg_aper_0),
41+
xt.XYShift(dx=-shift_aper_0[0], dy=-shift_aper_0[1])])
4642

4743
# aper_1_sandwitch
4844
line_aper_1 = xt.Line(
49-
elements=[xt.XYShift(_buffer=buf, dx=shift_aper_1[0], dy=shift_aper_1[1]),
50-
xt.SRotation(_buffer=buf, angle=rot_deg_aper_1),
45+
elements=[xt.XYShift(dx=shift_aper_1[0], dy=shift_aper_1[1]),
46+
xt.SRotation(angle=rot_deg_aper_1),
5147
aper_1,
52-
xt.Multipole(_buffer=buf, knl=[0.00]),
53-
xt.SRotation(_buffer=buf, angle=-rot_deg_aper_1),
54-
xt.XYShift(_buffer=buf, dx=-shift_aper_1[0], dy=-shift_aper_1[1])])
55-
line_aper_1.build_tracker(_buffer=buf)
48+
xt.Multipole(knl=[0.00]),
49+
xt.SRotation(angle=-rot_deg_aper_1),
50+
xt.XYShift(dx=-shift_aper_1[0], dy=-shift_aper_1[1])])
5651

5752
# Build example line
5853
line=xt.Line(
59-
elements = ((xt.Drift(_buffer=buf, length=0.5),)
54+
elements = ((xt.Drift(length=0.5),)
6055
+ line_aper_0.elements
61-
+ (xt.Drift(_buffer=buf, length=1),
62-
xt.Multipole(_buffer=buf, knl=[0.]),
63-
xt.Drift(_buffer=buf, length=1),
64-
xt.Cavity(_buffer=buf, voltage=3e6, frequency=400e6),
65-
xt.Drift(_buffer=buf, length=1.),)
56+
+ (xt.Drift(length=1),
57+
xt.Multipole(knl=[0.]),
58+
xt.Drift(length=1),
59+
xt.Cavity(voltage=3e6, frequency=400e6),
60+
xt.Drift(length=1.),)
6661
+ line_aper_1.elements))
6762
num_elements = len(line)
6863

69-
line.build_tracker()
70-
7164
# Test on full line
7265
r = np.linspace(0, 0.018, n_part)
7366
theta = np.linspace(0, 8*np.pi, n_part)
74-
particles = xt.Particles(_context=ctx,
67+
particles = xt.Particles(
7568
p0c=6500e9,
7669
x=r*np.cos(theta)+shift_x,
7770
y=r*np.sin(theta)+shift_y)
7871

7972
line.track(particles)
8073

81-
8274
loss_loc_refinement = xt.LossLocationRefinement(line,
8375
n_theta = 360,
8476
r_max = 0.5, # m
@@ -118,8 +110,8 @@
118110
loss_loc_refinement.i_apertures[1]]
119111
s0 = interp_line.s0
120112
s1 = interp_line.s1
121-
polygon_0 = interp_line.elements[0]
122-
polygon_1 = interp_line.elements[-1]
113+
polygon_0 = interp_line._elements[0]
114+
polygon_1 = interp_line._elements[-1]
123115
for ii, (trkr, poly) in enumerate(
124116
zip([line_aper_0,line_aper_1],
125117
[polygon_0, polygon_1])):

0 commit comments

Comments
 (0)