xtrack 0.88.6__tar.gz → 0.88.8__tar.gz

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.
Files changed (322) hide show
  1. {xtrack-0.88.6/xtrack.egg-info → xtrack-0.88.8}/PKG-INFO +1 -1
  2. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_elements_thick.py +158 -1
  3. xtrack-0.88.8/xtrack/_version.py +1 -0
  4. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements.py +8 -0
  5. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/bend.h +2 -0
  6. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/magnet.h +2 -0
  7. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/magnet_edge.h +2 -0
  8. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/multipole.h +2 -0
  9. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/octupole.h +2 -0
  10. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/quadrupole.h +2 -0
  11. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/rbend.h +2 -0
  12. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/sextupole.h +2 -0
  13. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/slnd.h +2 -0
  14. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_bend.h +2 -0
  15. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +2 -0
  16. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +2 -0
  17. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +2 -0
  18. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +2 -0
  19. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +2 -0
  20. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_bend.h +2 -0
  21. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +2 -0
  22. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +2 -0
  23. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +2 -0
  24. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +2 -0
  25. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +2 -0
  26. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +2 -0
  27. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +2 -0
  28. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +2 -0
  29. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +2 -0
  30. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +2 -0
  31. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +2 -0
  32. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +2 -0
  33. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +2 -0
  34. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +2 -0
  35. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +2 -0
  36. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +2 -0
  37. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_magnet.h +13 -1
  38. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_magnet_drift.h +10 -6
  39. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_magnet_edge.h +4 -2
  40. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_magnet_kick.h +4 -2
  41. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/variable_solenoid.h +8 -4
  42. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/twiss.py +6 -0
  43. {xtrack-0.88.6 → xtrack-0.88.8/xtrack.egg-info}/PKG-INFO +1 -1
  44. xtrack-0.88.6/xtrack/_version.py +0 -1
  45. {xtrack-0.88.6 → xtrack-0.88.8}/LICENSE +0 -0
  46. {xtrack-0.88.6 → xtrack-0.88.8}/MANIFEST.in +0 -0
  47. {xtrack-0.88.6 → xtrack-0.88.8}/README.md +0 -0
  48. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/__init__.py +0 -0
  49. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/base_classes.py +0 -0
  50. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/BB6D.py +0 -0
  51. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  52. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/__init__.py +0 -0
  53. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/beambeam.py +0 -0
  54. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/boost.py +0 -0
  55. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  56. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  57. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/qgauss.py +0 -0
  58. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/slicing.py +0 -0
  59. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/be_beamfields/spacecharge.py +0 -0
  60. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/elements.py +0 -0
  61. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/line.py +0 -0
  62. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/mathlibs.py +0 -0
  63. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/particles.py +0 -0
  64. {xtrack-0.88.6 → xtrack-0.88.8}/ducktrack/temp_pyparticles.py +0 -0
  65. {xtrack-0.88.6 → xtrack-0.88.8}/pyproject.toml +0 -0
  66. {xtrack-0.88.6 → xtrack-0.88.8}/setup.cfg +0 -0
  67. {xtrack-0.88.6 → xtrack-0.88.8}/setup.py +0 -0
  68. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_acceleration.py +0 -0
  69. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_amplitude_detuning.py +0 -0
  70. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_aperture_table.py +0 -0
  71. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  72. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_apertures.py +0 -0
  73. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_attr_replicas_and_slices.py +0 -0
  74. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_bucket_with_ref_energy_change.py +0 -0
  75. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_cavity_absolute_time.py +0 -0
  76. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_chromatic_functions_vs_madx.py +0 -0
  77. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_coasting.py +0 -0
  78. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_collective_tracker.py +0 -0
  79. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_collimation.py +0 -0
  80. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_electron_cooler.py +0 -0
  81. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_element_characterization_functions.py +0 -0
  82. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_element_internal_record.py +0 -0
  83. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_elements.py +0 -0
  84. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_elements_classflags.py +0 -0
  85. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_environment.py +0 -0
  86. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  87. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  88. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_footprint.py +0 -0
  89. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_freeze_longitudinal.py +0 -0
  90. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_full_rings.py +0 -0
  91. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_h6_sps_beamline.py +0 -0
  92. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_hvkick.py +0 -0
  93. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_ions.py +0 -0
  94. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_legacy_multiline_to_env.py +0 -0
  95. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_lhc_env.py +0 -0
  96. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_lhc_match_phase_15.py +0 -0
  97. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_line.py +0 -0
  98. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_load.py +0 -0
  99. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_load_vars.py +0 -0
  100. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_lumi.py +0 -0
  101. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_mad_writer.py +0 -0
  102. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_madloader.py +0 -0
  103. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_madnginterface.py +0 -0
  104. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_magnet.py +0 -0
  105. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_and_track_from_element.py +0 -0
  106. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_coupling_knob.py +0 -0
  107. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_nested.py +0 -0
  108. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_optics_and_ip_knob.py +0 -0
  109. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  110. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_orbit_bump.py +0 -0
  111. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_match_tune_chroma_cminus.py +0 -0
  112. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_monitor.py +0 -0
  113. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_multi_bunch_gauss.py +0 -0
  114. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_multiline.py +0 -0
  115. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_multisetter.py +0 -0
  116. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_multispecies.py +0 -0
  117. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_native_madloader.py +0 -0
  118. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_optimize_for_tracking.py +0 -0
  119. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_particles.py +0 -0
  120. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_particles_basics.py +0 -0
  121. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_particles_pdg.py +0 -0
  122. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  123. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_pipeline.py +0 -0
  124. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_prebuild_kernels.py +0 -0
  125. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_ps_against_ptc.py +0 -0
  126. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_ps_multiturn_twiss.py +0 -0
  127. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_psb_chicane.py +0 -0
  128. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_pyht_interface.py +0 -0
  129. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_quadrupole_fringe_ptc.py +0 -0
  130. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_quadrupole_wedge.py +0 -0
  131. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_radial_steering.py +0 -0
  132. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_radiation.py +0 -0
  133. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_radiation_equilibrium_emittances.py +0 -0
  134. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  135. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_radiation_integrals.py +0 -0
  136. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_random_gen.py +0 -0
  137. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_random_gen_exp.py +0 -0
  138. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_random_gen_gauss.py +0 -0
  139. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_random_gen_ruth.py +0 -0
  140. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_rbend_rbarc.py +0 -0
  141. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_rbend_straight_body.py +0 -0
  142. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_rf_track.py +0 -0
  143. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_rotation_signs.py +0 -0
  144. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_second_order_taylor_map.py +0 -0
  145. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_seeds.py +0 -0
  146. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_slice_and_insert_with_replicas.py +0 -0
  147. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_slice_elements.py +0 -0
  148. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_slicing.py +0 -0
  149. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  150. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
  151. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_spacecharge_in_ring.py +0 -0
  152. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_spin.py +0 -0
  153. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_sps_thick.py +0 -0
  154. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_survey.py +0 -0
  155. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_tapering.py +0 -0
  156. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_thick_lhc.py +0 -0
  157. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_tilt_shifts.py +0 -0
  158. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_tracker.py +0 -0
  159. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_trajectory_correcton.py +0 -0
  160. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_twiss.py +0 -0
  161. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_twiss_vs_madx_psb.py +0 -0
  162. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_vs_madx.py +0 -0
  163. {xtrack-0.88.6 → xtrack-0.88.8}/tests/test_xmask_orbit_correction.py +0 -0
  164. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/__init__.py +0 -0
  165. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/__init__.py +0 -0
  166. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  167. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  168. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  169. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/lhc_match/__init__.py +0 -0
  170. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  171. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  172. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  173. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/aperture_meas.py +0 -0
  174. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/base_element.py +0 -0
  175. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/__init__.py +0 -0
  176. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures.py +0 -0
  177. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  178. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  179. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  180. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  181. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  182. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  183. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/beam_interaction.py +0 -0
  184. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  185. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
  186. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  187. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  188. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift.h +0 -0
  189. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  190. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  191. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  192. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  193. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  194. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  195. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
  196. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  197. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/elens.h +0 -0
  198. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  199. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  200. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
  201. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  202. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  203. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  204. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/marker.h +0 -0
  205. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  206. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  207. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  208. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  209. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  210. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  211. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  212. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  213. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_cavity.h +0 -0
  214. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  215. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  216. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  217. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  218. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
  219. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
  220. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
  221. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  222. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  223. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  224. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  225. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  226. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  227. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  228. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  229. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  230. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/wire.h +0 -0
  231. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  232. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  233. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  234. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  235. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/exciter.py +0 -0
  236. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/magnets.py +0 -0
  237. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/rft_element.py +0 -0
  238. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/slice_base.py +0 -0
  239. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/slice_elements_drift.py +0 -0
  240. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/slice_elements_edge.py +0 -0
  241. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  242. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/beam_elements/slice_elements_thin.py +0 -0
  243. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/environment.py +0 -0
  244. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/footprint.py +0 -0
  245. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/general.py +0 -0
  246. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/atomicadd.h +0 -0
  247. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/checks.h +0 -0
  248. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/constants.h +0 -0
  249. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/particle_states.h +0 -0
  250. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/synrad_spectrum.h +0 -0
  251. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/headers/track.h +0 -0
  252. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/internal_record.py +0 -0
  253. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/json.py +0 -0
  254. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/line.py +0 -0
  255. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/linear_normal_form.py +0 -0
  256. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/load.py +0 -0
  257. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/loss_location_refinement/__init__.py +0 -0
  258. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  259. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/lumi.py +0 -0
  260. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_loader.py +0 -0
  261. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_parser/__init__.py +0 -0
  262. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_parser/loader.py +0 -0
  263. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_parser/madx.lark +0 -0
  264. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_parser/parse.py +0 -0
  265. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/mad_writer.py +0 -0
  266. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/madng_interface.py +0 -0
  267. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/match.py +0 -0
  268. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/__init__.py +0 -0
  269. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_position_monitor.h +0 -0
  270. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_position_monitor.py +0 -0
  271. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_profile_monitor.h +0 -0
  272. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_profile_monitor.py +0 -0
  273. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_size_monitor.h +0 -0
  274. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/beam_size_monitor.py +0 -0
  275. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/last_turns_monitor.h +0 -0
  276. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/last_turns_monitor.py +0 -0
  277. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/particles_monitor.h +0 -0
  278. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/monitors/particles_monitor.py +0 -0
  279. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multiline.py +0 -0
  280. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multiline_legacy/__init__.py +0 -0
  281. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  282. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  283. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multisetter/__init__.py +0 -0
  284. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/multisetter/multisetter.py +0 -0
  285. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/__init__.py +0 -0
  286. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/constants.py +0 -0
  287. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/masses.py +0 -0
  288. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/particles.py +0 -0
  289. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/pdg.py +0 -0
  290. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/rng_src/base_rng.h +0 -0
  291. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/particles/rng_src/particles_rng.h +0 -0
  292. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/pipeline/__init__.py +0 -0
  293. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/pipeline/core.py +0 -0
  294. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/pipeline/manager.py +0 -0
  295. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/pipeline/multitracker.py +0 -0
  296. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/progress_indicator.py +0 -0
  297. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/__init__.py +0 -0
  298. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_generators.py +0 -0
  299. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/exponential.h +0 -0
  300. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  301. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/normal.h +0 -0
  302. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/rutherford.h +0 -0
  303. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/uniform.h +0 -0
  304. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/random/random_src/uniform_accurate.h +0 -0
  305. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/slicing.py +0 -0
  306. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/survey.py +0 -0
  307. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/svgutils/__init__.py +0 -0
  308. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/svgutils/parser.py +0 -0
  309. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/svgutils/path.py +0 -0
  310. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/svgutils/svgutils.py +0 -0
  311. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/synctime.py +0 -0
  312. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/tapering.py +0 -0
  313. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/targets.py +0 -0
  314. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/tracker.py +0 -0
  315. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/tracker_data.py +0 -0
  316. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/tracker_src/tracker.h +0 -0
  317. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/trajectory_correction.py +0 -0
  318. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack/twissplot.py +0 -0
  319. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack.egg-info/SOURCES.txt +0 -0
  320. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack.egg-info/dependency_links.txt +0 -0
  321. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack.egg-info/requires.txt +0 -0
  322. {xtrack-0.88.6 → xtrack-0.88.8}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.88.6
