xcoll 0.5.5__py3-none-any.whl → 0.5.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of xcoll might be problematic. Click here for more details.
- xcoll/__init__.py +12 -3
- xcoll/beam_elements/__init__.py +2 -0
- xcoll/beam_elements/base.py +28 -0
- xcoll/colldb.py +2 -3
- xcoll/general.py +1 -1
- xcoll/initial_distribution.py +5 -6
- xcoll/install.py +19 -163
- xcoll/line_tools.py +232 -55
- {xcoll-0.5.5.dist-info → xcoll-0.5.6.dist-info}/METADATA +1 -1
- {xcoll-0.5.5.dist-info → xcoll-0.5.6.dist-info}/RECORD +13 -14
- xcoll/scattering_routines/geometry/temp.c +0 -953
- {xcoll-0.5.5.dist-info → xcoll-0.5.6.dist-info}/LICENSE +0 -0
- {xcoll-0.5.5.dist-info → xcoll-0.5.6.dist-info}/NOTICE +0 -0
- {xcoll-0.5.5.dist-info → xcoll-0.5.6.dist-info}/WHEEL +0 -0
xcoll/line_tools.py
CHANGED
|
@@ -4,12 +4,49 @@
|
|
|
4
4
|
# ######################################### #
|
|
5
5
|
|
|
6
6
|
import numpy as np
|
|
7
|
-
import
|
|
8
|
-
warnings.simplefilter("always")
|
|
7
|
+
from warnings import warn
|
|
9
8
|
|
|
10
9
|
import xtrack as xt
|
|
11
10
|
|
|
12
|
-
from .beam_elements import element_classes, _all_collimator_classes
|
|
11
|
+
from .beam_elements import element_classes, _all_collimator_classes, _all_block_classes
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class XcollScatteringAPI:
|
|
15
|
+
def __init__(self, line):
|
|
16
|
+
self._line = line
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def line(self):
|
|
20
|
+
return self._line
|
|
21
|
+
|
|
22
|
+
def enable(self):
|
|
23
|
+
elements = self.line.get_elements_of_type(element_classes)[0]
|
|
24
|
+
if len(elements) == 0:
|
|
25
|
+
print("No xcoll elements found in line.")
|
|
26
|
+
else:
|
|
27
|
+
nemitt_x = None
|
|
28
|
+
nemitt_y = None
|
|
29
|
+
for el in elements:
|
|
30
|
+
if hasattr(el, 'optics') and el.optics is not None:
|
|
31
|
+
if nemitt_x is None:
|
|
32
|
+
nemitt_x = el.nemitt_x
|
|
33
|
+
if nemitt_y is None:
|
|
34
|
+
nemitt_y = el.nemitt_y
|
|
35
|
+
if not np.isclose(el.nemitt_x, nemitt_x) \
|
|
36
|
+
or not np.isclose(el.nemitt_x, nemitt_x):
|
|
37
|
+
raise ValueError("Not all collimators have the same "
|
|
38
|
+
+ "emittance. This is not supported.")
|
|
39
|
+
if hasattr(el, 'enable_scattering'):
|
|
40
|
+
el.enable_scattering()
|
|
41
|
+
|
|
42
|
+
def disable(self):
|
|
43
|
+
elements = self.line.get_elements_of_type(element_classes)[0]
|
|
44
|
+
if len(elements) == 0:
|
|
45
|
+
print("No xcoll elements found in line.")
|
|
46
|
+
else:
|
|
47
|
+
for el in elements:
|
|
48
|
+
if hasattr(el, 'disable_scattering'):
|
|
49
|
+
el.disable_scattering()
|
|
13
50
|
|
|
14
51
|
|
|
15
52
|
class XcollCollimatorAPI:
|
|
@@ -20,8 +57,169 @@ class XcollCollimatorAPI:
|
|
|
20
57
|
def line(self):
|
|
21
58
|
return self._line
|
|
22
59
|
|
|
60
|
+
def install(self, names, elements, *, at_s=None, apertures=None, need_apertures=False, s_tol=1.e-6):
|
|
61
|
+
if self.line._has_valid_tracker():
|
|
62
|
+
raise Exception("Tracker already built!\nPlease install collimators before building "
|
|
63
|
+
+ "tracker!")
|
|
64
|
+
|
|
65
|
+
if not hasattr(names, '__iter__') or isinstance(names, str):
|
|
66
|
+
names = [names]
|
|
67
|
+
if not hasattr(elements, '__iter__') or isinstance(elements, str):
|
|
68
|
+
elements = [elements]
|
|
69
|
+
names = np.array(names)
|
|
70
|
+
length = np.array([coll.length for coll in elements])
|
|
71
|
+
assert len(length) == len(names)
|
|
72
|
+
if not hasattr(at_s, '__iter__'):
|
|
73
|
+
at_s = [at_s for _ in range(len(names))]
|
|
74
|
+
assert len(at_s) == len(names)
|
|
75
|
+
if isinstance(apertures, str) or not hasattr(apertures, '__iter__'):
|
|
76
|
+
apertures = [apertures for _ in range(len(names))]
|
|
77
|
+
assert len(apertures) == len(names)
|
|
78
|
+
|
|
79
|
+
# Verify elements
|
|
80
|
+
for el in elements:
|
|
81
|
+
print(el.__class__)
|
|
82
|
+
assert isinstance(el, _all_block_classes)
|
|
83
|
+
el._tracking = False
|
|
84
|
+
|
|
85
|
+
# Get positions
|
|
86
|
+
tab = self.line.get_table()
|
|
87
|
+
tt = tab.rows[[name for name in names if name in self.line.element_names]]
|
|
88
|
+
s_start = []
|
|
89
|
+
for name, s, l in zip(names, at_s, length):
|
|
90
|
+
if s is None:
|
|
91
|
+
s_start.append(self._get_s_start(name, length=l, table=tt))
|
|
92
|
+
else:
|
|
93
|
+
s_start.append(s)
|
|
94
|
+
s_start = np.array(s_start)
|
|
95
|
+
s_end = s_start + length
|
|
96
|
+
|
|
97
|
+
# Check positions
|
|
98
|
+
l_line = self.line.get_length()
|
|
99
|
+
for s1, s2, name, s3 in zip(s_start, s_end, names, at_s):
|
|
100
|
+
self.check_position(name, s_start=s1, s_end=s2, at_s=s3, length=l_line, s_tol=s_tol)
|
|
101
|
+
|
|
102
|
+
# Look for apertures
|
|
103
|
+
aper_upstream = []
|
|
104
|
+
aper_downstream = []
|
|
105
|
+
for s1, s2, name, aper in zip(s_start, s_end, names, apertures):
|
|
106
|
+
if not need_apertures:
|
|
107
|
+
aper_upstream.append(None)
|
|
108
|
+
aper_downstream.append(None)
|
|
109
|
+
else:
|
|
110
|
+
aper1, aper2 = self.get_aperture(name, s_start=s1, s_end=s2, aperture=aper, table=tab, s_tol=s_tol)
|
|
111
|
+
aper_upstream.append(aper1)
|
|
112
|
+
aper_downstream.append(aper2)
|
|
113
|
+
|
|
114
|
+
# Remove elements at location of collimator (by changing them into markers)
|
|
115
|
+
for s1, s2, name, el in zip(s_start, s_end, names, elements):
|
|
116
|
+
self.prepare_space(name, s_start=s1, s_end=s2, table=tab, s_tol=s_tol)
|
|
117
|
+
el._line = self.line
|
|
118
|
+
el._name = name
|
|
23
119
|
|
|
24
|
-
|
|
120
|
+
# Install
|
|
121
|
+
self.line._insert_thick_elements_at_s(element_names=list(names), elements=elements, at_s=s_start, s_tol=s_tol)
|
|
122
|
+
|
|
123
|
+
# Install apertures
|
|
124
|
+
if need_apertures:
|
|
125
|
+
for s1, name, aper1, aper2 in zip(s_start, names, aper_upstream, aper_downstream):
|
|
126
|
+
self.line.insert_element(element=aper1, name=f'{name}_aper_upstream', at=name, s_tol=s_tol)
|
|
127
|
+
idx = self.line.element_names.index(name) + 1
|
|
128
|
+
self.line.insert_element(element=aper2, name=f'{name}_aper_downstream', at=idx, s_tol=s_tol)
|
|
129
|
+
|
|
130
|
+
def check_position(self, name, *, s_start, s_end, at_s, length=None, s_tol=1.e-6):
|
|
131
|
+
if at_s is None:
|
|
132
|
+
if name not in self.line.element_names:
|
|
133
|
+
raise ValueError(f"Element {name} not found in line. Provide `at_s`.")
|
|
134
|
+
elif name in self.line.element_names:
|
|
135
|
+
if at_s < s_start or at_s > s_end:
|
|
136
|
+
raise ValueError(f"Element {name} already exists in line at different "
|
|
137
|
+
+ f"location: at_s = {at_s}, exists at [{s_start}, {s_end}].")
|
|
138
|
+
if length is None:
|
|
139
|
+
length = self.line.get_length()
|
|
140
|
+
if s_start <= s_tol:
|
|
141
|
+
raise ValueError(f"Position of {name} too close to start of line. Please cycle.")
|
|
142
|
+
if s_end >= length - s_tol:
|
|
143
|
+
raise ValueError(f"Position of {name} too close to end of line. Please cycle.")
|
|
144
|
+
|
|
145
|
+
def get_apertures_at_s(self, s, *, table=None, s_tol=1.e-6):
|
|
146
|
+
if table is None:
|
|
147
|
+
table = self.line.get_table()
|
|
148
|
+
tab_s = table.rows[s-s_tol:s+s_tol:'s']
|
|
149
|
+
aper = tab_s.rows[[cls.startswith('Limit') for cls in tab_s.element_type]]
|
|
150
|
+
if len(aper) == 0:
|
|
151
|
+
return None
|
|
152
|
+
elif len(aper) == 1:
|
|
153
|
+
return aper.name[0]
|
|
154
|
+
else:
|
|
155
|
+
raise ValueError(f"Multiple apertures found at location {s} with "
|
|
156
|
+
+ f"tolerance {s_tol}: {aper.name}. Not supported.")
|
|
157
|
+
|
|
158
|
+
def get_aperture(self, name, *, s_start, s_end, aperture=None, table=None, s_tol=1.e-6):
|
|
159
|
+
if aperture is not None:
|
|
160
|
+
if isinstance(aperture, str):
|
|
161
|
+
aper1 = self.line[aperture]
|
|
162
|
+
aper2 = self.line[aperture]
|
|
163
|
+
elif hasattr(aperture, '__iter__'):
|
|
164
|
+
if len(aperture) != 2:
|
|
165
|
+
raise ValueError(f"The value `aperture` should be None or a list "
|
|
166
|
+
+ f"[upstream, downstream].")
|
|
167
|
+
assert aperture[0] is not None and aperture[1] is not None
|
|
168
|
+
if isinstance(aperture[0], str):
|
|
169
|
+
aper1 = self.line[aperture[0]]
|
|
170
|
+
if isinstance(aperture[1], str):
|
|
171
|
+
aper2 = self.line[aperture[1]]
|
|
172
|
+
else:
|
|
173
|
+
aper1 = aperture
|
|
174
|
+
aper2 = aperture
|
|
175
|
+
if not xt.line._is_aperture(aper1, self.line):
|
|
176
|
+
raise ValueError(f"Not a valid aperture: {aper1}")
|
|
177
|
+
if not xt.line._is_aperture(aper2, self.line):
|
|
178
|
+
raise ValueError(f"Not a valid aperture: {aper2}")
|
|
179
|
+
return aper1.copy(), aper2.copy()
|
|
180
|
+
else:
|
|
181
|
+
if table is None:
|
|
182
|
+
table = self.line.get_table()
|
|
183
|
+
aper1 = self.get_apertures_at_s(s=s_start, table=table, s_tol=s_tol)
|
|
184
|
+
aper2 = self.get_apertures_at_s(s=s_end, table=table, s_tol=s_tol)
|
|
185
|
+
if aper1 is None and aper2 is not None:
|
|
186
|
+
aper1 = aper2
|
|
187
|
+
print(f"Warning: Could not find upstream aperture for {name}! "
|
|
188
|
+
+ f"Used copy of downstream aperture. Proceed with caution.")
|
|
189
|
+
elif aper2 is None and aper1 is not None:
|
|
190
|
+
aper2 = aper1
|
|
191
|
+
print(f"Warning: Could not find downstream aperture for {name}! "
|
|
192
|
+
+ f"Used copy of upstream aperture. Proceed with caution.")
|
|
193
|
+
elif aper1 is None and aper2 is None:
|
|
194
|
+
aper_mid = self.get_apertures_at_s(s=(s_start+s_end)/2, table=table, s_tol=s_tol)
|
|
195
|
+
if aper_mid is None:
|
|
196
|
+
raise ValueError(f"No aperture found for {name}! Please provide one.")
|
|
197
|
+
if self.line[aper_mid].allow_rot_and_shift \
|
|
198
|
+
and xt.base_element._tranformations_active(self.line[aper_mid]):
|
|
199
|
+
print(f"Warning: Using the centre aperture for {name}, but "
|
|
200
|
+
+ f"transformations are present. Proceed with caution.")
|
|
201
|
+
aper1 = aper_mid
|
|
202
|
+
aper2 = aper_mid
|
|
203
|
+
return self.line[aper1].copy(), self.line[aper2].copy()
|
|
204
|
+
|
|
205
|
+
def prepare_space(self, name, *, s_start, s_end, table=None, s_tol=1.e-6):
|
|
206
|
+
if table is None:
|
|
207
|
+
table = self.line.get_table()
|
|
208
|
+
tt = table.rows[s_start-s_tol:s_end+s_tol:'s']
|
|
209
|
+
for element_name, element_type in zip(tt.name[:-1], tt.element_type[:-1]):
|
|
210
|
+
if element_type == 'Marker' or element_type.startswith('Drift'):
|
|
211
|
+
continue
|
|
212
|
+
if not element_type.startswith('Limit'):
|
|
213
|
+
print(f"Warning: Removed active element {element_name} "
|
|
214
|
+
+ f"at location inside collimator {name}!")
|
|
215
|
+
length = self.line[element_name].length if hasattr(self.line[element_name], 'length') else 0
|
|
216
|
+
self.line.element_dict[element_name] = xt.Drift(length=length)
|
|
217
|
+
|
|
218
|
+
def get_optics_at(self, names, *, twiss=None, tw=None):
|
|
219
|
+
if tw is not None:
|
|
220
|
+
warn("The argument tw is deprecated. Please use twiss instead.", FutureWarning)
|
|
221
|
+
if twiss is None:
|
|
222
|
+
twiss = tw
|
|
25
223
|
if twiss is None:
|
|
26
224
|
if not self.line._has_valid_tracker():
|
|
27
225
|
raise Exception("Please build the tracker before computing the optics for the openings!")
|
|
@@ -34,10 +232,14 @@ class XcollCollimatorAPI:
|
|
|
34
232
|
tw_exit.name = tw_entry.name
|
|
35
233
|
return tw_entry, tw_exit
|
|
36
234
|
|
|
37
|
-
def assign_optics(self, nemitt_x=None, nemitt_y=None, twiss=None):
|
|
235
|
+
def assign_optics(self, *, nemitt_x=None, nemitt_y=None, twiss=None, tw=None):
|
|
236
|
+
if tw is not None:
|
|
237
|
+
warn("The argument tw is deprecated. Please use twiss instead.", FutureWarning)
|
|
238
|
+
if twiss is None:
|
|
239
|
+
twiss = tw
|
|
38
240
|
if not self.line._has_valid_tracker():
|
|
39
241
|
raise Exception("Please build tracker before setting the openings!")
|
|
40
|
-
names = self.line.get_elements_of_type(_all_collimator_classes)[1]
|
|
242
|
+
names = self.line.get_elements_of_type(_all_collimator_classes, _all_block_classes)[1]
|
|
41
243
|
tw_upstream, tw_downstream = self.get_optics_at(names, twiss=twiss)
|
|
42
244
|
beta_gamma_rel = self.line.particle_ref._xobject.gamma0[0]*self.line.particle_ref._xobject.beta0[0]
|
|
43
245
|
for coll in names:
|
|
@@ -46,7 +248,7 @@ class XcollCollimatorAPI:
|
|
|
46
248
|
|
|
47
249
|
def open(self, names=None):
|
|
48
250
|
if names is None:
|
|
49
|
-
names = self.line.get_elements_of_type(_all_collimator_classes)[1]
|
|
251
|
+
names = self.line.get_elements_of_type(_all_collimator_classes, _all_block_classes)[1]
|
|
50
252
|
if len(names) == 0:
|
|
51
253
|
print("No collimators found in line.")
|
|
52
254
|
else:
|
|
@@ -62,73 +264,48 @@ class XcollCollimatorAPI:
|
|
|
62
264
|
else:
|
|
63
265
|
raise NotImplementedError("Need to move this to new type manager or so.")
|
|
64
266
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
self.
|
|
69
|
-
|
|
70
|
-
@property
|
|
71
|
-
def line(self):
|
|
72
|
-
return self._line
|
|
73
|
-
|
|
74
|
-
def enable(self):
|
|
75
|
-
elements = self.line.get_elements_of_type(element_classes)[0]
|
|
76
|
-
if len(elements) == 0:
|
|
77
|
-
print("No xcoll elements found in line.")
|
|
267
|
+
def _get_s_start(self, name, *, length, table=None):
|
|
268
|
+
if table is None:
|
|
269
|
+
table = self.line.get_table()
|
|
270
|
+
if name in self.line.element_names and hasattr(self.line[name], 'length'):
|
|
271
|
+
existing_length = self.line[name].length
|
|
78
272
|
else:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if nemitt_x is None:
|
|
84
|
-
nemitt_x = el.nemitt_x
|
|
85
|
-
if nemitt_y is None:
|
|
86
|
-
nemitt_y = el.nemitt_y
|
|
87
|
-
if not np.isclose(el.nemitt_x, nemitt_x) \
|
|
88
|
-
or not np.isclose(el.nemitt_x, nemitt_x):
|
|
89
|
-
raise ValueError("Not all collimators have the same "
|
|
90
|
-
+ "emittance. This is not supported.")
|
|
91
|
-
if hasattr(el, 'enable_scattering'):
|
|
92
|
-
el.enable_scattering()
|
|
93
|
-
|
|
94
|
-
def disable(self):
|
|
95
|
-
elements = self.line.get_elements_of_type(element_classes)[0]
|
|
96
|
-
if len(elements) == 0:
|
|
97
|
-
print("No xcoll elements found in line.")
|
|
98
|
-
else:
|
|
99
|
-
for el in elements:
|
|
100
|
-
if hasattr(el, 'disable_scattering'):
|
|
101
|
-
el.disable_scattering()
|
|
273
|
+
existing_length = 0
|
|
274
|
+
if name not in table.name:
|
|
275
|
+
raise ValueError(f"Element {name} not found in line. Need to manually provide `at_s`.")
|
|
276
|
+
return table.rows[name].s[0] + existing_length/2. - length/2
|
|
102
277
|
|
|
103
278
|
|
|
104
279
|
|
|
280
|
+
# Deprecated; to be removed
|
|
281
|
+
# -------------------------
|
|
105
282
|
|
|
106
283
|
def assign_optics_to_collimators(line, nemitt_x=None, nemitt_y=None, twiss=None):
|
|
107
|
-
|
|
108
|
-
|
|
284
|
+
warn("The function xcoll.assign_optics_to_collimators() is deprecated and will be "
|
|
285
|
+
+ "removed in the future. Please use line.scattering.assign_optics() instead.", FutureWarning)
|
|
109
286
|
line.collimators.assign_optics(nemitt_x=nemitt_x, nemitt_y=nemitt_y, twiss=twiss)
|
|
110
287
|
|
|
111
288
|
def get_optics_at(names, *, twiss=None, line=None):
|
|
112
|
-
|
|
113
|
-
|
|
289
|
+
warn("The function xcoll.get_optics_at() is deprecated and will be "
|
|
290
|
+
+ "removed in the future. Please use line.scattering.get_optics_at() instead.", FutureWarning)
|
|
114
291
|
return line.collimators.get_optics_at(names=names, twiss=twiss)
|
|
115
292
|
|
|
116
293
|
def open_collimators(line, names=None):
|
|
117
|
-
|
|
118
|
-
|
|
294
|
+
warn("The function xcoll.open_collimators() is deprecated and will be "
|
|
295
|
+
+ "removed in the future. Please use line.scattering.open_collimators() instead.", FutureWarning)
|
|
119
296
|
line.collimators.open(names=names)
|
|
120
297
|
|
|
121
298
|
def send_to_parking(line, names=None):
|
|
122
|
-
|
|
123
|
-
|
|
299
|
+
warn("The function xcoll.send_to_parking() is deprecated and will be "
|
|
300
|
+
+ "removed in the future. Please use line.scattering.send_to_parking() instead.", FutureWarning)
|
|
124
301
|
line.collimators.to_parking(names=names)
|
|
125
302
|
|
|
126
303
|
def enable_scattering(line):
|
|
127
|
-
|
|
128
|
-
|
|
304
|
+
warn("The function xcoll.enable_scattering() is deprecated and will be "
|
|
305
|
+
+ "removed in the future. Please use line.scattering.enable() instead.", FutureWarning)
|
|
129
306
|
line.scattering.enable()
|
|
130
307
|
|
|
131
308
|
def disable_scattering(line):
|
|
132
|
-
|
|
133
|
-
|
|
309
|
+
warn("The function xcoll.disable_scattering() is deprecated and will be "
|
|
310
|
+
+ "removed in the future. Please use line.scattering.disable() instead.", FutureWarning)
|
|
134
311
|
line.scattering.disable()
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
2
2
|
NOTICE,sha256=6DO_E7WCdRKc42vUoVVBPGttvQi4mRt9fAcxj9u8zy8,74
|
|
3
|
-
xcoll/__init__.py,sha256=
|
|
3
|
+
xcoll/__init__.py,sha256=b_61vh5irhf5fPmqTFJlyhNSt4rmftXg9uXPIEpgVB4,1612
|
|
4
4
|
xcoll/_manager.py,sha256=9NQKaNxZR2I1ChMVBeKQc0A8h6W8gVgRRg72a5NgbXU,808
|
|
5
|
-
xcoll/beam_elements/__init__.py,sha256=
|
|
5
|
+
xcoll/beam_elements/__init__.py,sha256=GX3Gj3R1VpRxKft9TZIy0cw5mNG4o1KGNfE28-ExcGs,1290
|
|
6
6
|
xcoll/beam_elements/absorber.py,sha256=efK6gyUgD4x_FnBLpMR7-5_HCdp_753nkYikcdn6ulw,2502
|
|
7
|
-
xcoll/beam_elements/base.py,sha256=
|
|
7
|
+
xcoll/beam_elements/base.py,sha256=xLeelb8Amro15kPbcSCBpsDbQ4SKG7qQb2tb5_1-ArQ,52933
|
|
8
8
|
xcoll/beam_elements/blowup.py,sha256=gBXdlISvoDiMjXVpA77ls5QdAU3H9krwvFt2bSW_NII,8029
|
|
9
9
|
xcoll/beam_elements/elements_src/black_absorber.h,sha256=jCyQoaZ7VsIu8coQ99J1dDtAGqZpFIxxFLBlfhO6Drw,5027
|
|
10
10
|
xcoll/beam_elements/elements_src/black_crystal.h,sha256=x7oUwsrkUwUrFvhFsq8vtPkJJTSi1hYAhSt6fjzkJQo,4622
|
|
@@ -15,17 +15,17 @@ xcoll/beam_elements/elements_src/everest_collimator.h,sha256=DlWkb5RORnp5VwI7E31
|
|
|
15
15
|
xcoll/beam_elements/elements_src/everest_crystal.h,sha256=w1wHWhrvodvcJ2Atr8LSaVYHfCU3Y63KAjZZFFv87OI,12123
|
|
16
16
|
xcoll/beam_elements/everest.py,sha256=PA_VWpnPrIuO1xN__eKyT_ejbGZK7p93QHDVi3re7cM,8541
|
|
17
17
|
xcoll/beam_elements/monitor.py,sha256=zzMdN3JMFSAs-30_ntRvd5qZGdsXfGtColhiFDuMcIk,16928
|
|
18
|
-
xcoll/colldb.py,sha256=
|
|
19
|
-
xcoll/general.py,sha256=
|
|
18
|
+
xcoll/colldb.py,sha256=vp9m4A0_4y7RVkrpaowt9-08Umhb8AwAkXkiwFikuCc,30993
|
|
19
|
+
xcoll/general.py,sha256=hqc9uwLEA8CVMamQTCgV-N-fnAbwU9vV-q8b1KYmz8U,534
|
|
20
20
|
xcoll/headers/checks.h,sha256=qdXsOTBOK1MwW6bdFF93j4yE648mcDtEv5rGN1w9sfk,1582
|
|
21
21
|
xcoll/headers/particle_states.h,sha256=DZa_ZSaJrjnA8aHFriZKfRCkArQ8nK1t445MRwevDtA,840
|
|
22
|
-
xcoll/initial_distribution.py,sha256=
|
|
23
|
-
xcoll/install.py,sha256=
|
|
22
|
+
xcoll/initial_distribution.py,sha256=_pm93FNNTO1GROni5j5sCdw8McXQ7PUMyVSXLbDNCxI,8789
|
|
23
|
+
xcoll/install.py,sha256=SxEFQnhWXlsXyPBIo847q6wPgId_f5ZtFRR1awGbkjc,2108
|
|
24
24
|
xcoll/interaction_record/__init__.py,sha256=UFoLiKa-z2oX7YoszP-7Vgdt1nM6kT382v1CaIu8_u0,50
|
|
25
25
|
xcoll/interaction_record/interaction_record.py,sha256=G2sFXgfmkgpDMaHWJaC80aAreHbY2rGhbkhaMhWKQBg,13192
|
|
26
26
|
xcoll/interaction_record/interaction_record_src/interaction_record.h,sha256=0rNagnfSGc2i1jauOMIcDbj9QFic9dV_MOyqVx1kw5Q,6067
|
|
27
27
|
xcoll/interaction_record/interaction_types.py,sha256=Vh6oFYKdRNOx9hc_E0iT8auNZVKC0qYVp_p7oyClZ8o,2894
|
|
28
|
-
xcoll/line_tools.py,sha256=
|
|
28
|
+
xcoll/line_tools.py,sha256=XAOHKLP1I0MuUWlTQvnIWy07MbaUxz64QeUtbMiNpo4,14396
|
|
29
29
|
xcoll/lossmap.py,sha256=pV6uf-CKt6PROK_EZ2_DieJftRI2NcsE3CLG23Fth-I,8087
|
|
30
30
|
xcoll/rf_sweep.py,sha256=P2X1S9pGi4OpNYnzYfQVyblFt2p8aw9EWHsKDkAuYt0,8936
|
|
31
31
|
xcoll/scattering_routines/everest/__init__.py,sha256=7lkkeZ1liBjXVHCuRpgzZI6ohzHVMj5uJBO792147XY,286
|
|
@@ -406,9 +406,8 @@ xcoll/scattering_routines/geometry/objects.h,sha256=A5ktGvVlSkC4hUsI_PQFsE80CuDw
|
|
|
406
406
|
xcoll/scattering_routines/geometry/rotation.h,sha256=lO3RaQBys9r0ROMjR8T8Rr7UsIEm-H9_C_70Nwz4MXY,701
|
|
407
407
|
xcoll/scattering_routines/geometry/segments.h,sha256=7nKnnin2ByxkKyaYwGvFaqgLQg5uBba4CdLHL7L3iQs,7667
|
|
408
408
|
xcoll/scattering_routines/geometry/sort.h,sha256=b1MkFO2ddzv1fWGeQzsLuz46qo2pKyRSXHjoAEVU7Ts,5763
|
|
409
|
-
xcoll/
|
|
410
|
-
xcoll-0.5.
|
|
411
|
-
xcoll-0.5.
|
|
412
|
-
xcoll-0.5.
|
|
413
|
-
xcoll-0.5.
|
|
414
|
-
xcoll-0.5.5.dist-info/RECORD,,
|
|
409
|
+
xcoll-0.5.6.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
410
|
+
xcoll-0.5.6.dist-info/METADATA,sha256=5ySOFXnd3w9Lu6ZAzodeT5WGHSmud6esOCZh-L10mxQ,2709
|
|
411
|
+
xcoll-0.5.6.dist-info/NOTICE,sha256=6DO_E7WCdRKc42vUoVVBPGttvQi4mRt9fAcxj9u8zy8,74
|
|
412
|
+
xcoll-0.5.6.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
413
|
+
xcoll-0.5.6.dist-info/RECORD,,
|