xtrack 0.66.0__tar.gz → 0.66.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 (250) hide show
  1. {xtrack-0.66.0/xtrack.egg-info → xtrack-0.66.1}/PKG-INFO +1 -1
  2. xtrack-0.66.1/xtrack/_version.py +1 -0
  3. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/trajectory_correction.py +114 -39
  4. {xtrack-0.66.0 → xtrack-0.66.1/xtrack.egg-info}/PKG-INFO +1 -1
  5. xtrack-0.66.0/xtrack/_version.py +0 -1
  6. {xtrack-0.66.0 → xtrack-0.66.1}/LICENSE +0 -0
  7. {xtrack-0.66.0 → xtrack-0.66.1}/MANIFEST.in +0 -0
  8. {xtrack-0.66.0 → xtrack-0.66.1}/README.md +0 -0
  9. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/__init__.py +0 -0
  10. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/base_classes.py +0 -0
  11. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/BB6D.py +0 -0
  12. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  13. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/__init__.py +0 -0
  14. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/beambeam.py +0 -0
  15. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/boost.py +0 -0
  16. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  17. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  18. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/qgauss.py +0 -0
  19. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/slicing.py +0 -0
  20. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/be_beamfields/spacecharge.py +0 -0
  21. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/elements.py +0 -0
  22. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/line.py +0 -0
  23. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/mathlibs.py +0 -0
  24. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/particles.py +0 -0
  25. {xtrack-0.66.0 → xtrack-0.66.1}/ducktrack/temp_pyparticles.py +0 -0
  26. {xtrack-0.66.0 → xtrack-0.66.1}/pyproject.toml +0 -0
  27. {xtrack-0.66.0 → xtrack-0.66.1}/setup.cfg +0 -0
  28. {xtrack-0.66.0 → xtrack-0.66.1}/setup.py +0 -0
  29. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_acceleration.py +0 -0
  30. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_amplitude_detuning.py +0 -0
  31. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  32. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_apertures.py +0 -0
  33. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_attr_replicas_and_slices.py +0 -0
  34. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_cavity_absolute_time.py +0 -0
  35. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_chromatic_functions_vs_madx.py +0 -0
  36. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_coasting.py +0 -0
  37. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_collective_tracker.py +0 -0
  38. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_collimation.py +0 -0
  39. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_element_characterization_functions.py +0 -0
  40. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_element_internal_record.py +0 -0
  41. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_elements.py +0 -0
  42. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_elements_classflags.py +0 -0
  43. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_elements_thick.py +0 -0
  44. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  45. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  46. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_footprint.py +0 -0
  47. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_freeze_longitudinal.py +0 -0
  48. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_full_rings.py +0 -0
  49. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_hvkick.py +0 -0
  50. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_ions.py +0 -0
  51. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_lhc_match_phase_15.py +0 -0
  52. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_line.py +0 -0
  53. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_lumi.py +0 -0
  54. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_mad_writer.py +0 -0
  55. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_madloader.py +0 -0
  56. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_and_track_from_element.py +0 -0
  57. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_coupling_knob.py +0 -0
  58. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_nested.py +0 -0
  59. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_optics_and_ip_knob.py +0 -0
  60. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  61. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_orbit_bump.py +0 -0
  62. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_match_tune_chroma_cminus.py +0 -0
  63. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_monitor.py +0 -0
  64. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_multiline.py +0 -0
  65. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_multisetter.py +0 -0
  66. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_multispecies.py +0 -0
  67. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_particles_api.py +0 -0
  68. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  69. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_pipeline.py +0 -0
  70. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_prebuild_kernels.py +0 -0
  71. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_ps_against_ptc.py +0 -0
  72. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_ps_multiturn_twiss.py +0 -0
  73. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_psb_chicane.py +0 -0
  74. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_pyht_interface.py +0 -0
  75. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_radial_steering.py +0 -0
  76. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_radiation.py +0 -0
  77. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_radiation_equilibrium_emittances.py +0 -0
  78. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_random_gen.py +0 -0
  79. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_random_gen_exp.py +0 -0
  80. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_random_gen_gauss.py +0 -0
  81. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_random_gen_ruth.py +0 -0
  82. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_rf_track.py +0 -0
  83. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_rotation_signs.py +0 -0
  84. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_second_order_taylor_map.py +0 -0
  85. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_seeds.py +0 -0
  86. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_slice_and_insert_with_replicas.py +0 -0
  87. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_slice_elements.py +0 -0
  88. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_slicing.py +0 -0
  89. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  90. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_spacecharge_in_ring.py +0 -0
  91. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_sps_thick.py +0 -0
  92. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_survey.py +0 -0
  93. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_tapering.py +0 -0
  94. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_thick_lhc.py +0 -0
  95. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_tilt_shifts.py +0 -0
  96. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_tracker.py +0 -0
  97. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_trajectory_correcton.py +0 -0
  98. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_twiss.py +0 -0
  99. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_twiss_vs_madx_psb.py +0 -0
  100. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_var_cache.py +0 -0
  101. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_vs_madx.py +0 -0
  102. {xtrack-0.66.0 → xtrack-0.66.1}/tests/test_xmask_orbit_correction.py +0 -0
  103. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/__init__.py +0 -0
  104. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/__init__.py +0 -0
  105. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  106. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  107. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  108. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/lhc_match/__init__.py +0 -0
  109. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  110. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  111. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  112. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/base_element.py +0 -0
  113. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/__init__.py +0 -0
  114. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures.py +0 -0
  115. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  116. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  117. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  118. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  119. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  120. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  121. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/beam_interaction.py +0 -0
  122. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements.py +0 -0
  123. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/bend.h +0 -0
  124. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  125. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  126. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  127. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift.h +0 -0
  128. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
  129. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  130. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  131. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  132. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  133. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  134. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/elens.h +0 -0
  135. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  136. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  137. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  138. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  139. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  140. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  141. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  142. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  143. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  144. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  145. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  146. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  147. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  148. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
  149. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  150. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  151. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
  152. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  153. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  154. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  155. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
  156. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  157. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  158. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  159. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  160. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  161. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  162. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
  163. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  164. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  165. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  166. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  167. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
  168. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
  169. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
  170. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
  171. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  172. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  173. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  174. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  175. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  176. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  177. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  178. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/wire.h +0 -0
  179. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  180. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  181. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  182. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  183. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/exciter.py +0 -0
  184. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/rft_element.py +0 -0
  185. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/slice_elements.py +0 -0
  186. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  187. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/footprint.py +0 -0
  188. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/general.py +0 -0
  189. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/headers/atomicadd.h +0 -0
  190. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/headers/checks.h +0 -0
  191. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/headers/constants.h +0 -0
  192. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/headers/particle_states.h +0 -0
  193. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/headers/synrad_spectrum.h +0 -0
  194. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/internal_record.py +0 -0
  195. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/line.py +0 -0
  196. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/linear_normal_form.py +0 -0
  197. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/loss_location_refinement/__init__.py +0 -0
  198. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  199. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/lumi.py +0 -0
  200. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/mad_loader.py +0 -0
  201. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/mad_writer.py +0 -0
  202. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/match.py +0 -0
  203. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/__init__.py +0 -0
  204. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_position_monitor.h +0 -0
  205. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_position_monitor.py +0 -0
  206. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_profile_monitor.h +0 -0
  207. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_profile_monitor.py +0 -0
  208. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_size_monitor.h +0 -0
  209. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/beam_size_monitor.py +0 -0
  210. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/last_turns_monitor.h +0 -0
  211. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/last_turns_monitor.py +0 -0
  212. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/particles_monitor.h +0 -0
  213. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/monitors/particles_monitor.py +0 -0
  214. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/multiline/__init__.py +0 -0
  215. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/multiline/multiline.py +0 -0
  216. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/multiline/shared_knobs.py +0 -0
  217. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/multisetter/__init__.py +0 -0
  218. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/multisetter/multisetter.py +0 -0
  219. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/particles/__init__.py +0 -0
  220. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/particles/constants.py +0 -0
  221. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/particles/particles.py +0 -0
  222. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/particles/rng_src/base_rng.h +0 -0
  223. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/particles/rng_src/particles_rng.h +0 -0
  224. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/pipeline/__init__.py +0 -0
  225. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/pipeline/core.py +0 -0
  226. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/pipeline/manager.py +0 -0
  227. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/pipeline/multitracker.py +0 -0
  228. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/progress_indicator.py +0 -0
  229. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/__init__.py +0 -0
  230. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_generators.py +0 -0
  231. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/exponential.h +0 -0
  232. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  233. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/normal.h +0 -0
  234. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/rutherford.h +0 -0
  235. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/uniform.h +0 -0
  236. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/random/random_src/uniform_accurate.h +0 -0
  237. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/slicing.py +0 -0
  238. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/survey.py +0 -0
  239. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/synctime.py +0 -0
  240. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/tapering.py +0 -0
  241. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/targets.py +0 -0
  242. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/tracker.py +0 -0
  243. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/tracker_data.py +0 -0
  244. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/tracker_src/tracker.h +0 -0
  245. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/twiss.py +0 -0
  246. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack/twissplot.py +0 -0
  247. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack.egg-info/SOURCES.txt +0 -0
  248. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack.egg-info/dependency_links.txt +0 -0
  249. {xtrack-0.66.0 → xtrack-0.66.1}/xtrack.egg-info/requires.txt +0 -0
  250. {xtrack-0.66.0 → xtrack-0.66.1}/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.66.0
