xtrack 0.84.2__tar.gz → 0.84.3__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 (309) hide show
  1. {xtrack-0.84.2/xtrack.egg-info → xtrack-0.84.3}/PKG-INFO +1 -1
  2. xtrack-0.84.3/tests/test_radiation_integrals.py +399 -0
  3. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_rf_track.py +28 -25
  4. xtrack-0.84.3/xtrack/_version.py +1 -0
  5. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/rft_element.py +6 -2
  6. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/track.h +4 -3
  7. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/line.py +4 -0
  8. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/tracker.py +5 -0
  9. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/twiss.py +9 -6
  10. {xtrack-0.84.2 → xtrack-0.84.3/xtrack.egg-info}/PKG-INFO +1 -1
  11. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack.egg-info/SOURCES.txt +1 -0
  12. xtrack-0.84.2/xtrack/_version.py +0 -1
  13. {xtrack-0.84.2 → xtrack-0.84.3}/LICENSE +0 -0
  14. {xtrack-0.84.2 → xtrack-0.84.3}/MANIFEST.in +0 -0
  15. {xtrack-0.84.2 → xtrack-0.84.3}/README.md +0 -0
  16. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/__init__.py +0 -0
  17. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/base_classes.py +0 -0
  18. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/BB6D.py +0 -0
  19. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  20. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/__init__.py +0 -0
  21. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/beambeam.py +0 -0
  22. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/boost.py +0 -0
  23. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  24. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  25. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/qgauss.py +0 -0
  26. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/slicing.py +0 -0
  27. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/be_beamfields/spacecharge.py +0 -0
  28. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/elements.py +0 -0
  29. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/line.py +0 -0
  30. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/mathlibs.py +0 -0
  31. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/particles.py +0 -0
  32. {xtrack-0.84.2 → xtrack-0.84.3}/ducktrack/temp_pyparticles.py +0 -0
  33. {xtrack-0.84.2 → xtrack-0.84.3}/pyproject.toml +0 -0
  34. {xtrack-0.84.2 → xtrack-0.84.3}/setup.cfg +0 -0
  35. {xtrack-0.84.2 → xtrack-0.84.3}/setup.py +0 -0
  36. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_acceleration.py +0 -0
  37. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_amplitude_detuning.py +0 -0
  38. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_aperture_table.py +0 -0
  39. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  40. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_apertures.py +0 -0
  41. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_attr_replicas_and_slices.py +0 -0
  42. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_bucket_with_ref_energy_change.py +0 -0
  43. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_cavity_absolute_time.py +0 -0
  44. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_chromatic_functions_vs_madx.py +0 -0
  45. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_coasting.py +0 -0
  46. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_collective_tracker.py +0 -0
  47. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_collimation.py +0 -0
  48. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_electron_cooler.py +0 -0
  49. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_element_characterization_functions.py +0 -0
  50. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_element_internal_record.py +0 -0
  51. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_elements.py +0 -0
  52. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_elements_classflags.py +0 -0
  53. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_elements_thick.py +0 -0
  54. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_environment.py +0 -0
  55. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  56. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  57. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_footprint.py +0 -0
  58. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_freeze_longitudinal.py +0 -0
  59. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_full_rings.py +0 -0
  60. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_h6_sps_beamline.py +0 -0
  61. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_hvkick.py +0 -0
  62. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_ions.py +0 -0
  63. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_legacy_multiline_to_env.py +0 -0
  64. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_lhc_env.py +0 -0
  65. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_lhc_match_phase_15.py +0 -0
  66. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_line.py +0 -0
  67. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_lumi.py +0 -0
  68. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_mad_writer.py +0 -0
  69. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_madloader.py +0 -0
  70. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_madnginterface.py +0 -0
  71. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_magnet.py +0 -0
  72. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_and_track_from_element.py +0 -0
  73. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_coupling_knob.py +0 -0
  74. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_nested.py +0 -0
  75. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_optics_and_ip_knob.py +0 -0
  76. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  77. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_orbit_bump.py +0 -0
  78. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_match_tune_chroma_cminus.py +0 -0
  79. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_monitor.py +0 -0
  80. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_multi_bunch_gauss.py +0 -0
  81. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_multiline.py +0 -0
  82. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_multisetter.py +0 -0
  83. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_multispecies.py +0 -0
  84. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_native_madloader.py +0 -0
  85. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_optimize_for_tracking.py +0 -0
  86. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_particles.py +0 -0
  87. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_particles_basics.py +0 -0
  88. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_particles_pdg.py +0 -0
  89. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  90. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_pipeline.py +0 -0
  91. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_prebuild_kernels.py +0 -0
  92. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_ps_against_ptc.py +0 -0
  93. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_ps_multiturn_twiss.py +0 -0
  94. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_psb_chicane.py +0 -0
  95. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_pyht_interface.py +0 -0
  96. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_radial_steering.py +0 -0
  97. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_radiation.py +0 -0
  98. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_radiation_equilibrium_emittances.py +0 -0
  99. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  100. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_random_gen.py +0 -0
  101. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_random_gen_exp.py +0 -0
  102. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_random_gen_gauss.py +0 -0
  103. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_random_gen_ruth.py +0 -0
  104. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_rbend_rbarc.py +0 -0
  105. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_rotation_signs.py +0 -0
  106. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_second_order_taylor_map.py +0 -0
  107. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_seeds.py +0 -0
  108. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_slice_and_insert_with_replicas.py +0 -0
  109. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_slice_elements.py +0 -0
  110. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_slicing.py +0 -0
  111. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  112. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_spacecharge_in_ring.py +0 -0
  113. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_spin.py +0 -0
  114. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_sps_thick.py +0 -0
  115. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_survey.py +0 -0
  116. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_tapering.py +0 -0
  117. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_thick_lhc.py +0 -0
  118. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_tilt_shifts.py +0 -0
  119. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_tracker.py +0 -0
  120. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_trajectory_correcton.py +0 -0
  121. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_twiss.py +0 -0
  122. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_twiss_vs_madx_psb.py +0 -0
  123. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_vs_madx.py +0 -0
  124. {xtrack-0.84.2 → xtrack-0.84.3}/tests/test_xmask_orbit_correction.py +0 -0
  125. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/__init__.py +0 -0
  126. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/__init__.py +0 -0
  127. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  128. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  129. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  130. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/lhc_match/__init__.py +0 -0
  131. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  132. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  133. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  134. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/aperture_meas.py +0 -0
  135. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/base_element.py +0 -0
  136. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/__init__.py +0 -0
  137. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures.py +0 -0
  138. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  139. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  140. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  141. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  142. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  143. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  144. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/beam_interaction.py +0 -0
  145. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements.py +0 -0
  146. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/bend.h +0 -0
  147. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  148. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  149. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  150. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift.h +0 -0
  151. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  152. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  153. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  154. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  155. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  156. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  157. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  158. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/elens.h +0 -0
  159. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  160. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  161. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  162. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/magnet.h +0 -0
  163. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  164. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  165. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  166. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/marker.h +0 -0
  167. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  168. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  169. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  170. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  171. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  172. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/rbend.h +0 -0
  173. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  174. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  175. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  176. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  177. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  178. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  179. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
  180. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  181. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  182. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
  183. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  184. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  185. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
  186. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  187. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
  188. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  189. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  190. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  191. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  192. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
  193. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
  194. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  195. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
  196. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
  197. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
  198. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
  199. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
  200. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  201. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
  202. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
  203. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
  204. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_cavity.h +0 -0
  205. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  206. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  207. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  208. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  209. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
  210. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  211. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  212. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  213. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  214. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  215. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
  216. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
  217. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
  218. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
  219. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  220. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  221. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  222. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  223. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  224. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  225. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  226. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/wire.h +0 -0
  227. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  228. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  229. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  230. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  231. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/exciter.py +0 -0
  232. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/magnets.py +0 -0
  233. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/slice_elements.py +0 -0
  234. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  235. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/environment.py +0 -0
  236. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/footprint.py +0 -0
  237. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/general.py +0 -0
  238. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/atomicadd.h +0 -0
  239. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/checks.h +0 -0
  240. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/constants.h +0 -0
  241. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/particle_states.h +0 -0
  242. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/headers/synrad_spectrum.h +0 -0
  243. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/internal_record.py +0 -0
  244. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/json.py +0 -0
  245. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/linear_normal_form.py +0 -0
  246. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/loss_location_refinement/__init__.py +0 -0
  247. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  248. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/lumi.py +0 -0
  249. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_loader.py +0 -0
  250. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_parser/__init__.py +0 -0
  251. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_parser/loader.py +0 -0
  252. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_parser/madx.lark +0 -0
  253. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_parser/parse.py +0 -0
  254. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/mad_writer.py +0 -0
  255. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/madng_interface.py +0 -0
  256. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/match.py +0 -0
  257. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/__init__.py +0 -0
  258. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_position_monitor.h +0 -0
  259. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_position_monitor.py +0 -0
  260. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_profile_monitor.h +0 -0
  261. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_profile_monitor.py +0 -0
  262. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_size_monitor.h +0 -0
  263. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/beam_size_monitor.py +0 -0
  264. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/last_turns_monitor.h +0 -0
  265. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/last_turns_monitor.py +0 -0
  266. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/particles_monitor.h +0 -0
  267. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/monitors/particles_monitor.py +0 -0
  268. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multiline.py +0 -0
  269. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multiline_legacy/__init__.py +0 -0
  270. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  271. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  272. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multisetter/__init__.py +0 -0
  273. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/multisetter/multisetter.py +0 -0
  274. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/__init__.py +0 -0
  275. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/constants.py +0 -0
  276. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/masses.py +0 -0
  277. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/particles.py +0 -0
  278. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/pdg.py +0 -0
  279. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/rng_src/base_rng.h +0 -0
  280. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/particles/rng_src/particles_rng.h +0 -0
  281. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/pipeline/__init__.py +0 -0
  282. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/pipeline/core.py +0 -0
  283. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/pipeline/manager.py +0 -0
  284. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/pipeline/multitracker.py +0 -0
  285. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/progress_indicator.py +0 -0
  286. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/__init__.py +0 -0
  287. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_generators.py +0 -0
  288. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/exponential.h +0 -0
  289. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  290. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/normal.h +0 -0
  291. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/rutherford.h +0 -0
  292. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/uniform.h +0 -0
  293. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/random/random_src/uniform_accurate.h +0 -0
  294. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/slicing.py +0 -0
  295. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/survey.py +0 -0
  296. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/svgutils/__init__.py +0 -0
  297. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/svgutils/parser.py +0 -0
  298. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/svgutils/path.py +0 -0
  299. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/svgutils/svgutils.py +0 -0
  300. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/synctime.py +0 -0
  301. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/tapering.py +0 -0
  302. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/targets.py +0 -0
  303. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/tracker_data.py +0 -0
  304. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/tracker_src/tracker.h +0 -0
  305. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/trajectory_correction.py +0 -0
  306. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack/twissplot.py +0 -0
  307. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack.egg-info/dependency_links.txt +0 -0
  308. {xtrack-0.84.2 → xtrack-0.84.3}/xtrack.egg-info/requires.txt +0 -0
  309. {xtrack-0.84.2 → xtrack-0.84.3}/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.84.2