3
+ Version: 0.88.8
4
4
  Summary: Tracking library for particle accelerators
5
5
  Home-page: https://xsuite.readthedocs.io/
6
6
  Download-URL: https://pypi.python.org/pypi/xtrack
@@ -2361,4 +2361,161 @@ def test_uniform_solenoid_with_slices(test_context, reference):
2361
2361
  xo.assert_allclose(tw_back.rows[:'e0..0'].ax, tw['ax', 'e0..0'],
2362
2362
  rtol=0, atol=1e-10)
2363
2363
  xo.assert_allclose(tw_back.rows[:'e0..0'].ay, tw['ay', 'e0..0'],
2364
- rtol=0, atol=1e-10)
2364
+ rtol=0, atol=1e-10)
2365
+
2366
+ @for_all_test_contexts
2367
+ def test_uniform_solenoid_x0y0(test_context):
2368
+
2369
+ env = xt.Environment()
2370
+ env.particle_ref = xt.Particles(mass0=xt.ELECTRON_MASS_EV, p0c=20e9)
2371
+
2372
+ line_ref = env.new_line(components=[
2373
+ env.new('sol_ref',xt.UniformSolenoid, length=3, ks=0.2),
2374
+ env.new('end', xt.Marker)
2375
+ ])
2376
+ line_ref_thick = line_ref.copy(shallow=True)
2377
+ line_ref.cut_at_s(np.linspace(0, 3, 5))
2378
+ tw_ref = line_ref.twiss(x=0.1, y=0.2, betx=1, bety=1)
2379
+ tw_ref_thick = line_ref_thick.twiss(x=0.1, y=0.2, betx=1, bety=1)
2380
+
2381
+ x0 = 0.05
2382
+ y0 = 0.15
2383
+ line_test = env.new_line(components=[
2384
+ env.new('solt_test', xt.UniformSolenoid, length=3, ks=0.2, x0=x0, y0=y0),
2385
+ env.place('end')
2386
+ ])
2387
+ line_test_thick = line_test.copy(shallow=True)
2388
+ line_test.build_tracker(test_context)
2389
+ line_test.cut_at_s(np.linspace(0, 3, 5))
2390
+ line_test_thick.build_tracker(test_context)
2391
+ tw_test = line_test.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2392
+ tw_test_thick = line_test_thick.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2393
+
2394
+ xo.assert_allclose(tw_test.x, tw_ref.x + x0, rtol=0, atol=1e-14)
2395
+ xo.assert_allclose(tw_test.y, tw_ref.y + y0, rtol=0, atol=1e-14)
2396
+ xo.assert_allclose(tw_test.px, tw_ref.px, rtol=0, atol=1e-14)
2397
+ xo.assert_allclose(tw_test.py, tw_ref.py, rtol=0, atol=1e-14)
2398
+ xo.assert_allclose(tw_test.kin_px, tw_ref.kin_px, rtol=0, atol=1e-14)
2399
+ xo.assert_allclose(tw_test.kin_py, tw_ref.kin_py, rtol=0, atol=1e-14)
2400
+
2401
+ xo.assert_allclose(tw_ref_thick.x[-1], tw_ref.x[-1], rtol=0, atol=1e-14)
2402
+ xo.assert_allclose(tw_ref_thick.y[-1], tw_ref.y[-1], rtol=0, atol=1e-14)
2403
+ xo.assert_allclose(tw_ref_thick.px[-1], tw_ref.px[-1], rtol=0, atol=1e-14)
2404
+ xo.assert_allclose(tw_ref_thick.py[-1], tw_ref.py[-1], rtol=0, atol=1e-14)
2405
+ xo.assert_allclose(tw_ref_thick.kin_px[-1], tw_ref.kin_px[-1], rtol=0, atol=1e-14)
2406
+ xo.assert_allclose(tw_ref_thick.kin_py[-1], tw_ref.kin_py[-1], rtol=0, atol=1e-14)
2407
+
2408
+ xo.assert_allclose(tw_test_thick.x[-1], tw_test.x[-1], rtol=0, atol=1e-14)
2409
+ xo.assert_allclose(tw_test_thick.y[-1], tw_test.y[-1], rtol=0, atol=1e-14)
2410
+ xo.assert_allclose(tw_test_thick.px[-1], tw_test.px[-1], rtol=0, atol=1e-14)
2411
+ xo.assert_allclose(tw_test_thick.py[-1], tw_test.py[-1], rtol=0, atol=1e-14)
2412
+ xo.assert_allclose(tw_test_thick.kin_px[-1], tw_test.kin_px[-1], rtol=0, atol=1e-14)
2413
+ xo.assert_allclose(tw_test_thick.kin_py[-1], tw_test.kin_py[-1], rtol=0, atol=1e-14)
2414
+
2415
+ tw_ref_back = line_ref.twiss(init=tw_ref, init_at='end')
2416
+ tw_test_back = line_test.twiss(init=tw_test, init_at='end')
2417
+ tw_ref_thick_back = line_ref_thick.twiss(init=tw_ref_thick, init_at='end')
2418
+ tw_test_thick_back = line_test_thick.twiss(init=tw_test_thick, init_at='end')
2419
+
2420
+ for ttest, tref in zip([tw_ref_back, tw_test_back, tw_ref_thick_back, tw_test_thick_back],
2421
+ [tw_ref, tw_test, tw_ref_thick, tw_test_thick]):
2422
+ xo.assert_allclose(ttest.x, tref.x, rtol=0, atol=1e-14)
2423
+ xo.assert_allclose(ttest.y, tref.y, rtol=0, atol=1e-14)
2424
+ xo.assert_allclose(ttest.px, tref.px, rtol=0, atol=1e-14)
2425
+ xo.assert_allclose(ttest.py, tref.py, rtol=0, atol=1e-14)
2426
+ xo.assert_allclose(ttest.kin_px, tref.kin_px, rtol=0, atol=1e-14)
2427
+ xo.assert_allclose(ttest.kin_py, tref.kin_py, rtol=0, atol=1e-14)
2428
+
2429
+ line_test.discard_tracker()
2430
+ line_test_thick.discard_tracker()
2431
+ line_test.build_tracker(xo.context_default)
2432
+ line_test_thick.build_tracker(xo.context_default)
2433
+
2434
+ line_ref.configure_radiation(model='mean')
2435
+ line_test.configure_radiation(model='mean')
2436
+ line_ref_thick.configure_radiation(model='mean')
2437
+ line_test_thick.configure_radiation(model='mean')
2438
+
2439
+ tw_ref_rad = line_ref.twiss(x=0.1, y=0.2, betx=1, bety=1)
2440
+ tw_test_rad = line_test.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2441
+ tw_ref_thick_rad = line_ref_thick.twiss(x=0.1, y=0.2, betx=1, bety=1)
2442
+ tw_test_thick_rad = line_test_thick.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2443
+
2444
+ assert tw_test_rad.delta[-1] < -5e-6
2445
+ xo.assert_allclose(tw_test_rad.x, tw_ref_rad.x + x0, rtol=0, atol=1e-14)
2446
+ xo.assert_allclose(tw_test_rad.y, tw_ref_rad.y + y0, rtol=0, atol=1e-14)
2447
+ xo.assert_allclose(tw_test_rad.px, tw_ref_rad.px, rtol=0, atol=1e-14)
2448
+ xo.assert_allclose(tw_test_rad.py, tw_ref_rad.py, rtol=0, atol=1e-14)
2449
+ xo.assert_allclose(tw_test_rad.kin_px, tw_ref_rad.kin_px, rtol=0, atol=1e-14)
2450
+ xo.assert_allclose(tw_test_rad.kin_py, tw_ref_rad.kin_py, rtol=0, atol=1e-14)
2451
+ xo.assert_allclose(tw_test_rad.delta, tw_ref_rad.delta, rtol=0, atol=1e-14)
2452
+
2453
+ xo.assert_allclose(tw_test_thick_rad.x, tw_ref_thick_rad.x + x0, rtol=0, atol=1e-14)
2454
+ xo.assert_allclose(tw_test_thick_rad.y, tw_ref_thick_rad.y + y0, rtol=0, atol=1e-14)
2455
+ xo.assert_allclose(tw_test_thick_rad.px, tw_ref_thick_rad.px, rtol=0, atol=1e-14)
2456
+ xo.assert_allclose(tw_test_thick_rad.py, tw_ref_thick_rad.py, rtol=0, atol=1e-14)
2457
+ xo.assert_allclose(tw_test_thick_rad.kin_px, tw_ref_thick_rad.kin_px, rtol=0, atol=1e-14)
2458
+ xo.assert_allclose(tw_test_thick_rad.kin_py, tw_ref_thick_rad.kin_py, rtol=0, atol=1e-14)
2459
+ xo.assert_allclose(tw_test_thick_rad.delta, tw_ref_thick_rad.delta, rtol=0, atol=1e-14)
2460
+
2461
+ @for_all_test_contexts
2462
+ def test_variable_solenoid_x0y0(test_context):
2463
+
2464
+ env = xt.Environment()
2465
+ env.particle_ref = xt.Particles(mass0=xt.ELECTRON_MASS_EV, p0c=20e9)
2466
+
2467
+ line_ref = env.new_line(components=[
2468
+ env.new('sol_ref0', xt.VariableSolenoid, length=3, ks_profile=[0., 0.1]),
2469
+ env.new('sol_ref1', xt.VariableSolenoid, length=3, ks_profile=[0.1, 0.3]),
2470
+ env.new('sol_ref2', xt.VariableSolenoid, length=3, ks_profile=[0.3, 0.]),
2471
+ env.new('end', xt.Marker)
2472
+ ])
2473
+ tw_ref = line_ref.twiss(x=0.1, y=0.2, betx=1, bety=1)
2474
+
2475
+ x0 = 0.05
2476
+ y0 = 0.15
2477
+ line_test = env.new_line(components=[
2478
+ env.new('solt_test0', xt.VariableSolenoid, length=3, ks_profile=[0., 0.1], x0=x0, y0=y0),
2479
+ env.new('solt_test1', xt.VariableSolenoid, length=3, ks_profile=[0.1, 0.3], x0=x0, y0=y0),
2480
+ env.new('solt_test2', xt.VariableSolenoid, length=3, ks_profile=[0.3, 0.], x0=x0, y0=y0),
2481
+ env.place('end')
2482
+ ])
2483
+ line_test.build_tracker(test_context)
2484
+ tw_test = line_test.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2485
+
2486
+ xo.assert_allclose(tw_test.x, tw_ref.x + x0, rtol=0, atol=1e-14)
2487
+ xo.assert_allclose(tw_test.y, tw_ref.y + y0, rtol=0, atol=1e-14)
2488
+ xo.assert_allclose(tw_test.px, tw_ref.px, rtol=0, atol=1e-14)
2489
+ xo.assert_allclose(tw_test.py, tw_ref.py, rtol=0, atol=1e-14)
2490
+ xo.assert_allclose(tw_test.kin_px, tw_ref.kin_px, rtol=0, atol=1e-14)
2491
+ xo.assert_allclose(tw_test.kin_py, tw_ref.kin_py, rtol=0, atol=1e-14)
2492
+
2493
+ tw_ref_back = line_ref.twiss(init=tw_ref, init_at='end')
2494
+ tw_test_back = line_test.twiss(init=tw_test, init_at='end')
2495
+
2496
+ for ttest, tref in zip([tw_ref_back, tw_test_back],
2497
+ [tw_ref, tw_test]):
2498
+ xo.assert_allclose(ttest.x, tref.x, rtol=0, atol=1e-14)
2499
+ xo.assert_allclose(ttest.y, tref.y, rtol=0, atol=1e-14)
2500
+ xo.assert_allclose(ttest.px, tref.px, rtol=0, atol=1e-14)
2501
+ xo.assert_allclose(ttest.py, tref.py, rtol=0, atol=1e-14)
2502
+ xo.assert_allclose(ttest.kin_px, tref.kin_px, rtol=0, atol=1e-14)
2503
+ xo.assert_allclose(ttest.kin_py, tref.kin_py, rtol=0, atol=1e-14)
2504
+
2505
+ line_ref.configure_radiation(model='mean')
2506
+ line_test.configure_radiation(model='mean')
2507
+
2508
+ line_test.discard_tracker()
2509
+ line_test.build_tracker(xo.context_default)
2510
+
2511
+ tw_ref_rad = line_ref.twiss(x=0.1, y=0.2, betx=1, bety=1)
2512
+ tw_test_rad = line_test.twiss(x=x0 + 0.1, y=y0 + 0.2, betx=1, bety=1)
2513
+
2514
+ assert tw_test_rad.delta[-1] < -5e-5
2515
+ xo.assert_allclose(tw_test_rad.x, tw_ref_rad.x + x0, rtol=0, atol=1e-14)
2516
+ xo.assert_allclose(tw_test_rad.y, tw_ref_rad.y + y0, rtol=0, atol=1e-14)
2517
+ xo.assert_allclose(tw_test_rad.px, tw_ref_rad.px, rtol=0, atol=1e-14)
2518
+ xo.assert_allclose(tw_test_rad.py, tw_ref_rad.py, rtol=0, atol=1e-14)
2519
+ xo.assert_allclose(tw_test_rad.kin_px, tw_ref_rad.kin_px, rtol=0, atol=1e-14)
2520
+ xo.assert_allclose(tw_test_rad.kin_py, tw_ref_rad.kin_py, rtol=0, atol=1e-14)
2521
+ xo.assert_allclose(tw_test_rad.delta, tw_ref_rad.delta, rtol=0, atol=1e-14)
@@ -0,0 +1 @@
1
+ __version__ = '0.88.8'
@@ -1939,6 +1939,10 @@ class UniformSolenoid(BeamElement):
1939
1939
  Strength of the solenoid component.
1940
1940
  length : float
1941
1941
  Length of the element in meters along the reference trajectory.
1942
+ x0 : float, optional
1943
+ Horizontal offset of the solenoid center in meters. Defaults to 0.
1944
+ y0 : float, optional
1945
+ Vertical offset of the solenoid center in meters. Defaults to 0.
1942
1946
  order : int, optional
1943
1947
  Maximum order of multipole expansion for this magnet. Defaults to 5.
1944
1948
  knl : list of floats, optional
@@ -1967,6 +1971,8 @@ class UniformSolenoid(BeamElement):
1967
1971
  _xofields={
1968
1972
  'ks': xo.Float64,
1969
1973
  'length': xo.Float64,
1974
+ 'x0': xo.Float64,
1975
+ 'y0': xo.Float64,
1970
1976
  'order': xo.Int64,
1971
1977
  'inv_factorial_order': xo.Float64,
1972
1978
  'knl': xo.Float64[:],
@@ -2093,6 +2099,8 @@ class VariableSolenoid(BeamElement):
2093
2099
  _xofields={
2094
2100
  'ks_profile': xo.Float64[2],
2095
2101
  'length': xo.Float64,
2102
+ 'x0': xo.Float64,
2103
+ 'y0': xo.Float64,
2096
2104
  'order': xo.Int64,
2097
2105
  'inv_factorial_order': xo.Float64,
2098
2106
  'knl': xo.Float64[:],
@@ -45,6 +45,8 @@ void Bend_track_local_particle(
45
45
  /*k3s*/ 0.,
46
46
  /*ks*/ 0.,
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ 0.,
49
+ /*y0_solenoid*/ 0.,
48
50
  /*rbend_model*/ -1, // not rbend
49
51
  /*rbend_shift*/ 0.,
50
52
  /*body_active*/ 1,
@@ -46,6 +46,8 @@ void Magnet_track_local_particle(
46
46
  /*k3s*/ MagnetData_get_k3s(el),
47
47
  /*ks*/ 0.,
48
48
  /*dks_ds*/ 0.,
49
+ /*x0_solenoid*/ 0.,
50
+ /*y0_solenoid*/ 0.,
49
51
  /*rbend_model*/ -1, // not rbend
50
52
  /*rbend_shift*/ 0.,
51
53
  /*body_active*/ 1,
@@ -46,6 +46,8 @@ void MagnetEdge_track_local_particle(MagnetEdgeData el, LocalParticle* part0)
46
46
  /* factor_knl_ksl */ 1,
47
47
  kl_order,
48
48
  ks,
49
+ 0., // x0_solenoid
50
+ 0., // y0_solenoid
49
51
  length,
50
52
  face_angle,
51
53
  face_angle_feed_down,
@@ -48,6 +48,8 @@ void Multipole_track_local_particle(MultipoleData el, LocalParticle* part0){
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -45,6 +45,8 @@ void Octupole_track_local_particle(
45
45
  /*k3s*/ OctupoleData_get_k3s(el),
46
46
  /*ks*/ 0.,
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ 0.,
49
+ /*y0_solenoid*/ 0.,
48
50
  /*rbend_model*/ -1, // not rbend
49
51
  /*rbend_shift*/ 0.,
50
52
  /*body_active*/ 1,
@@ -45,6 +45,8 @@ void Quadrupole_track_local_particle(
45
45
  /*k3s*/ 0.,
46
46
  /*ks*/ 0.,
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ 0.,
49
+ /*y0_solenoid*/ 0.,
48
50
  /*rbend_model*/ -1, // not rbend
49
51
  /*rbend_shift*/ 0.,
50
52
  /*body_active*/ 1,
@@ -45,6 +45,8 @@ void RBend_track_local_particle(
45
45
  /*k3s*/ 0.,
46
46
  /*ks*/ 0.,
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ 0.,
49
+ /*y0_solenoid*/ 0.,
48
50
  /*rbend_model*/ RBendData_get_rbend_model(el),
49
51
  /*rbend_shift*/ RBendData_get_rbend_shift(el),
50
52
  /*body_active*/ 1,
@@ -45,6 +45,8 @@ void Sextupole_track_local_particle(
45
45
  /*k3s*/ 0.,
46
46
  /*ks*/ 0.,
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ 0.,
49
+ /*y0_solenoid*/ 0.,
48
50
  /*rbend_model*/ -1, // not rbend
49
51
  /*rbend_shift*/ 0.,
50
52
  /*body_active*/ 1,
@@ -45,6 +45,8 @@ void UniformSolenoid_track_local_particle(
45
45
  /*k3s*/ 0.,
46
46
  /*ks*/ UniformSolenoidData_get_ks(el),
47
47
  /*dks_ds*/ 0.,
48
+ /*x0_solenoid*/ UniformSolenoidData_get_x0(el),
49
+ /*y0_solenoid*/ UniformSolenoidData_get_y0(el),
48
50
  /*rbend_model*/ -1, // not rbend
49
51
  /*rbend_shift*/ 0.,
50
52
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceBend_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceOctupole_track_local_particle(
48
48
  /*k3s*/ ThickSliceOctupoleData_get__parent_k3s(el),
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceQuadrupole_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceRBend_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ ThickSliceRBendData_get__parent_rbend_model(el),
52
54
  /*rbend_shift*/ ThickSliceRBendData_get__parent_rbend_shift(el),
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceSextupole_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThickSliceUniformSolenoid_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ ThickSliceUniformSolenoidData_get__parent_ks(el),
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ ThickSliceUniformSolenoidData_get__parent_x0(el),
52
+ /*y0_solenoid*/ ThickSliceUniformSolenoidData_get__parent_y0(el),
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceBend_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceBendEntry_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceBendExit_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceOctupole_track_local_particle(
48
48
  /*k3s*/ ThinSliceOctupoleData_get__parent_k3s(el),
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceOctupoleEntry_track_local_particle(
48
48
  /*k3s*/ ThinSliceOctupoleEntryData_get__parent_k3s(el),
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceOctupoleExit_track_local_particle(
48
48
  /*k3s*/ ThinSliceOctupoleExitData_get__parent_k3s(el),
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceQuadrupole_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceQuadrupoleEntry_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceQuadrupoleExit_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceRBend_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ ThinSliceRBendData_get__parent_rbend_model(el),
52
54
  /*rbend_shift*/ ThinSliceRBendData_get__parent_rbend_shift(el),
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceRBendEntry_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ ThinSliceRBendEntryData_get__parent_rbend_model(el),
52
54
  /*rbend_shift*/ ThinSliceRBendEntryData_get__parent_rbend_shift(el),
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceRBendExit_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ ThinSliceRBendExitData_get__parent_rbend_model(el),
52
54
  /*rbend_shift*/ ThinSliceRBendExitData_get__parent_rbend_shift(el),
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceSextupole_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 1,
@@ -48,6 +48,8 @@ void ThinSliceSextupoleEntry_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceSextupoleExit_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ 0.,
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ 0.,
52
+ /*y0_solenoid*/ 0.,
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceUniformSolenoidEntry_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ ThinSliceUniformSolenoidEntryData_get__parent_ks(el),
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ ThinSliceUniformSolenoidEntryData_get__parent_x0(el),
52
+ /*y0_solenoid*/ ThinSliceUniformSolenoidEntryData_get__parent_y0(el),
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -48,6 +48,8 @@ void ThinSliceUniformSolenoidExit_track_local_particle(
48
48
  /*k3s*/ 0.,
49
49
  /*ks*/ ThinSliceUniformSolenoidExitData_get__parent_ks(el),
50
50
  /*dks_ds*/ 0.,
51
+ /*x0_solenoid*/ ThinSliceUniformSolenoidExitData_get__parent_x0(el),
52
+ /*y0_solenoid*/ ThinSliceUniformSolenoidExitData_get__parent_y0(el),
51
53
  /*rbend_model*/ -1, // not rbend
52
54
  /*rbend_shift*/ 0.,
53
55
  /*body_active*/ 0, // disabled
@@ -201,6 +201,8 @@ void track_magnet_body_single_particle(
201
201
  const double k2s,
202
202
  const double k3s,
203
203
  const double dks_ds,
204
+ const double x0_solenoid,
205
+ const double y0_solenoid,
204
206
  const int64_t radiation_flag,
205
207
  const int64_t spin_flag,
206
208
  SynchrotronRadiationRecordData radiation_record,
@@ -219,7 +221,8 @@ void track_magnet_body_single_particle(
219
221
 
220
222
  #define MAGNET_DRIFT(part, dlength) \
221
223
  track_magnet_drift_single_particle(\
222
- part, (dlength), k0_drift, k1_drift, ks_drift, h_drift, drift_model\
224
+ part, (dlength), k0_drift, k1_drift, ks_drift, h_drift,\
225
+ x0_solenoid, y0_solenoid, drift_model\
223
226
  )
224
227
 
225
228
  #ifdef XTRACK_MULTIPOLE_NO_SYNRAD
@@ -271,6 +274,8 @@ void track_magnet_body_single_particle(
271
274
  k3s, \
272
275
  ks_drift, \
273
276
  dks_ds, \
277
+ x0_solenoid, \
278
+ y0_solenoid, \
274
279
  &Bx_T, \
275
280
  &By_T, \
276
281
  &Bz_T \
@@ -436,6 +441,8 @@ void track_magnet_particles(
436
441
  double k3s,
437
442
  double ks,
438
443
  double dks_ds,
444
+ double x0_solenoid,
445
+ double y0_solenoid,
439
446
  int64_t rbend_model, // -1: not used, 0: auto, 1: curved body, 2: straight body
440
447
  double rbend_shift,
441
448
  int64_t body_active,
@@ -582,6 +589,8 @@ void track_magnet_particles(
582
589
  factor_knl_ksl_edge,
583
590
  order,
584
591
  ks,
592
+ x0_solenoid,
593
+ y0_solenoid,
585
594
  length,
586
595
  edge_entry_angle,
587
596
  edge_entry_angle_fdown,
@@ -659,6 +668,7 @@ void track_magnet_particles(
659
668
  k0_h_correction, k1_h_correction,
660
669
  k2, k3, k0s, k1s, k2s, k3s,
661
670
  dks_ds,
671
+ x0_solenoid, y0_solenoid,
662
672
  radiation_flag,
663
673
  1, // spin_flag
664
674
  radiation_record,
@@ -693,6 +703,8 @@ void track_magnet_particles(
693
703
  factor_knl_ksl_edge,
694
704
  order,
695
705
  ks,
706
+ x0_solenoid,
707
+ y0_solenoid,
696
708
  length,
697
709
  edge_exit_angle,
698
710
  edge_exit_angle_fdown,