3
+ Version: 0.66.1
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 @@
1
+ __version__ = '0.66.1'
@@ -6,14 +6,17 @@ def _compute_correction(x_iter, response_matrix, n_micado=None, rcond=None,
6
6
 
7
7
  if isinstance(response_matrix, (list, tuple)):
8
8
  assert len(response_matrix) == 3 # U, S, Vt
9
- U, S, Vt = response_matrix
9
+ U, S, Vh = response_matrix
10
10
  if n_singular_values is not None:
11
11
  U = U[:, :n_singular_values]
12
12
  S = S[:n_singular_values]
13
- Vt = Vt[:n_singular_values, :]
14
- response_matrix = U @ np.diag(S) @ Vt
13
+ Vh = Vh[:n_singular_values, :]
14
+ response_matrix = U @ np.diag(S) @ Vh
15
15
  else:
16
16
  assert n_singular_values is None
17
+ U = None
18
+ S = None
19
+ Vh = None
17
20
 
18
21
  n_hcorrectors = response_matrix.shape[1]
19
22
 
@@ -45,8 +48,16 @@ def _compute_correction(x_iter, response_matrix, n_micado=None, rcond=None,
45
48
  mask_corr[:] = True
46
49
 
47
50
  # Compute the correction with least squares
48
- correction_masked, residual_x, rank_x, sval_x = np.linalg.lstsq(
49
- response_matrix[:, mask_corr], -x_iter, rcond=rcond)
51
+ if mask_corr.all() and S is not None:
52
+ # Can reuse the SVD decomposition
53
+ S_inv = np.zeros_like(S)
54
+ S_inv[S > 0] = 1 / S[S > 0]
55
+ if rcond is not None:
56
+ S_inv[S < rcond * S[0]] = 0
57
+ correction_masked = Vh.T.conj() @ (np.diag(S_inv) @ (U.T.conj() @ (-x_iter)))
58
+ else:
59
+ correction_masked, residual_x, rank_x, sval_x = np.linalg.lstsq(
60
+ response_matrix[:, mask_corr], -x_iter, rcond=rcond)
50
61
  correction_x = np.zeros(n_hcorrectors)
51
62
  correction_x[mask_corr] = correction_masked
52
63
 
@@ -60,11 +71,13 @@ def _build_response_matrix(tw, monitor_names, corrector_names,
60
71
  assert plane in ['x', 'y']
61
72
 
62
73
  # Build response matrix
63
- bet_monitors = tw.rows[monitor_names]['bet' + plane]
64
- bet_correctors = tw.rows[corrector_names]['bet' + plane]
74
+ mask_monitors = tw.mask[monitor_names]
75
+ mask_correctors = tw.mask[corrector_names]
76
+ bet_monitors = tw['bet' + plane][mask_monitors]
77
+ bet_correctors = tw['bet' + plane][mask_correctors]
65
78
 
66
- mu_monitor = tw.rows[monitor_names]['mu' + plane]
67
- mux_correctors = tw.rows[corrector_names]['mu' + plane]
79
+ mu_monitor = tw['mu' + plane][mask_monitors]
80
+ mux_correctors = tw['mu' + plane][mask_correctors]
68
81
 
69
82
  n_monitors = len(monitor_names)
70
83
  n_correctors = len(corrector_names)
@@ -159,13 +172,30 @@ class OrbitCorrectionSinglePlane:
159
172
  self.singular_vectors_out = U
160
173
  self.singular_vectors_in = Vt
161
174
 
162
- self.s_correctors = self.twiss_table.rows[self.corrector_names].s
163
- self.s_monitors = self.twiss_table.rows[self.monitor_names].s
175
+ # tw_table_local = self.twiss_table.rows[self.start:self.end]
176
+ # Parch: avoid issue with regular expression
177
+ if self.start is not None:
178
+ start = self.start.replace('$', '\\$')
179
+ else:
180
+ start = None
181
+ if self.end is not None:
182
+ end = self.end.replace('$', '\\$')
183
+ else:
184
+ end = None
185
+ tw_table_local = self.twiss_table.rows[start:end]
186
+
187
+ self._mask_monitors = tw_table_local.mask[self.monitor_names]
188
+ self._mask_correctors = tw_table_local.mask[self.corrector_names]
189
+ self.s_correctors = tw_table_local.s[self._mask_correctors]
190
+ self.s_monitors = tw_table_local.s[self._mask_monitors]
164
191
 
165
192
  self._add_correction_knobs()
166
193
 
167
194
  def correct(self, n_iter='auto', n_micado=None, n_singular_values=None,
168
- rcond=None, stop_iter_factor=0.1, verbose=True):
195
+ rcond=None, stop_iter_factor=0.1, verbose=True, _tw_orbit=None):
196
+
197
+ if _tw_orbit is not None and n_iter !=1:
198
+ raise ValueError('`_tw_orbit` can only be used with `n_iter=1`')
169
199
 
170
200
  assert n_iter == 'auto' or np.isscalar(n_iter)
171
201
  if n_iter == 'auto':
@@ -177,7 +207,7 @@ class OrbitCorrectionSinglePlane:
177
207
  i_iter = 0
178
208
  while True:
179
209
  try:
180
- position = self._measure_position()
210
+ position = self._measure_position(tw_orbit=_tw_orbit)
181
211
  except xt.twiss.ClosedOrbitSearchError:
182
212
  raise RuntimeError('Closed orbit not found. '
183
213
  'Please use the `thread(...)` method to obtain a first guess, '
@@ -200,13 +230,17 @@ class OrbitCorrectionSinglePlane:
200
230
  i_iter += 1
201
231
  if n_iter != 'auto' and i_iter >= n_iter:
202
232
  break
203
- position = self._measure_position()
204
- self._position_after = position
205
- if verbose:
206
- print(
207
- f'Trajectory correction - iter {i_iter}, rms: {position.std()}')
208
233
 
209
- def _measure_position(self):
234
+ if _tw_orbit is None:
235
+ position = self._measure_position()
236
+ self._position_after = position
237
+ if verbose:
238
+ print(
239
+ f'Trajectory correction - iter {i_iter}, rms: {position.std()}')
240
+ else:
241
+ self._position_after = None
242
+
243
+ def _compute_tw_orbit(self):
210
244
  if self.mode == 'open':
211
245
  # Initialized with betx=1, bety=1 (use W_matrix to avoid compilation)
212
246
  twinit = xt.TwissInit(W_matrix=np.eye(6),
@@ -217,8 +251,14 @@ class OrbitCorrectionSinglePlane:
217
251
  twinit = None
218
252
  tw_orbit = self.line.twiss4d(only_orbit=True, start=self.start, end=self.end,
219
253
  init=twinit, reverse=False)
254
+ return tw_orbit
255
+
256
+ def _measure_position(self, tw_orbit=None):
220
257
 
221
- position = tw_orbit.rows[self.monitor_names][self.plane]
258
+ if tw_orbit is None:
259
+ tw_orbit = self._compute_tw_orbit()
260
+
261
+ position = tw_orbit[self.plane][self._mask_monitors]
222
262
 
223
263
  return position
224
264
 
@@ -387,7 +427,8 @@ class TrajectoryCorrection:
387
427
  self.y_correction = None
388
428
 
389
429
  def correct(self, planes=None, n_micado=None, n_singular_values=None,
390
- rcond=None, n_iter='auto', verbose=True, stop_iter_factor=0.1):
430
+ rcond=None, n_iter='auto', verbose=True, stop_iter_factor=0.1,
431
+ tol_position_std=1e-10):
391
432
 
392
433
  '''
393
434
  Correct the trajectory in the horizontal and/or vertical plane.
@@ -445,30 +486,58 @@ class TrajectoryCorrection:
445
486
  i_iter = 0
446
487
  stop_x = self.x_correction is None or 'x' not in planes
447
488
  stop_y = self.y_correction is None or 'y' not in planes
489
+
490
+ if stop_x and stop_y:
491
+ return
492
+
493
+ if self.x_correction is not None:
494
+ a_correction = self.x_correction
495
+ if self.y_correction is not None:
496
+ a_correction = self.y_correction
497
+
498
+ tw_orbit = a_correction._compute_tw_orbit()
499
+
448
500
  while True:
449
- if not stop_x:
501
+
502
+ if self.x_correction is not None and 'x' in planes:
450
503
  self.x_correction.correct(n_micado=n_micado_x,
451
504
  n_singular_values=n_singular_values_x,
452
- rcond=rcond_x, verbose=False, n_iter=1)
453
- if i_iter > 0 and n_iter == 'auto':
454
- stop_x = (self.x_correction._position_after.std()
455
- > (1. - stop_iter_factor) * self.x_correction._position_before.std())
456
- if not stop_y:
505
+ rcond=rcond_x, verbose=False, n_iter=1,
506
+ _tw_orbit=tw_orbit)
507
+
508
+ if self.y_correction is not None and 'y' in planes:
457
509
  self.y_correction.correct(n_micado=n_micado_y,
458
510
  n_singular_values=n_singular_values_y,
459
- rcond=rcond_y, verbose=False, n_iter=1)
460
- if i_iter > 0 and n_iter == 'auto':
461
- stop_y = (self.y_correction._position_after.std()
462
- > (1. - stop_iter_factor) * self.y_correction._position_before.std())
511
+ rcond=rcond_y, verbose=False, n_iter=1,
512
+ _tw_orbit=tw_orbit)
513
+
514
+ tw_orbit_prev = tw_orbit
515
+ tw_orbit = a_correction._compute_tw_orbit()
516
+
517
+ if n_iter == 'auto' and self.x_correction is not None and 'x' in planes:
518
+ new_position = self.x_correction._measure_position(tw_orbit)
519
+ old_position = self.x_correction._measure_position(tw_orbit_prev)
520
+ stop_x = (new_position.std() < tol_position_std or
521
+ new_position.std() > (1. - stop_iter_factor) * old_position.std())
522
+
523
+ if n_iter == 'auto' and self.y_correction is not None and 'y' in planes:
524
+ new_position = self.y_correction._measure_position(tw_orbit)
525
+ old_position = self.y_correction._measure_position(tw_orbit_prev)
526
+ stop_y = (new_position.std() < tol_position_std or
527
+ new_position.std() > (1. - stop_iter_factor) * old_position.std())
463
528
 
464
529
  if verbose:
465
530
  str_2print = f'Iteration {i_iter}, '
466
531
  if self.x_correction is not None and 'x' in planes:
467
- str_2print += (f'x_rms: {self.x_correction._position_before.std():.2e}'
468
- f' -> {self.x_correction._position_after.std():.2e}, ')
532
+ new_position = self.x_correction._measure_position(tw_orbit)
533
+ old_position = self.x_correction._measure_position(tw_orbit_prev)
534
+ str_2print += (f'x_rms: {old_position.std():.2e}'
535
+ f' -> {new_position.std():.2e}, ')
469
536
  if self.y_correction is not None and 'y' in planes:
470
- str_2print += (f'y_rms: {self.y_correction._position_before.std():.2e}'
471
- f' -> {self.y_correction._position_after.std():.2e}')
537
+ new_position = self.y_correction._measure_position(tw_orbit)
538
+ old_position = self.y_correction._measure_position(tw_orbit_prev)
539
+ str_2print += (f'y_rms: {old_position.std():.2e}'
540
+ f' -> {new_position.std():.2e}')
472
541
  print(str_2print)
473
542
  if stop_x and stop_y:
474
543
  break
@@ -612,12 +681,15 @@ def _thread(line, ds_thread, twiss_table=None, rcond_short = None, rcond_long =
612
681
 
613
682
  if verbose:
614
683
  ocprint = ocorr_only_added_part
684
+ tw_orbit_print = ocprint.x_correction._compute_tw_orbit()
685
+ x_meas_print = ocprint.x_correction._measure_position(tw_orbit_print)
686
+ y_meas_print = ocprint.y_correction._measure_position(tw_orbit_print)
615
687
  str_2print = f'Stop at s={s_corr_end}, '
616
688
  str_2print += 'local rms = ['
617
689
  str_2print += (f'x: {ocprint.x_correction._position_before.std():.2e}'
618
- f' -> {ocprint.x_correction._position_after.std():.2e}, ')
690
+ f' -> {x_meas_print.std():.2e}, ')
619
691
  str_2print += (f'y: {ocprint.y_correction._position_before.std():.2e}'
620
- f' -> {ocprint.y_correction._position_after.std():.2e}]')
692
+ f' -> {y_meas_print.std():.2e}]')
621
693
  print(str_2print)
622
694
 
623
695
  # Correct from start line to end of new added portion
@@ -634,12 +706,15 @@ def _thread(line, ds_thread, twiss_table=None, rcond_short = None, rcond_long =
634
706
 
635
707
  if verbose:
636
708
  ocprint = ocorr
709
+ tw_orbit_print = ocprint.x_correction._compute_tw_orbit()
710
+ x_meas_print = ocprint.x_correction._measure_position(tw_orbit_print)
711
+ y_meas_print = ocprint.y_correction._measure_position(tw_orbit_print)
637
712
  str_2print = f'Stop at s={s_corr_end}, '
638
713
  str_2print += 'global rms = ['
639
714
  str_2print += (f'x: {ocprint.x_correction._position_before.std():.2e}'
640
- f' -> {ocprint.x_correction._position_after.std():.2e}, ')
715
+ f' -> {x_meas_print.std():.2e}, ')
641
716
  str_2print += (f'y: {ocprint.y_correction._position_before.std():.2e}'
642
- f' -> {ocprint.y_correction._position_after.std():.2e}]')
717
+ f' -> {y_meas_print.std():.2e}]')
643
718
  print(str_2print)
644
719
 
645
720
  s_corr_end += ds_thread
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.66.0
3
+ Version: 0.66.1
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
@@ -1 +0,0 @@
1
- __version__ = '0.66.0'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes