xtrack 0.96.2__tar.gz → 0.97.1__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 (377) hide show
  1. {xtrack-0.96.2/xtrack.egg-info → xtrack-0.97.1}/PKG-INFO +9 -14
  2. xtrack-0.97.1/pyproject.toml +67 -0
  3. xtrack-0.97.1/setup.py +3 -0
  4. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_aperture_table.py +3 -3
  5. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_element_internal_record.py +20 -22
  6. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_elements.py +9 -7
  7. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_environment.py +2 -2
  8. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader_sps.py +2 -2
  9. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_particles.py +9 -6
  10. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_particles_basics.py +45 -27
  11. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_radial_steering.py +1 -1
  12. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_random_gen.py +5 -3
  13. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_random_gen_exp.py +5 -3
  14. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_random_gen_gauss.py +5 -3
  15. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_random_gen_ruth.py +5 -3
  16. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_rbend_straight_body.py +1082 -1
  17. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_tracker.py +10 -6
  18. xtrack-0.97.1/xtrack/_version.py +1 -0
  19. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/base_element.py +3 -7
  20. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/acdipole.py +3 -1
  21. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements.py +117 -22
  22. xtrack-0.97.1/xtrack/beam_elements/elements_src/_generate_slice_elements_c_code.py +310 -0
  23. xtrack-0.97.1/xtrack/beam_elements/elements_src/_include_integrator.py +144 -0
  24. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/bend.h +4 -1
  25. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet.h +4 -1
  26. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipole.h +4 -1
  27. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/octupole.h +4 -1
  28. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/quadrupole.h +4 -1
  29. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rbend.h +3 -0
  30. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/sextupole.h +4 -1
  31. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/slnd.h +4 -1
  32. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_bend.h +4 -1
  33. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_multipole.h +4 -1
  34. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +4 -1
  35. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +4 -1
  36. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +3 -0
  37. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +4 -1
  38. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +4 -1
  39. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend.h +4 -1
  40. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +4 -1
  41. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +4 -1
  42. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_multipole.h +4 -1
  43. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +4 -1
  44. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +4 -1
  45. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +4 -1
  46. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +4 -1
  47. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +4 -1
  48. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +4 -1
  49. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +3 -0
  50. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +3 -0
  51. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +3 -0
  52. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +4 -1
  53. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +4 -1
  54. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +4 -1
  55. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +4 -1
  56. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +4 -1
  57. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.h +61 -29
  58. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.template.h +60 -29
  59. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/variable_solenoid.h +4 -1
  60. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/slice_elements_edge.py +12 -14
  61. xtrack-0.97.1/xtrack/headers/atomicadd.h +13 -0
  62. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/constants.h +16 -0
  63. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/track.h +8 -68
  64. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/internal_record.py +2 -2
  65. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/line.py +28 -13
  66. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_position_monitor.h +1 -1
  67. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_position_monitor.py +1 -3
  68. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_profile_monitor.h +1 -1
  69. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_profile_monitor.py +1 -3
  70. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_size_monitor.h +7 -7
  71. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/beam_size_monitor.py +2 -4
  72. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/particles_monitor.h +5 -2
  73. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multiline_legacy/multiline_legacy.py +1 -1
  74. xtrack-0.97.1/xtrack/multisetter/multisetter.h +76 -0
  75. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multisetter/multisetter.py +1 -70
  76. xtrack-0.97.1/xtrack/particles/local_particle_custom_api.h +289 -0
  77. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/particles.py +382 -600
  78. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/tracker.py +1 -10
  79. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/twiss.py +0 -1
  80. {xtrack-0.96.2 → xtrack-0.97.1/xtrack.egg-info}/PKG-INFO +9 -14
  81. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack.egg-info/SOURCES.txt +5 -1
  82. xtrack-0.97.1/xtrack.egg-info/entry_points.txt +2 -0
  83. xtrack-0.96.2/pyproject.toml +0 -6
  84. xtrack-0.96.2/setup.py +0 -56
  85. xtrack-0.96.2/tests/test_atomic_add.py +0 -90
  86. xtrack-0.96.2/xtrack/_version.py +0 -1
  87. xtrack-0.96.2/xtrack/headers/atomicadd.h +0 -350
  88. {xtrack-0.96.2 → xtrack-0.97.1}/LICENSE +0 -0
  89. {xtrack-0.96.2 → xtrack-0.97.1}/MANIFEST.in +0 -0
  90. {xtrack-0.96.2 → xtrack-0.97.1}/README.md +0 -0
  91. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/__init__.py +0 -0
  92. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/base_classes.py +0 -0
  93. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/BB6D.py +0 -0
  94. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  95. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/__init__.py +0 -0
  96. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/beambeam.py +0 -0
  97. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/boost.py +0 -0
  98. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  99. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  100. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/qgauss.py +0 -0
  101. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/slicing.py +0 -0
  102. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/be_beamfields/spacecharge.py +0 -0
  103. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/elements.py +0 -0
  104. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/line.py +0 -0
  105. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/mathlibs.py +0 -0
  106. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/particles.py +0 -0
  107. {xtrack-0.96.2 → xtrack-0.97.1}/ducktrack/temp_pyparticles.py +0 -0
  108. {xtrack-0.96.2 → xtrack-0.97.1}/setup.cfg +0 -0
  109. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_acceleration.py +0 -0
  110. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_acdipole.py +0 -0
  111. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_acdipole_twiss.py +0 -0
  112. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_amplitude_detuning.py +0 -0
  113. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_aperture_polygon.py +0 -0
  114. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  115. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_apertures.py +0 -0
  116. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_attr_replicas_and_slices.py +0 -0
  117. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_boris_spatial.py +0 -0
  118. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_bucket_with_ref_energy_change.py +0 -0
  119. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_cavity_absolute_time.py +0 -0
  120. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_chromatic_functions_vs_madx.py +0 -0
  121. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_coasting.py +0 -0
  122. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_collective_tracker.py +0 -0
  123. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_collimation.py +0 -0
  124. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_coupling_edwards_teng.py +0 -0
  125. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_electron_cooler.py +0 -0
  126. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_element_characterization_functions.py +0 -0
  127. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_elements_classflags.py +0 -0
  128. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_elements_thick.py +0 -0
  129. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  130. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  131. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_footprint.py +0 -0
  132. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_freeze_longitudinal.py +0 -0
  133. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_full_rings.py +0 -0
  134. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_h6_sps_beamline.py +0 -0
  135. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_hvkick.py +0 -0
  136. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_ions.py +0 -0
  137. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_json.py +0 -0
  138. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_legacy_multiline_to_env.py +0 -0
  139. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_lhc_env.py +0 -0
  140. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_lhc_match_phase_15.py +0 -0
  141. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_line.py +0 -0
  142. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_load.py +0 -0
  143. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_load_vars.py +0 -0
  144. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_lumi.py +0 -0
  145. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_mad_writer.py +0 -0
  146. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_madloader.py +0 -0
  147. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_madnginterface.py +0 -0
  148. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_magnet.py +0 -0
  149. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_and_track_from_element.py +0 -0
  150. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_coupling_knob.py +0 -0
  151. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_nested.py +0 -0
  152. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob.py +0 -0
  153. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  154. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_orbit_bump.py +0 -0
  155. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_match_tune_chroma_cminus.py +0 -0
  156. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_misalign.py +0 -0
  157. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_monitor.py +0 -0
  158. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_multi_bunch_gauss.py +0 -0
  159. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_multiline.py +0 -0
  160. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_multisetter.py +0 -0
  161. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_multispecies.py +0 -0
  162. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader.py +0 -0
  163. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader_lhc.py +0 -0
  164. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader_lhc_thin.py +0 -0
  165. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader_ps.py +0 -0
  166. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_native_madloader_ti2.py +0 -0
  167. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_optimize_for_tracking.py +0 -0
  168. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_particles_pdg.py +0 -0
  169. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_pipeline.py +0 -0
  170. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_prebuild_kernels.py +0 -0
  171. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_ps_against_ptc.py +0 -0
  172. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_ps_multiturn_twiss.py +0 -0
  173. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_psb_chicane.py +0 -0
  174. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_pyht_interface.py +0 -0
  175. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_quadrupole_fringe_ptc.py +0 -0
  176. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_quadrupole_wedge.py +0 -0
  177. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_radiation.py +0 -0
  178. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances.py +0 -0
  179. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  180. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_radiation_integrals.py +0 -0
  181. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_rf_track.py +0 -0
  182. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_rotation_signs.py +0 -0
  183. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_second_order_taylor_map.py +0 -0
  184. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_seeds.py +0 -0
  185. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_slice_and_insert_with_replicas.py +0 -0
  186. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_slice_elements.py +0 -0
  187. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_slicing.py +0 -0
  188. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  189. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
  190. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_spacecharge_in_ring.py +0 -0
  191. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_spin.py +0 -0
  192. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_sps_thick_cpymad_loader.py +0 -0
  193. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_sps_thick_native_loader.py +0 -0
  194. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_survey.py +0 -0
  195. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_tapering.py +0 -0
  196. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_thick_kickers_rf_crab.py +0 -0
  197. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_thick_lhc.py +0 -0
  198. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_tilt_shifts.py +0 -0
  199. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_trajectory_correcton.py +0 -0
  200. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_twiss.py +0 -0
  201. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_twiss_to_file.py +0 -0
  202. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_twiss_vs_madx_psb.py +0 -0
  203. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_vs_madx.py +0 -0
  204. {xtrack-0.96.2 → xtrack-0.97.1}/tests/test_xmask_orbit_correction.py +0 -0
  205. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/__init__.py +0 -0
  206. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/__init__.py +0 -0
  207. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  208. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  209. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  210. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/lhc_match/__init__.py +0 -0
  211. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  212. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  213. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  214. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/python_lattice_writer/__init__.py +0 -0
  215. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/_temp/python_lattice_writer/lattice_py_generation.py +0 -0
  216. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/aperture_meas.py +0 -0
  217. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/__init__.py +0 -0
  218. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures.py +0 -0
  219. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  220. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  221. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  222. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  223. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  224. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  225. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/beam_interaction.py +0 -0
  226. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/acdipole.h +0 -0
  227. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  228. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/crab_cavity.h +0 -0
  229. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
  230. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  231. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  232. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift.h +0 -0
  233. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact.h +0 -0
  234. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact_slice.h +0 -0
  235. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  236. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  237. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_cavity.h +0 -0
  238. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_crab_cavity.h +0 -0
  239. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_multipole.h +0 -0
  240. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  241. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  242. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  243. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  244. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
  245. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  246. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/elens.h +0 -0
  247. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  248. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  249. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
  250. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  251. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  252. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  253. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  254. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/marker.h +0 -0
  255. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/misalignment.h +0 -0
  256. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  257. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  258. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  259. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  260. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  261. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  262. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  263. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  264. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/temprf.h +0 -0
  265. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_cavity.h +0 -0
  266. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_crab_cavity.h +0 -0
  267. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_cavity.h +0 -0
  268. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_crab_cavity.h +0 -0
  269. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_acdipole.h +0 -0
  270. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  271. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  272. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  273. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  274. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
  275. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
  276. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
  277. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_configure.h +0 -0
  278. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  279. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  280. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  281. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  282. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_misalignments.h +0 -0
  283. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  284. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.h +0 -0
  285. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.template.h +0 -0
  286. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  287. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  288. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  289. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  290. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  291. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xyshift.h +0 -0
  292. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  293. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  294. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wire.h +0 -0
  295. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  296. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  297. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  298. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  299. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/exciter.py +0 -0
  300. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/rft_element.py +0 -0
  301. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/slice_base.py +0 -0
  302. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/slice_elements_drift.py +0 -0
  303. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  304. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/beam_elements/slice_elements_thin.py +0 -0
  305. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/boris.py +0 -0
  306. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/builder.py +0 -0
  307. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/environment.py +0 -0
  308. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/footprint.py +0 -0
  309. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/functions.py +0 -0
  310. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/general.py +0 -0
  311. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/checks.h +0 -0
  312. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/particle_states.h +0 -0
  313. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/synrad_spectrum.h +0 -0
  314. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/headers/track_local_particle_with_transformations.h +0 -0
  315. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/json.py +0 -0
  316. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/linear_normal_form.py +0 -0
  317. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/load.py +0 -0
  318. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/loss_location_refinement/__init__.py +0 -0
  319. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  320. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/lumi.py +0 -0
  321. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_loader.py +0 -0
  322. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_parser/__init__.py +0 -0
  323. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_parser/loader.py +0 -0
  324. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_parser/madx.lark +0 -0
  325. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_parser/parse.py +0 -0
  326. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/mad_writer.py +0 -0
  327. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/madng_interface.py +0 -0
  328. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/match.py +0 -0
  329. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/__init__.py +0 -0
  330. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/last_turns_monitor.h +0 -0
  331. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/last_turns_monitor.py +0 -0
  332. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/monitors/particles_monitor.py +0 -0
  333. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multiline.py +0 -0
  334. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multiline_legacy/__init__.py +0 -0
  335. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  336. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/multisetter/__init__.py +0 -0
  337. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/__init__.py +0 -0
  338. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/constants.py +0 -0
  339. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/masses.py +0 -0
  340. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/pdg.py +0 -0
  341. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/rng_src/base_rng.h +0 -0
  342. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/particles/rng_src/particles_rng.h +0 -0
  343. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/pipeline/__init__.py +0 -0
  344. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/pipeline/core.py +0 -0
  345. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/pipeline/manager.py +0 -0
  346. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/pipeline/multitracker.py +0 -0
  347. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/prebuilt_kernel_definitions/__init__.py +0 -0
  348. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/prebuilt_kernel_definitions/element_inits.py +0 -0
  349. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/prebuilt_kernel_definitions/element_types.py +0 -0
  350. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/progress_indicator.py +0 -0
  351. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/__init__.py +0 -0
  352. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_generators.py +0 -0
  353. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/exponential.h +0 -0
  354. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  355. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/normal.h +0 -0
  356. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/rutherford.h +0 -0
  357. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/uniform.h +0 -0
  358. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/random/random_src/uniform_accurate.h +0 -0
  359. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/slicing.py +0 -0
  360. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/survey.py +0 -0
  361. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/svgutils/__init__.py +0 -0
  362. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/svgutils/parser.py +0 -0
  363. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/svgutils/path.py +0 -0
  364. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/svgutils/svgutils.py +0 -0
  365. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/synctime.py +0 -0
  366. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/table.py +0 -0
  367. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/tapering.py +0 -0
  368. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/targets.py +0 -0
  369. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/track_flags.py +0 -0
  370. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/tracker_data.py +0 -0
  371. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/tracker_src/tracker.h +0 -0
  372. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/trajectory_correction.py +0 -0
  373. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/twissplot.py +0 -0
  374. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack/view.py +0 -0
  375. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack.egg-info/dependency_links.txt +0 -0
  376. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack.egg-info/requires.txt +0 -0
  377. {xtrack-0.96.2 → xtrack-0.97.1}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,14 +1,16 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtrack
3
- Version: 0.96.2
3
+ Version: 0.97.1
4
4
  Summary: Tracking library for particle accelerators
5
- Home-page: https://xsuite.readthedocs.io/
6
- Download-URL: https://pypi.python.org/pypi/xtrack
7
5
  Author: G. Iadarola et al.
8
- License: Apache 2.0
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://xsuite.readthedocs.io/
9
8
  Project-URL: Bug Tracker, https://github.com/xsuite/xsuite/issues
10
9
  Project-URL: Documentation, https://xsuite.readthedocs.io/
11
10
  Project-URL: Source Code, https://github.com/xsuite/xtrack
11
+ Project-URL: Download, https://pypi.python.org/pypi/xtrack
12
+ Requires-Python: >=3.9
13
+ Description-Content-Type: text/markdown
12
14
  License-File: LICENSE
13
15
  Requires-Dist: numpy>=1.0
14
16
  Requires-Dist: pandas>=2.0
@@ -30,15 +32,8 @@ Provides-Extra: notebooks
30
32
  Requires-Dist: jupyter; extra == "notebooks"
31
33
  Requires-Dist: ipympl; extra == "notebooks"
32
34
  Requires-Dist: xplt; extra == "notebooks"
33
- Dynamic: author
34
- Dynamic: description
35
- Dynamic: download-url
36
- Dynamic: home-page
37
- Dynamic: license
38
35
  Dynamic: license-file
39
- Dynamic: project-url
40
- Dynamic: provides-extra
41
- Dynamic: requires-dist
42
- Dynamic: summary
43
36
 
44
- Tracking library for particle accelerators
37
+ # xtrack
38
+
39
+ Python package for tracking simulations in particle accelerators on CPU and GPU.
@@ -0,0 +1,67 @@
1
+ [build-system]
2
+ build-backend = 'setuptools.build_meta'
3
+ requires = [
4
+ 'setuptools>=77.0.0',
5
+ ]
6
+
7
+ [project]
8
+ name = "xtrack"
9
+ dynamic = ["version"]
10
+ description = "Tracking library for particle accelerators"
11
+ readme = "README.md"
12
+ requires-python = ">=3.9"
13
+ license = "Apache-2.0"
14
+ authors = [
15
+ { name = "G. Iadarola et al." }
16
+ ]
17
+ dependencies = [
18
+ "numpy>=1.0",
19
+ "pandas>=2.0",
20
+ "scipy",
21
+ "tqdm",
22
+ "requests",
23
+ "xobjects",
24
+ "xdeps",
25
+ ]
26
+
27
+ [project.urls]
28
+ "Homepage" = "https://xsuite.readthedocs.io/"
29
+ "Bug Tracker" = "https://github.com/xsuite/xsuite/issues"
30
+ "Documentation" = "https://xsuite.readthedocs.io/"
31
+ "Source Code" = "https://github.com/xsuite/xtrack"
32
+ "Download" = "https://pypi.python.org/pypi/xtrack"
33
+
34
+ [project.optional-dependencies]
35
+ tests = [
36
+ "cpymad",
37
+ "nafflib",
38
+ "PyHEADTAIL",
39
+ "pytest",
40
+ "pytest-mock",
41
+ "pymadng",
42
+ "requests-mock",
43
+ "tfs-pandas",
44
+ ]
45
+ notebooks = [
46
+ "jupyter",
47
+ "ipympl",
48
+ "xplt"
49
+ ]
50
+
51
+ [tool.setuptools.packages.find]
52
+ where = ["."]
53
+ include = ["xtrack*", "ducktrack*"]
54
+
55
+ [tool.setuptools.dynamic]
56
+ version = { attr = "xtrack._version.__version__" }
57
+
58
+ [tool.setuptools]
59
+ include-package-data = true
60
+
61
+ [project.entry-points.xobjects]
62
+ include = "xtrack"
63
+
64
+ [pytest]
65
+ markers = [
66
+ "context_dependent: marks test as one that depends on the execution context",
67
+ ]
xtrack-0.97.1/setup.py ADDED
@@ -0,0 +1,3 @@
1
+ from setuptools import setup
2
+
3
+ setup()
@@ -61,9 +61,9 @@ def test_aperture_table():
61
61
  aper_check = aper.rows['veba.20250.a_aper' : 'vebb.20270.b_aper']
62
62
 
63
63
  assert np.all(aper_check.name == np.array(
64
- ['veba.20250.a_aper', '||drift_979', 'mba.20250', '||drift_991',
65
- 'veba.20250.b_aper', '||drift_671', 'vebb.20270.a_aper',
66
- '||drift_992', 'mbb.20270', '||drift_993', 'vebb.20270.b_aper']))
64
+ ['veba.20250.a_aper', '||drift_976', 'mba.20250', '||drift_988',
65
+ 'veba.20250.b_aper', '||drift_668', 'vebb.20270.a_aper',
66
+ '||drift_989', 'mbb.20270', '||drift_990', 'vebb.20270.b_aper']))
67
67
  xo.assert_allclose(aper_check.s, np.array([
68
68
  1225.8247 , 1225.8247 , 1226.0176907, 1232.2777093,
69
69
  1232.4827 , 1232.4827 , 1232.4847 , 1232.4847 ,
@@ -26,7 +26,9 @@ def test_record_single_table(test_context):
26
26
  extra_src = []
27
27
 
28
28
  extra_src.append(r'''
29
- /*gpufun*/
29
+ #include "xtrack/headers/track.h"
30
+
31
+ GPUFUN
30
32
  void TestElement_track_local_particle(TestElementData el, LocalParticle* part0){
31
33
 
32
34
  // Extract the record and record_index
@@ -39,8 +41,7 @@ def test_record_single_table(test_context):
39
41
  int64_t n_kicks = TestElementData_get_n_kicks(el);
40
42
  //printf("n_kicks %d\n", (int)n_kicks);
41
43
 
42
- //start_per_particle_block (part0->part)
43
-
44
+ START_PER_PARTICLE_BLOCK(part0, part);
44
45
  for (int64_t i = 0; i < n_kicks; i++) {
45
46
  double rr = 1e-6 * RandomUniform_generate(part);
46
47
  LocalParticle_add_to_px(part, rr);
@@ -61,9 +62,7 @@ def test_record_single_table(test_context):
61
62
  }
62
63
  }
63
64
  }
64
-
65
-
66
- //end_per_particle_block
65
+ END_PER_PARTICLE_BLOCK;
67
66
  }
68
67
  ''')
69
68
 
@@ -205,7 +204,9 @@ def test_record_with_twiss(test_context):
205
204
  extra_src = []
206
205
 
207
206
  extra_src.append(r'''
208
- /*gpufun*/
207
+ #include "xtrack/headers/track.h"
208
+
209
+ GPUFUN
209
210
  void TestElement_track_local_particle(TestElementData el, LocalParticle* part0){
210
211
 
211
212
  // Extract the record and record_index
@@ -218,8 +219,7 @@ def test_record_with_twiss(test_context):
218
219
  int64_t n_kicks = TestElementData_get_n_kicks(el);
219
220
  //printf("n_kicks %d\n", (int)n_kicks);
220
221
 
221
- //start_per_particle_block (part0->part)
222
-
222
+ START_PER_PARTICLE_BLOCK(part0, part);
223
223
  for (int64_t i = 0; i < n_kicks; i++) {
224
224
  // We don't apply the kick, otherwise the twiss fails
225
225
  double rr = 1e-6 * RandomUniform_generate(part);
@@ -240,9 +240,7 @@ def test_record_with_twiss(test_context):
240
240
  }
241
241
  }
242
242
  }
243
-
244
-
245
- //end_per_particle_block
243
+ END_PER_PARTICLE_BLOCK;
246
244
  }
247
245
  ''')
248
246
 
@@ -308,7 +306,9 @@ def test_record_multiple_tables(test_context):
308
306
  extra_src = []
309
307
 
310
308
  extra_src.append(r'''
311
- /*gpufun*/
309
+ #include "xtrack/headers/track.h"
310
+
311
+ GPUFUN
312
312
  void TestElement_track_local_particle(TestElementData el, LocalParticle* part0){
313
313
 
314
314
  // Extract the record and record_index
@@ -327,8 +327,7 @@ def test_record_multiple_tables(test_context):
327
327
  int64_t n_kicks = TestElementData_get_n_kicks(el);
328
328
  // printf("n_kicks %d\n", (int)n_kicks);
329
329
 
330
- //start_per_particle_block (part0->part)
331
-
330
+ START_PER_PARTICLE_BLOCK(part0, part);
332
331
  // Record in table1 info about the ingoing particle
333
332
  if (record){
334
333
  // Get a slot in table1
@@ -372,8 +371,7 @@ def test_record_multiple_tables(test_context):
372
371
  }
373
372
  }
374
373
  }
375
-
376
- //end_per_particle_block
374
+ END_PER_PARTICLE_BLOCK;
377
375
  }
378
376
  ''')
379
377
 
@@ -565,7 +563,9 @@ def test_record_standalone_mode(test_context):
565
563
  extra_src = []
566
564
 
567
565
  extra_src.append(r'''
568
- /*gpufun*/
566
+ #include "xtrack/headers/track.h"
567
+
568
+ GPUFUN
569
569
  void TestElement_track_local_particle(TestElementData el, LocalParticle* part0){
570
570
 
571
571
  // Extract the record and record_index
@@ -584,8 +584,7 @@ def test_record_standalone_mode(test_context):
584
584
  int64_t n_kicks = TestElementData_get_n_kicks(el);
585
585
  // printf("n_kicks %d\n", (int)n_kicks);
586
586
 
587
- //start_per_particle_block (part0->part)
588
-
587
+ START_PER_PARTICLE_BLOCK(part0, part);
589
588
  // Record in table1 info about the ingoing particle
590
589
  if (record){
591
590
  // Get a slot in table1
@@ -629,8 +628,7 @@ def test_record_standalone_mode(test_context):
629
628
  }
630
629
  }
631
630
  }
632
-
633
- //end_per_particle_block
631
+ END_PER_PARTICLE_BLOCK;
634
632
  }
635
633
  ''')
636
634
 
@@ -542,34 +542,36 @@ def test_exciter(test_context):
542
542
 
543
543
 
544
544
  test_source = r"""
545
- /*gpufun*/
545
+ #include "xtrack/headers/track.h"
546
+
547
+ GPUFUN
546
548
  void test_function(TestElementData el,
547
549
  LocalParticle* part0,
548
- /*gpuglmem*/ double* b){
550
+ GPUGLMEM double* b){
549
551
 
550
552
  double const a = TestElementData_get_a(el);
551
553
 
552
- //start_per_particle_block (part0->part)
554
+ START_PER_PARTICLE_BLOCK(part0, part);
553
555
 
554
556
  const int64_t ipart = part->ipart;
555
557
  double const val = b[ipart];
556
558
 
557
559
  LocalParticle_add_to_s(part, val + a);
558
560
 
559
- //end_per_particle_block
561
+ END_PER_PARTICLE_BLOCK;
560
562
  }
561
563
 
562
- /*gpufun*/
564
+ GPUFUN
563
565
  void TestElement_track_local_particle(TestElementData el,
564
566
  LocalParticle* part0){
565
567
 
566
568
  double const a = TestElementData_get_a(el);
567
569
 
568
- //start_per_particle_block (part0->part)
570
+ START_PER_PARTICLE_BLOCK(part0, part);
569
571
 
570
572
  LocalParticle_set_s(part, a);
571
573
 
572
- //end_per_particle_block
574
+ END_PER_PARTICLE_BLOCK;
573
575
  }
574
576
 
575
577
  """
@@ -482,7 +482,7 @@ def test_assemble_ring():
482
482
  == np.array([nn+'.cell.2' for nn in tt_cell.name[:-1]
483
483
  if not nn.startswith('||drift')]))
484
484
  assert np.all(tt_cell2.s == tt_cell.s)
485
- tt_cell2_nodrift = tt_cell2.rows[~tt_cell2.rows.mask['\|\|drift.*']]
485
+ tt_cell2_nodrift = tt_cell2.rows[~tt_cell2.rows.mask[r'\|\|drift.*']]
486
486
  assert tt_cell2_nodrift.isreplica[:-1].all()
487
487
  assert tt_cell2['parent_name', 'mq.d.l.cell.2'] == 'mq.d.l'
488
488
  assert tt_cell2['parent_name', 'mq.f.l.cell.2'] == 'mq.f.l'
@@ -907,7 +907,7 @@ def test_assemble_ring_builders():
907
907
  assert np.all([nn for nn in tt_cell2.name[:-1] if not nn.startswith('||drift')]
908
908
  == np.array([nn + '.cell.2' for nn in tt_cell.name[:-1] if not nn.startswith('||drift')]))
909
909
  assert np.all(tt_cell2.s == tt_cell.s)
910
- tt_cell2_nodrift = tt_cell2.rows[~tt_cell2.rows.mask['\|\|drift.*']]
910
+ tt_cell2_nodrift = tt_cell2.rows[~tt_cell2.rows.mask[r'\|\|drift.*']]
911
911
  assert tt_cell2_nodrift.isreplica[:-1].all()
912
912
  assert tt_cell2['parent_name', 'mq.d.l.cell.2'] == 'mq.d.l'
913
913
  assert tt_cell2['parent_name', 'mq.f.l.cell.2'] == 'mq.f.l'
@@ -115,5 +115,5 @@ def test_native_madloader_sps():
115
115
  xo.assert_allclose(twtest.wy_chrom[-1], twref.wy_chrom[-1], rtol=1e-4, atol=0)
116
116
  xo.assert_allclose(twtest.ax_chrom[-1], twref.ax_chrom[-1], rtol=1e-4, atol=0)
117
117
  xo.assert_allclose(twtest.ay_chrom[-1], twref.ay_chrom[-1], rtol=1e-4, atol=0)
118
- xo.assert_allclose(twtest.dqx, twref.dqx, rtol=1e-4, atol=0)
119
- xo.assert_allclose(twtest.dqy, twref.dqy, rtol=1e-4, atol=0)
118
+ xo.assert_allclose(twtest.dqx, twref.dqx, rtol=2e-4, atol=0)
119
+ xo.assert_allclose(twtest.dqy, twref.dqy, rtol=2e-4, atol=0)
@@ -20,18 +20,19 @@ def test_check_is_active_sorting_openmp():
20
20
  }
21
21
 
22
22
  _extra_c_sources = ["""
23
+ #include "xtrack/headers/track.h"
23
24
  #define XT_OMP_SKIP_REORGANIZE
24
25
 
25
- /*gpufun*/
26
+ GPUFUN
26
27
  void TestElement_track_local_particle(
27
28
  TestElementData el,
28
29
  LocalParticle* part0
29
30
  ) {
30
- //start_per_particle_block (part0->part)
31
+ START_PER_PARTICLE_BLOCK(part0, part);
31
32
  int64_t state = check_is_active(part);
32
33
  int64_t id = LocalParticle_get_particle_id(part);
33
34
  TestElementData_set_states(el, id, state);
34
- //end_per_particle_block
35
+ END_PER_PARTICLE_BLOCK;
35
36
  }
36
37
  """]
37
38
 
@@ -96,16 +97,18 @@ def test_check_is_active_sorting_cpu_default(test_context):
96
97
  }
97
98
 
98
99
  _extra_c_sources = ["""
99
- /*gpufun*/
100
+ #include "xtrack/headers/track.h"
101
+
102
+ GPUFUN
100
103
  void TestElement_track_local_particle(
101
104
  TestElementData el,
102
105
  LocalParticle* part0
103
106
  ) {
104
- //start_per_particle_block (part0->part)
107
+ START_PER_PARTICLE_BLOCK(part0, part);
105
108
  int64_t state = check_is_active(part);
106
109
  int64_t id = LocalParticle_get_particle_id(part);
107
110
  TestElementData_set_states(el, id, state);
108
- //end_per_particle_block
111
+ END_PER_PARTICLE_BLOCK;
109
112
  }
110
113
  """]
111
114
 
@@ -345,14 +345,16 @@ def test_LocalParticle_add_to_energy(test_context):
345
345
  'pz_only': xo.Int64,
346
346
  }
347
347
  _extra_c_sources = ['''
348
- /*gpufun*/
348
+ #include "xtrack/headers/track.h"
349
+
350
+ GPUFUN
349
351
  void TestElement_track_local_particle(
350
352
  TestElementData el, LocalParticle* part0){
351
353
  double const value = TestElementData_get_value(el);
352
354
  int const pz_only = (int) TestElementData_get_pz_only(el);
353
- //start_per_particle_block (part0->part)
355
+ START_PER_PARTICLE_BLOCK(part0, part);
354
356
  LocalParticle_add_to_energy(part, value, pz_only);
355
- //end_per_particle_block
357
+ END_PER_PARTICLE_BLOCK;
356
358
  }
357
359
  ''']
358
360
 
@@ -419,13 +421,15 @@ def test_LocalParticle_update_delta(test_context):
419
421
  }
420
422
 
421
423
  _extra_c_sources =['''
422
- /*gpufun*/
424
+ #include "xtrack/headers/track.h"
425
+
426
+ GPUFUN
423
427
  void TestElement_track_local_particle(
424
428
  TestElementData el, LocalParticle* part0){
425
429
  double const value = TestElementData_get_value(el);
426
- //start_per_particle_block (part0->part)
430
+ START_PER_PARTICLE_BLOCK(part0, part);
427
431
  LocalParticle_update_delta(part, value);
428
- //end_per_particle_block
432
+ END_PER_PARTICLE_BLOCK;
429
433
  }
430
434
  ''']
431
435
 
@@ -460,13 +464,15 @@ def test_LocalParticle_update_ptau(test_context):
460
464
  }
461
465
 
462
466
  _extra_c_sources = ['''
463
- /*gpufun*/
467
+ #include "xtrack/headers/track.h"
468
+
469
+ GPUFUN
464
470
  void TestElement_track_local_particle(
465
471
  TestElementData el, LocalParticle* part0){
466
472
  double const value = TestElementData_get_value(el);
467
- //start_per_particle_block (part0->part)
473
+ START_PER_PARTICLE_BLOCK(part0, part);
468
474
  LocalParticle_update_ptau(part, value);
469
- //end_per_particle_block
475
+ END_PER_PARTICLE_BLOCK;
470
476
  }
471
477
  ''']
472
478
 
@@ -500,14 +506,16 @@ def test_LocalParticle_update_pzeta(test_context):
500
506
  'value': xo.Float64,
501
507
  }
502
508
  _extra_c_sources = ['''
503
- /*gpufun*/
509
+ #include "xtrack/headers/track.h"
510
+
511
+ GPUFUN
504
512
  void TestElement_track_local_particle(
505
513
  TestElementData el, LocalParticle* part0){
506
514
  double const value = TestElementData_get_value(el);
507
- //start_per_particle_block (part0->part)
515
+ START_PER_PARTICLE_BLOCK(part0, part);
508
516
  double const pzeta = LocalParticle_get_pzeta(part);
509
517
  LocalParticle_update_pzeta(part, pzeta+value);
510
- //end_per_particle_block
518
+ END_PER_PARTICLE_BLOCK;
511
519
  }
512
520
  ''']
513
521
 
@@ -543,13 +551,15 @@ def test_LocalParticle_update_p0c(test_context):
543
551
  'value': xo.Float64,
544
552
  }
545
553
  _extra_c_sources = ['''
546
- /*gpufun*/
554
+ #include "xtrack/headers/track.h"
555
+
556
+ GPUFUN
547
557
  void TestElement_track_local_particle(
548
558
  TestElementData el, LocalParticle* part0){
549
559
  double const value = TestElementData_get_value(el);
550
- //start_per_particle_block (part0->part)
560
+ START_PER_PARTICLE_BLOCK(part0, part);
551
561
  LocalParticle_update_p0c(part, value);
552
- //end_per_particle_block
562
+ END_PER_PARTICLE_BLOCK;
553
563
  }
554
564
  ''']
555
565
 
@@ -590,18 +600,20 @@ def test_LocalParticle_angles(test_context):
590
600
  'scale_y2': xo.Float64,
591
601
  }
592
602
  _extra_c_sources = ['''
593
- /*gpufun*/
603
+ #include "xtrack/headers/track.h"
604
+
605
+ GPUFUN
594
606
  void ScaleAng_track_local_particle(
595
607
  ScaleAngData el, LocalParticle* part0){
596
608
  double const scale_x = ScaleAngData_get_scale_x(el);
597
609
  double const scale_y = ScaleAngData_get_scale_y(el);
598
610
  double const scale_x2 = ScaleAngData_get_scale_x2(el);
599
611
  double const scale_y2 = ScaleAngData_get_scale_y2(el);
600
- //start_per_particle_block (part0->part)
612
+ START_PER_PARTICLE_BLOCK(part0, part);
601
613
  LocalParticle_scale_xp(part, scale_x);
602
614
  LocalParticle_scale_yp(part, scale_y);
603
615
  LocalParticle_scale_xp_yp(part, scale_x2, scale_y2);
604
- //end_per_particle_block
616
+ END_PER_PARTICLE_BLOCK;
605
617
  }
606
618
  ''']
607
619
 
@@ -613,18 +625,20 @@ def test_LocalParticle_angles(test_context):
613
625
  'kick_y2': xo.Float64,
614
626
  }
615
627
  _extra_c_sources = ['''
616
- /*gpufun*/
628
+ #include "xtrack/headers/track.h"
629
+
630
+ GPUFUN
617
631
  void KickAng_track_local_particle(
618
632
  KickAngData el, LocalParticle* part0){
619
633
  double const kick_x = KickAngData_get_kick_x(el);
620
634
  double const kick_y = KickAngData_get_kick_y(el);
621
635
  double const kick_x2 = KickAngData_get_kick_x2(el);
622
636
  double const kick_y2 = KickAngData_get_kick_y2(el);
623
- //start_per_particle_block (part0->part)
637
+ START_PER_PARTICLE_BLOCK(part0, part);
624
638
  LocalParticle_add_to_xp(part, kick_x);
625
639
  LocalParticle_add_to_yp(part, kick_y);
626
640
  LocalParticle_add_to_xp_yp(part, kick_x2, kick_y2);
627
- //end_per_particle_block
641
+ END_PER_PARTICLE_BLOCK;
628
642
  }
629
643
  ''']
630
644
 
@@ -648,18 +662,20 @@ def test_LocalParticle_angles(test_context):
648
662
  'scale_y2': xo.Float64,
649
663
  }
650
664
  _extra_c_sources = ['''
651
- /*gpufun*/
665
+ #include "xtrack/headers/track.h"
666
+
667
+ GPUFUN
652
668
  void ScaleAngExact_track_local_particle(
653
669
  ScaleAngExactData el, LocalParticle* part0){
654
670
  double const scale_x = ScaleAngExactData_get_scale_x(el);
655
671
  double const scale_y = ScaleAngExactData_get_scale_y(el);
656
672
  double const scale_x2 = ScaleAngExactData_get_scale_x2(el);
657
673
  double const scale_y2 = ScaleAngExactData_get_scale_y2(el);
658
- //start_per_particle_block (part0->part)
674
+ START_PER_PARTICLE_BLOCK(part0, part);
659
675
  LocalParticle_scale_exact_xp(part, scale_x);
660
676
  LocalParticle_scale_exact_yp(part, scale_y);
661
677
  LocalParticle_scale_exact_xp_yp(part, scale_x2, scale_y2);
662
- //end_per_particle_block
678
+ END_PER_PARTICLE_BLOCK;
663
679
  }
664
680
  ''']
665
681
 
@@ -671,18 +687,20 @@ def test_LocalParticle_angles(test_context):
671
687
  'kick_y2': xo.Float64,
672
688
  }
673
689
  _extra_c_sources = ['''
674
- /*gpufun*/
690
+ #include "xtrack/headers/track.h"
691
+
692
+ GPUFUN
675
693
  void KickAngExact_track_local_particle(
676
694
  KickAngExactData el, LocalParticle* part0){
677
695
  double const kick_x = KickAngExactData_get_kick_x(el);
678
696
  double const kick_y = KickAngExactData_get_kick_y(el);
679
697
  double const kick_x2 = KickAngExactData_get_kick_x2(el);
680
698
  double const kick_y2 = KickAngExactData_get_kick_y2(el);
681
- //start_per_particle_block (part0->part)
699
+ START_PER_PARTICLE_BLOCK(part0, part);
682
700
  LocalParticle_add_to_exact_xp(part, kick_x);
683
701
  LocalParticle_add_to_exact_yp(part, kick_y);
684
702
  LocalParticle_add_to_exact_xp_yp(part, kick_x2, kick_y2);
685
- //end_per_particle_block
703
+ END_PER_PARTICLE_BLOCK;
686
704
  }
687
705
  ''']
688
706
 
@@ -35,7 +35,7 @@ def test_radial_steering(test_context):
35
35
 
36
36
  dzeta = tw.circumference * df_hz / f_rf
37
37
 
38
- line.unfreeze()
38
+ line.discard_tracker()
39
39
  line.append_element(element=xt.ZetaShift(dzeta=dzeta), name='zeta_shift')
40
40
  line.build_tracker()
41
41
 
@@ -31,13 +31,15 @@ def test_random_generation(test_context, generator):
31
31
 
32
32
  _extra_c_sources = [
33
33
  '''
34
- /*gpufun*/
34
+ #include "xtrack/headers/track.h"
35
+
36
+ GPUFUN
35
37
  void TestElement_track_local_particle(
36
38
  TestElementData el, LocalParticle* part0){
37
- //start_per_particle_block (part0->part)
39
+ START_PER_PARTICLE_BLOCK(part0, part);
38
40
  double rr = !!GENERATOR!!_generate(part);
39
41
  LocalParticle_set_x(part, rr);
40
- //end_per_particle_block
42
+ END_PER_PARTICLE_BLOCK;
41
43
  }
42
44
  '''.replace('!!GENERATOR!!', generator)
43
45
  ]
@@ -29,13 +29,15 @@ def test_random_generation(test_context):
29
29
 
30
30
  _extra_c_sources = [
31
31
  '''
32
- /*gpufun*/
32
+ #include "xtrack/headers/track.h"
33
+
34
+ GPUFUN
33
35
  void TestElement_track_local_particle(
34
36
  TestElementData el, LocalParticle* part0){
35
- //start_per_particle_block (part0->part)
37
+ START_PER_PARTICLE_BLOCK(part0, part);
36
38
  double rr = RandomExponential_generate(part);
37
39
  LocalParticle_set_x(part, rr);
38
- //end_per_particle_block
40
+ END_PER_PARTICLE_BLOCK;
39
41
  }
40
42
  '''
41
43
  ]
@@ -28,13 +28,15 @@ def test_random_generation(test_context):
28
28
 
29
29
  _extra_c_sources = [
30
30
  '''
31
- /*gpufun*/
31
+ #include "xtrack/headers/track.h"
32
+
33
+ GPUFUN
32
34
  void TestElement_track_local_particle(
33
35
  TestElementData el, LocalParticle* part0){
34
- //start_per_particle_block (part0->part)
36
+ START_PER_PARTICLE_BLOCK(part0, part);
35
37
  double rr = RandomNormal_generate(part);
36
38
  LocalParticle_set_x(part, rr);
37
- //end_per_particle_block
39
+ END_PER_PARTICLE_BLOCK;
38
40
  }
39
41
  '''
40
42
  ]
@@ -36,14 +36,16 @@ def test_random_generation(test_context):
36
36
 
37
37
  _extra_c_sources = [
38
38
  '''
39
- /*gpufun*/
39
+ #include "xtrack/headers/track.h"
40
+
41
+ GPUFUN
40
42
  void TestElement_track_local_particle(
41
43
  TestElementData el, LocalParticle* part0){
42
44
  RandomRutherfordData rng = TestElementData_getp_rng(el);
43
- //start_per_particle_block (part0->part)
45
+ START_PER_PARTICLE_BLOCK(part0, part);
44
46
  double rr = RandomRutherford_generate(rng, part);
45
47
  LocalParticle_set_x(part, rr);
46
- //end_per_particle_block
48
+ END_PER_PARTICLE_BLOCK;
47
49
  }
48
50
  '''
49
51
  ]