3
+ Version: 0.84.3
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
@@ -0,0 +1,399 @@
1
+ import xtrack as xt
2
+ import xobjects as xo
3
+
4
+ import numpy as np
5
+ import pathlib
6
+ import pytest
7
+
8
+ test_data_folder = pathlib.Path(
9
+ __file__).parent.joinpath('../test_data').absolute()
10
+
11
+ def test_radiation_wiggler():
12
+ env = xt.load_madx_lattice(test_data_folder / 'sps_thick/sps.seq')
13
+ env.vars.load_madx(test_data_folder / 'sps_thick/lhc_q20.str')
14
+ line = env.sps
15
+
16
+ line['actcse.31632'].voltage = 4.2e+08
17
+ line['actcse.31632'].frequency = 3e6
18
+ line['actcse.31632'].lag = 180.
19
+
20
+ line.particle_ref = xt.Particles(energy0=20e9, mass0=xt.ELECTRON_MASS_EV)
21
+ env.particle_ref = line.particle_ref
22
+
23
+ # Wiggler parameters
24
+ k0_wig = 5e-3
25
+ tilt_rad = np.pi/2
26
+
27
+ lenwig = 25
28
+ numperiods = 20
29
+ lambdawig = lenwig / numperiods
30
+
31
+ wig = Wiggler(period=lambdawig, amplitude=k0_wig, num_periods=numperiods,
32
+ angle_rad=tilt_rad, scheme='121a')
33
+
34
+ tt = line.get_table()
35
+ wig_elems = []
36
+ for name, element in wig.wiggler_dict.items():
37
+ env.elements[name] = element['element']
38
+ wig_elems.append(name)
39
+
40
+ wig_line = env.new_line(components=[
41
+ env.new('s.wig', 'Marker'),
42
+ wig_elems,
43
+ env.new('e.wig', 'Marker'),
44
+ ])
45
+
46
+ line.insert(wig_line, anchor='start', at=1, from_='qd.31710@end')
47
+
48
+ env['sps_thick'] = env.sps.copy(shallow=True)
49
+
50
+ line.discard_tracker()
51
+ slicing_strategies = [
52
+ xt.Strategy(slicing=xt.Teapot(1)), # Default
53
+ xt.Strategy(slicing=xt.Teapot(2), element_type=xt.Bend),
54
+ xt.Strategy(slicing=xt.Teapot(2), element_type=xt.RBend),
55
+ xt.Strategy(slicing=xt.Teapot(8), element_type=xt.Quadrupole),
56
+ xt.Strategy(slicing=xt.Teapot(20), name='mwp.*'),
57
+ ]
58
+ line.slice_thick_elements(slicing_strategies)
59
+
60
+ tw4d = line.twiss4d(radiation_integrals=True)
61
+ tw6d = line.twiss()
62
+
63
+ line.configure_radiation(model='mean')
64
+
65
+ tw_rad = line.twiss(eneloss_and_damping=True, strengths=True)
66
+
67
+ print('ex rad int:', tw4d.rad_int_eq_gemitt_x)
68
+ print('ex Chao: ', tw_rad.eq_gemitt_x)
69
+ print('ey rad int:', tw4d.rad_int_eq_gemitt_y)
70
+ print('ey Chao: ', tw_rad.eq_gemitt_y)
71
+
72
+ print('damping rate x [s^-1] rad int: ', tw4d.rad_int_damping_constant_x_s)
73
+ print('damping rate x [s^-1] eigenval: ', tw_rad.damping_constants_s[0])
74
+ print('damping rate y [s^-1] rad int: ', tw4d.rad_int_damping_constant_y_s)
75
+ print('damping rate y [s^-1] eigenval: ', tw_rad.damping_constants_s[1])
76
+ print('damping rate z [s^-1] rad int: ', tw4d.rad_int_damping_constant_zeta_s)
77
+ print('damping rate z [s^-1] eigenval: ', tw_rad.damping_constants_s[2])
78
+
79
+ xo.assert_allclose(
80
+ tw4d.rad_int_eq_gemitt_x, tw_rad.eq_gemitt_x, rtol=1e-3, atol=0)
81
+ xo.assert_allclose(
82
+ tw4d.rad_int_eq_gemitt_y, tw_rad.eq_gemitt_y, rtol=5e-3, atol=0)
83
+ xo.assert_allclose(
84
+ tw4d.rad_int_damping_constant_x_s, tw_rad.damping_constants_s[0],
85
+ rtol=1e-3, atol=0)
86
+ xo.assert_allclose(
87
+ tw4d.rad_int_damping_constant_y_s, tw_rad.damping_constants_s[1],
88
+ rtol=5e-3, atol=0)
89
+ xo.assert_allclose(
90
+ tw4d.rad_int_damping_constant_zeta_s, tw_rad.damping_constants_s[2],
91
+ rtol=1e-3, atol=0)
92
+
93
+ def test_radiation_integrals_sls_combined_function_magnets():
94
+
95
+ env = xt.load_madx_lattice(test_data_folder / 'sls_2.0/b075_2024.09.25.madx')
96
+ line = env.ring
97
+ line.particle_ref = xt.Particles(energy0=2.7e9, mass0=xt.ELECTRON_MASS_EV)
98
+ line.configure_bend_model(num_multipole_kicks=20)
99
+
100
+ line['vrf'] = 1.8e6
101
+ line['frf'] = 499.6e6
102
+ line['lagrf'] = 180.
103
+
104
+ line.insert(
105
+ env.new('cav', 'Cavity', voltage='vrf', frequency='frf', lag='lagrf', at=0))
106
+
107
+ tt = line.get_table()
108
+ tw4d_thick = line.twiss4d()
109
+ tw6d_thick = line.twiss()
110
+
111
+ env['ring_thick'] = env.ring.copy(shallow=True)
112
+
113
+ line.discard_tracker()
114
+ slicing_strategies = [
115
+ xt.Strategy(slicing=None), # Default
116
+ xt.Strategy(slicing=xt.Teapot(20), element_type=xt.Bend),
117
+ xt.Strategy(slicing=xt.Teapot(8), element_type=xt.Quadrupole),
118
+ ]
119
+ line.slice_thick_elements(slicing_strategies)
120
+
121
+ tw4d = line.twiss4d()
122
+ tw6d = line.twiss()
123
+
124
+ line.configure_radiation(model='mean')
125
+
126
+ tw_rad = line.twiss(eneloss_and_damping=True, strengths=True)
127
+
128
+ tw_integrals = line.twiss(radiation_integrals=True)
129
+
130
+ print('ex rad int:', tw_integrals.rad_int_eq_gemitt_x)
131
+ print('ex Chao: ', tw_rad.eq_gemitt_x)
132
+ print('ey rad int:', tw_integrals.rad_int_eq_gemitt_y)
133
+ print('ey Chao: ', tw_rad.eq_gemitt_y)
134
+
135
+ print('damping rate x [s^-1] rad int: ', tw_integrals.rad_int_damping_constant_x_s)
136
+ print('damping rate x [s^-1] eigenval: ', tw_rad.damping_constants_s[0])
137
+ print('damping rate y [s^-1] rad int: ', tw_integrals.rad_int_damping_constant_y_s)
138
+ print('damping rate y [s^-1] eigenval: ', tw_rad.damping_constants_s[1])
139
+ print('damping rate z [s^-1] rad int: ', tw_integrals.rad_int_damping_constant_zeta_s)
140
+ print('damping rate z [s^-1] eigenval: ', tw_rad.damping_constants_s[2])
141
+
142
+ xo.assert_allclose(
143
+ tw_integrals.rad_int_eq_gemitt_x, tw_rad.eq_gemitt_x, rtol=1e-3, atol=0)
144
+ xo.assert_allclose(
145
+ tw_integrals.rad_int_eq_gemitt_y, tw_rad.eq_gemitt_y, rtol=5e-3, atol=1e-20)
146
+ xo.assert_allclose(
147
+ tw_integrals.rad_int_damping_constant_x_s, tw_rad.damping_constants_s[0],
148
+ rtol=1e-3, atol=0)
149
+ xo.assert_allclose(
150
+ tw_integrals.rad_int_damping_constant_y_s, tw_rad.damping_constants_s[1],
151
+ rtol=5e-3, atol=0)
152
+ xo.assert_allclose(
153
+ tw_integrals.rad_int_damping_constant_zeta_s, tw_rad.damping_constants_s[2],
154
+ rtol=1e-3, atol=0)
155
+
156
+ @pytest.mark.parametrize('tilt', [True, False], ids=['tilt', 'no_tilt'])
157
+ def test_radiation_integrals_sps_vs_df(tilt):
158
+ env = xt.load_madx_lattice(test_data_folder / 'sps_thick/sps.seq')
159
+ env.vars.load_madx(test_data_folder / 'sps_thick/lhc_q20.str')
160
+ line = env.sps
161
+
162
+ line.particle_ref = xt.Particles(mass0=xt.ELECTRON_MASS_EV, energy0=10e9)
163
+
164
+ line.insert('zeta_shift', obj=xt.ZetaShift(), at=0)
165
+
166
+ # RF set tp stay in the linear region
167
+ env['actcse.31632'].voltage = 2500e6
168
+ env['actcse.31632'].frequency = 3e6
169
+ env['actcse.31632'].lag = 180.
170
+
171
+ if tilt:
172
+
173
+ tt = line.get_table()
174
+ tt_mb = tt.rows['mb.*']
175
+ tt_lsf = tt.rows['lsf.*']
176
+ tt_lsd = tt.rows['lsd.*']
177
+
178
+ for nn in tt_mb.name:
179
+ line[nn].rot_s_rad = np.deg2rad(90)
180
+
181
+ # I need skew sextupoles to correct the chromaticity when the dispersion is vertical
182
+ for nn in list(tt_lsf.name) + list(tt_lsd.name):
183
+ line[nn].rot_s_rad = np.deg2rad(-30)
184
+
185
+ opt_q = line.match(
186
+ solve=False,
187
+ vary=xt.VaryList(['kqf', 'kqd'], step=1e-4),
188
+ targets=xt.TargetSet(qx=20.18, qy=20.13, tol=1e-4))
189
+ opt_q.solve()
190
+
191
+ opt_chrom = line.match(
192
+ solve=False,
193
+ vary=xt.VaryList(['klsfb', 'klsfa', 'klsdb', 'klsda'], step=1e-4),
194
+ targets=xt.TargetSet(dqx=1., dqy=1, tol=1e-4))
195
+ opt_chrom.solve()
196
+
197
+
198
+ tw4d = line.twiss4d()
199
+ tw6d = line.twiss()
200
+
201
+ line.configure_radiation(model='mean')
202
+ line.compensate_radiation_energy_loss()
203
+
204
+ tw_rad = line.twiss(eneloss_and_damping=True)
205
+
206
+ # Prepare trim
207
+ env['frev0'] = 1. / tw4d.T_rev0
208
+ env['circum'] = tw4d.circumference
209
+ env['frev_trim'] = 0.
210
+
211
+ env['zeta_shift'].dzeta = 'circum * frev_trim / frev0'
212
+
213
+ dfrev = np.linspace(-0.7, 0.7, 21)
214
+ part_x = []
215
+ part_y = []
216
+ part_zeta = []
217
+ damp_cons_x_s = []
218
+ demp_const_y_s = []
219
+ damp_const_zeta_s = []
220
+ eq_gemitt_x = []
221
+ eq_gemitt_y = []
222
+ eq_gemitt_zeta = []
223
+ rad_int_dconst_x_s =[]
224
+ rad_int_dconst_y_s = []
225
+ rad_int_dconst_zeta_s = []
226
+ rad_int_ex = []
227
+ rad_int_ey = []
228
+ delta_ave = []
229
+ for dff in dfrev:
230
+ print(f'dfrev: {dff}')
231
+ env['frev_trim'] = dff
232
+ tw = line.twiss(eneloss_and_damping=True,
233
+ radiation_integrals=True)
234
+ part_x.append(tw.partition_numbers[0])
235
+ part_y.append(tw.partition_numbers[1])
236
+ part_zeta.append(tw.partition_numbers[2])
237
+ eq_gemitt_x.append(tw.eq_gemitt_x)
238
+ eq_gemitt_y.append(tw.eq_gemitt_y)
239
+ eq_gemitt_zeta.append(tw.eq_gemitt_zeta)
240
+ delta_ave.append(tw.delta.mean())
241
+
242
+ damp_cons_x_s.append(tw.damping_constants_s[0])
243
+ damp_const_zeta_s.append(tw.damping_constants_s[2])
244
+ demp_const_y_s.append(tw.damping_constants_s[1])
245
+
246
+ rad_int_dconst_x_s.append(tw.rad_int_damping_constant_x_s)
247
+ rad_int_dconst_y_s.append(tw.rad_int_damping_constant_y_s)
248
+ rad_int_dconst_zeta_s.append(tw.rad_int_damping_constant_zeta_s)
249
+
250
+ rad_int_ex.append(tw.rad_int_eq_gemitt_x)
251
+ rad_int_ey.append(tw.rad_int_eq_gemitt_y)
252
+
253
+ # Cast to numpy arrays
254
+ part_x = np.array(part_x)
255
+ part_y = np.array(part_y)
256
+ part_zeta = np.array(part_zeta)
257
+ eq_gemitt_x = np.array(eq_gemitt_x)
258
+ eq_gemitt_y = np.array(eq_gemitt_y)
259
+ eq_gemitt_zeta = np.array(eq_gemitt_zeta)
260
+ delta_ave = np.array(delta_ave)
261
+ damp_cons_x_s = np.array(damp_cons_x_s)
262
+ demp_const_y_s = np.array(demp_const_y_s)
263
+ damp_const_zeta_s = np.array(damp_const_zeta_s)
264
+ rad_int_dconst_x_s = np.array(rad_int_dconst_x_s)
265
+ rad_int_dconst_y_s = np.array(rad_int_dconst_y_s)
266
+ rad_int_dconst_zeta_s = np.array(rad_int_dconst_zeta_s)
267
+ rad_int_ex = np.array(rad_int_ex)
268
+ rad_int_ey = np.array(rad_int_ey)
269
+
270
+ xo.assert_allclose(
271
+ rad_int_dconst_x_s, damp_cons_x_s, rtol=0.03, atol=0.05)
272
+ xo.assert_allclose(
273
+ rad_int_dconst_y_s, demp_const_y_s, rtol=0.03, atol=0.05)
274
+ xo.assert_allclose(
275
+ rad_int_dconst_zeta_s, damp_const_zeta_s, rtol=0.03, atol=0.05)
276
+
277
+ mask = np.abs(rad_int_dconst_x_s) > 0.25
278
+ xo.assert_allclose(
279
+ rad_int_ex[mask], eq_gemitt_x[mask], rtol=0.065, atol=1e-14)
280
+ mask = np.abs(rad_int_dconst_y_s) > 0.25
281
+ xo.assert_allclose(
282
+ rad_int_ey[mask], eq_gemitt_y[mask], rtol=0.065, atol=1e-14)
283
+
284
+ if tilt:
285
+ xo.assert_allclose(
286
+ rad_int_ex, 0, rtol=0, atol=1e-14)
287
+ else:
288
+ xo.assert_allclose(
289
+ rad_int_ey, 0, rtol=1e-14, atol=1e-14)
290
+
291
+ class Wiggler:
292
+ def __init__(self, period, amplitude, num_periods, angle_rad=0,
293
+ scheme='121s'):
294
+ # The scheme_library is a list of all the possible schemes that can be
295
+ # used. The scheme determines the order of the dipoles in the wiggler.
296
+ # The 's' and 'a' stand for a symmetric/antisymmetric configuration
297
+ # respectively.
298
+ self.scheme_library = ['121s', '121a']
299
+
300
+ self.wiggler_period = period
301
+ self.wiggler_amplitude = amplitude
302
+ self.wiggler_num_periods = num_periods
303
+ self.angle_rad = angle_rad
304
+ self.scheme = scheme
305
+ self.spacing = 0
306
+ self.wiggler = self._build_wiggler_()
307
+ self.wiggler_dict = self._build_dict_()
308
+
309
+ def _build_wiggler_(self):
310
+ wiggler = []
311
+
312
+ if self.scheme == '121s':
313
+ for i in range(self.wiggler_num_periods + 1):
314
+ if i != 0 and i != self.wiggler_num_periods:
315
+ wiggler += [
316
+ xt.Bend(length=self.wiggler_period / 4,
317
+ k0=-self.wiggler_amplitude, h=0,
318
+ rot_s_rad=self.angle_rad),
319
+ xt.Bend(length=self.wiggler_period / 4,
320
+ k0=-self.wiggler_amplitude, h=0,
321
+ rot_s_rad=self.angle_rad),
322
+ xt.Bend(length=self.wiggler_period / 4,
323
+ k0=self.wiggler_amplitude, h=0,
324
+ rot_s_rad=self.angle_rad),
325
+ xt.Bend(length=self.wiggler_period / 4,
326
+ k0=self.wiggler_amplitude, h=0,
327
+ rot_s_rad=self.angle_rad)
328
+ ]
329
+
330
+ elif i == 0:
331
+ wiggler += [
332
+ xt.Bend(length=self.wiggler_period / 4,
333
+ k0=self.wiggler_amplitude, h=0,
334
+ rot_s_rad=self.angle_rad)
335
+ ]
336
+
337
+ else:
338
+ wiggler += [
339
+ xt.Bend(length=self.wiggler_period / 4,
340
+ k0=-self.wiggler_amplitude, h=0,
341
+ rot_s_rad=self.angle_rad),
342
+ xt.Bend(length=self.wiggler_period / 4,
343
+ k0=-self.wiggler_amplitude, h=0,
344
+ rot_s_rad=self.angle_rad),
345
+ xt.Bend(length=self.wiggler_period / 4,
346
+ k0=self.wiggler_amplitude, h=0,
347
+ rot_s_rad=self.angle_rad)
348
+ ]
349
+
350
+ if self.scheme == '121a':
351
+ for i in range(self.wiggler_num_periods):
352
+ sign = 1 if i % 2 == 0 else -1
353
+ wiggler += [
354
+ xt.Bend(length=self.wiggler_period / 4,
355
+ k0=-sign * self.wiggler_amplitude, h=0,
356
+ rot_s_rad=self.angle_rad),
357
+ xt.Bend(length=self.wiggler_period / 4,
358
+ k0=sign * self.wiggler_amplitude, h=0,
359
+ rot_s_rad=self.angle_rad),
360
+ xt.Bend(length=self.wiggler_period / 4,
361
+ k0=sign * self.wiggler_amplitude, h=0,
362
+ rot_s_rad=self.angle_rad),
363
+ xt.Bend(length=self.wiggler_period / 4,
364
+ k0=-sign * self.wiggler_amplitude, h=0,
365
+ rot_s_rad=self.angle_rad)
366
+ ]
367
+
368
+ print(f'wiggler.shape = {len(wiggler)}')
369
+
370
+ return wiggler
371
+
372
+ def _get_wiggler_names_(self, wiggler, wiggler_number='1'):
373
+ wiggler_names = []
374
+ for i in range(len(wiggler)):
375
+ wiggler_names += ['mwp' + str(i + 1) + '.' + wiggler_number]
376
+
377
+ print(f'wiggler_names.shape = {len(wiggler_names)}')
378
+
379
+ return wiggler_names
380
+
381
+ def _get_element_positions_(self, wiggler):
382
+ ele_pos = np.zeros(len(wiggler))
383
+ for i in range(1, len(wiggler)):
384
+ ele_pos[i] = ele_pos[i - 1] + wiggler[i - 1].length + self.spacing
385
+
386
+ print(f'ele_pos.shape = {ele_pos.shape}')
387
+
388
+ return ele_pos
389
+
390
+ def _build_dict_(self):
391
+ wiggler = self._build_wiggler_()
392
+ wiggler_names = self._get_wiggler_names_(wiggler)
393
+ ele_pos = self._get_element_positions_(wiggler)
394
+ wiggler_dict = {
395
+ name: {'element': obj, 'position': pos}
396
+ for name, obj, pos in zip(wiggler_names, wiggler, ele_pos)
397
+ }
398
+
399
+ return wiggler_dict
@@ -26,7 +26,8 @@ def test_rf_track_lattice():
26
26
 
27
27
  # Define the RF-Track element
28
28
  vol = RFT.Volume()
29
- vol.dt_mm = 0.1
29
+ vol.dt_mm = 1
30
+ vol.odeint_epsabs = 1e-10
30
31
  vol.odeint_algorithm = 'rk2'
31
32
  vol.set_static_Bfield(0.0, By, 0.0)
32
33
  vol.set_s0(rho, 0.0, 0.0, 0.0, 0.0, 0.0)
@@ -41,29 +42,29 @@ def test_rf_track_lattice():
41
42
  pi = np.pi
42
43
  elements = {
43
44
  'd1.1': xt.Drift(length=1),
44
- 'mb1.1': xt.RFT_Element(element=vol),
45
+ 'mb1.1': xt.RFT_Element(element=vol,update_ref=False),
45
46
  'd2.1': xt.Drift(length=1),
46
47
 
47
48
  'mqd.1': xt.Quadrupole(length=0.3, k1=-0.7),
48
49
  'd3.1': xt.Drift(length=1),
49
- 'mb2.1': xt.RFT_Element(element=vol),
50
+ 'mb2.1': xt.RFT_Element(element=vol,update_ref=False),
50
51
  'd4.1': xt.Drift(length=1),
51
52
 
52
53
  'd1.2': xt.Drift(length=1),
53
- 'mb1.2': xt.RFT_Element(element=vol),
54
+ 'mb1.2': xt.RFT_Element(element=vol,update_ref=False),
54
55
  'd2.2': xt.Drift(length=1),
55
56
 
56
57
  'mqd.2': xt.Quadrupole(length=0.3, k1=-0.7),
57
58
  'd3.2': xt.Drift(length=1),
58
- 'mb2.2': xt.RFT_Element(element=vol),
59
+ 'mb2.2': xt.RFT_Element(element=vol,update_ref=False),
59
60
  'd4.2': xt.Drift(length=1),
60
- }
61
+ }
61
62
 
62
63
  # Build the ring
63
64
  line = xt.Line(elements=elements, element_names=list(elements.keys()))
64
65
  line.particle_ref = xt.Particles(p0c=p0c, mass0=xt.PROTON_MASS_EV)
65
66
  line.configure_bend_model(core='full', edge=None)
66
-
67
+ line.reset_s_at_end_turn = False
67
68
 
68
69
  ## Transfer lattice on context and compile tracking code=
69
70
  line.build_tracker()
@@ -74,13 +75,13 @@ def test_rf_track_lattice():
74
75
  rng = np.random.default_rng(2021)
75
76
 
76
77
  particles0 = xp.Particles(p0c=p0c, #eV
77
- q0=1, mass0=xp.PROTON_MASS_EV,
78
- x=rng.uniform(-1e-3, 1e-3, n_part),
79
- px=rng.uniform(-1e-5, 1e-5, n_part),
80
- y=rng.uniform(-2e-3, 2e-3, n_part),
81
- py=rng.uniform(-3e-5, 3e-5, n_part),
82
- zeta=rng.uniform(-1e-2, 1e-2, n_part),
83
- delta=rng.uniform(-1e-2, 1e-2, n_part))
78
+ q0=1, mass0=xp.PROTON_MASS_EV,
79
+ x=rng.uniform(-1e-3, 1e-3, n_part),
80
+ px=rng.uniform(-1e-5, 1e-5, n_part),
81
+ y=rng.uniform(-2e-3, 2e-3, n_part),
82
+ py=rng.uniform(-3e-5, 3e-5, n_part),
83
+ zeta=rng.uniform(-1e-2, 1e-2, n_part),
84
+ delta=rng.uniform(-1e-2, 1e-2, n_part))
84
85
 
85
86
  particles_rft = particles0.copy()
86
87
 
@@ -96,6 +97,7 @@ def test_rf_track_lattice():
96
97
  ele_xt['mb2.2'] = b_xt
97
98
 
98
99
  line_ref = xt.Line(elements=ele_xt, element_names=line.element_names)
100
+ line_ref.reset_s_at_end_turn = False
99
101
  line_ref.build_tracker()
100
102
  particles_ref = particles0.copy()
101
103
 
@@ -105,18 +107,19 @@ def test_rf_track_lattice():
105
107
 
106
108
  assert_allclose = np.testing.assert_allclose
107
109
  assert np.all(particles_rft.particle_id == particles_ref.particle_id)
108
- assert_allclose(particles_rft.x, particles_ref.x, atol=6e-5, rtol=0)
109
- assert_allclose(particles_rft.px, particles_ref.px, atol=2e-5, rtol=0)
110
- assert_allclose(particles_rft.y, particles_ref.y, atol=6e-7, rtol=0)
111
- assert_allclose(particles_rft.py, particles_ref.py, atol=2e-6, rtol=0)
112
- assert_allclose(particles_rft.rpp, particles_ref.rpp, atol=3e-5, rtol=0)
113
- assert_allclose(particles_rft.rvv, particles_ref.rvv, atol=1e-5, rtol=0)
114
- assert_allclose(particles_rft.ptau, particles_ref.ptau, atol=2e-5, rtol=0)
115
- assert_allclose(particles_rft.delta, particles_ref.delta, atol=4e-5, rtol=0)
110
+ assert_allclose(particles_rft.x, particles_ref.x, atol=1e-10, rtol=0)
111
+ assert_allclose(particles_rft.px, particles_ref.px, atol=1e-10, rtol=0)
112
+ assert_allclose(particles_rft.y, particles_ref.y, atol=1e-10, rtol=0)
113
+ assert_allclose(particles_rft.py, particles_ref.py, atol=1e-10, rtol=0)
114
+ assert_allclose(particles_rft.rpp, particles_ref.rpp, atol=1e-10, rtol=0)
115
+ assert_allclose(particles_rft.rvv, particles_ref.rvv, atol=1e-10, rtol=0)
116
+ assert_allclose(particles_rft.ptau, particles_ref.ptau, atol=1e-10, rtol=0)
117
+ assert_allclose(particles_rft.delta, particles_ref.delta, atol=1e-10, rtol=0)
116
118
  assert_allclose(particles_rft.chi, particles_ref.chi, atol=1e-10, rtol=0)
117
- assert_allclose(particles_rft.p0c, particles_ref.p0c, atol=4e-5, rtol=0)
118
- assert_allclose(particles_rft.energy0, particles_ref.energy0, atol=4e-5, rtol=0)
119
- assert_allclose(particles_rft.zeta, particles_ref.zeta, atol=4e-5, rtol=0)
119
+ assert_allclose(particles_rft.p0c, particles_ref.p0c, atol=1e-10, rtol=0)
120
+ assert_allclose(particles_rft.energy0, particles_ref.energy0, atol=1e-10, rtol=0)
121
+ assert_allclose(particles_rft.zeta, particles_ref.zeta, atol=1e-10, rtol=0)
120
122
  assert_allclose(particles_rft.beta0, particles_ref.beta0, atol=1e-10, rtol=0)
121
123
  assert_allclose(particles_rft.mass0, particles_ref.mass0, atol=1e-10, rtol=0)
122
124
  assert_allclose(particles_rft.gamma0, particles_ref.gamma0, atol=1e-10, rtol=0)
125
+ assert_allclose(particles_rft.s, particles_ref.s, atol=1e-10, rtol=0)
@@ -0,0 +1 @@
1
+ __version__ = '0.84.3'
@@ -23,7 +23,7 @@ class RFT_Element:
23
23
  iscollective = True # <-- To state that the element uses a python track method
24
24
  isthick = True
25
25
 
26
- def __init__(self, element):
26
+ def __init__(self, element, update_ref=False):
27
27
 
28
28
  import RF_Track as rft
29
29
  self.length = element.get_length()
@@ -33,6 +33,7 @@ class RFT_Element:
33
33
  self.bunch_out = rft.Bunch6d()
34
34
  self.arr_for_rft = np.empty(0)
35
35
  self.arr_for_xt = np.empty(0)
36
+ self.update_ref = update_ref
36
37
 
37
38
  def track(self, particles, increment_at_element=False):
38
39
 
@@ -67,10 +68,13 @@ class RFT_Element:
67
68
 
68
69
  # Update particles
69
70
  self.arr_for_xt = self.arr_for_xt[self.arr_for_xt[:,7].argsort()] # sort by particle id
71
+ if self.update_ref:
72
+ p.p0c = pref1[0].Pc * 1e6
73
+ p.s += self.length
70
74
  p.x = self.arr_for_xt[:,0] / 1e3 # m
71
75
  p.px = self.arr_for_xt[:,1] * 1e6 / p.p0c # rad
72
76
  p.y = self.arr_for_xt[:,2] / 1e3 # m
73
77
  p.py = self.arr_for_xt[:,3] * 1e6 / p.p0c # rad
74
- p.zeta += self.length - self.arr_for_xt[:,4] * p.beta0 / 1e3 # m
78
+ p.zeta = self.length - self.arr_for_xt[:,4] * p.beta0 / 1e3 # m
75
79
  p.delta = (self.arr_for_xt[:,5] * 1e6 - p.p0c) / p.p0c #
76
80
  p.state[np.isnan(self.arr_for_xt[:,6])!=np.isnan(self.arr_for_rft[:,9])] = -400 # lost in RF-Track
@@ -68,11 +68,12 @@
68
68
  #define END_PER_PARTICLE_BLOCK \
69
69
  }
70
70
 
71
- #define VECTORIZE_OVER(INDEX_NAME, COUNT) \
72
- { \
73
- int INDEX_NAME = blockDim.x * blockIdx.x + threadIdx.x;
71
+ #define VECTORIZE_OVER(INDEX_NAME, COUNT) { \
72
+ int INDEX_NAME = blockDim.x * blockIdx.x + threadIdx.x; \
73
+ if (INDEX_NAME < (COUNT)) {
74
74
 
75
75
  #define END_VECTORIZE \
76
+ } \
76
77
  }
77
78
  #endif // XO_CONTEXT_CUDA
78
79
 
@@ -2021,6 +2021,10 @@ class Line:
2021
2021
  qx = np.zeros(4)
2022
2022
  qy = np.zeros(4)
2023
2023
 
2024
+ # remove average in case there is a closed orbit
2025
+ mon.x-=mon.x.mean(axis=1,keepdims=True)
2026
+ mon.y-=mon.y.mean(axis=1,keepdims=True)
2027
+
2024
2028
  for ii in range(len(qx)):
2025
2029
  qx[ii] = np.abs(nl.get_tune(mon.x[ii, :]))
2026
2030
  qy[ii] = np.abs(nl.get_tune(mon.y[ii, :]))
@@ -864,6 +864,11 @@ class Tracker:
864
864
  if isinstance(pp, TrackerPartNonCollective):
865
865
  ret = pp.track(particles, turn_by_turn_monitor=monitor)
866
866
  else:
867
+ if hasattr(monitor, 'ebe_mode') and monitor.ebe_mode == 1:
868
+ assert monitor._context is particles._context, (
869
+ 'Element-by-element monitor not supported in multi-context'
870
+ ' mode')
871
+ monitor.track(particles)
867
872
  ret = pp.track(particles)
868
873
 
869
874
  return stop_tracking, skip, ret
@@ -3902,7 +3902,7 @@ class TwissTable(Table):
3902
3902
 
3903
3903
  mass0 = self.particle_on_co.mass0
3904
3904
  r0 = self.particle_on_co.get_classical_particle_radius0()
3905
- gamma0 = self.gamma0
3905
+ gamma0 = self.particle_on_co.gamma0[0]
3906
3906
 
3907
3907
  dxprime = dpx * (1 - delta) - kin_px
3908
3908
  dyprime = dpy * (1 - delta) - kin_py
@@ -3957,8 +3957,10 @@ class TwissTable(Table):
3957
3957
 
3958
3958
  i3_integrand = np.abs(kappa * kappa * kappa)
3959
3959
 
3960
- i4x_integrand = (kappa * kappa + 2 * k1) * kappa0_x * dx
3961
- i4y_integrand = (kappa * kappa - 2 * k1) * kappa0_y * dy
3960
+ i4x_integrand = dx * (kappa0_x * kappa**2 + 2 * k1 * kappa_x)
3961
+ i4y_integrand = dy * (kappa0_y * kappa**2 - 2 * k1 * kappa_y)
3962
+ i4_integrand = i4x_integrand + i4y_integrand
3963
+
3962
3964
 
3963
3965
  i5x_integrand = np.abs(kappa * kappa * kappa) * Hx_rad
3964
3966
  i5y_integrand = np.abs(kappa * kappa * kappa) * Hy_rad
@@ -3968,6 +3970,7 @@ class TwissTable(Table):
3968
3970
  i1y = np.sum(i1y_integrand * length)
3969
3971
  i2 = np.sum(i2_integrand * length)
3970
3972
  i3 = np.sum(i3_integrand * length)
3973
+ i4 = np.sum(i4_integrand * length)
3971
3974
  i4x = np.sum(i4x_integrand * length)
3972
3975
  i4y = np.sum(i4y_integrand * length)
3973
3976
  i5x = np.sum(i5x_integrand * length)
@@ -3982,7 +3985,7 @@ class TwissTable(Table):
3982
3985
  # Damping constants
3983
3986
  damping_constant_x_s = r0/3 * gamma0**3 * clight/self.circumference * (i2 - i4x)
3984
3987
  damping_constant_y_s = r0/3 * gamma0**3 * clight/self.circumference * (i2 - i4y)
3985
- damping_constant_zeta_s = r0/3 * gamma0**3 * clight/self.circumference * (2*i2 + i4x + i4y)
3988
+ damping_constant_zeta_s = r0/3 * gamma0**3 * clight/self.circumference * (2*i2 + i4)
3986
3989
 
3987
3990
  # Velocity direction (for spin)
3988
3991
  tempv = np.sqrt(xp**2 + yp**2 + 1)
@@ -3991,14 +3994,13 @@ class TwissTable(Table):
3991
3994
  iv_z = 1 / tempv
3992
3995
 
3993
3996
  cols = {
3994
- 'rad_int_kappax': kappa_x,
3995
- 'rad_int_kappay': kappa_y,
3996
3997
  'rad_int_hx': Hx_rad,
3997
3998
  'rad_int_hy': Hy_rad,
3998
3999
  'rad_int_i1x_integrand': i1x_integrand,
3999
4000
  'rad_int_i1y_integrand': i1y_integrand,
4000
4001
  'rad_int_i2_integrand': i2_integrand,
4001
4002
  'rad_int_i3_integrand': i3_integrand,
4003
+ 'rad_int_i4_integrand': i4_integrand,
4002
4004
  'rad_int_i4x_integrand': i4x_integrand,
4003
4005
  'rad_int_i4y_integrand': i4y_integrand,
4004
4006
  'rad_int_i5x_integrand': i5x_integrand,
@@ -4019,6 +4021,7 @@ class TwissTable(Table):
4019
4021
  'rad_int_i1y': i1y,
4020
4022
  'rad_int_i2': i2,
4021
4023
  'rad_int_i3': i3,
4024
+ 'rad_int_i4': i4,
4022
4025
  'rad_int_i4x': i4x,
4023
4026
  'rad_int_i4y': i4y,
4024
4027
  'rad_int_i5x': i5x,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.84.2
3
+ Version: 0.84.3
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
@@ -84,6 +84,7 @@ tests/test_radial_steering.py
84
84
  tests/test_radiation.py
85
85
  tests/test_radiation_equilibrium_emittances.py
86
86
  tests/test_radiation_equilibrium_emittances_thick.py
87
+ tests/test_radiation_integrals.py
87
88
  tests/test_random_gen.py
88
89
  tests/test_random_gen_exp.py
89
90
  tests/test_random_gen_gauss.py
@@ -1 +0,0 @@
1
- __version__ = '0.84.2'
File without changes
File without changes
File without changes