xtrack 0.98.12__tar.gz → 0.98.14__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 (372) hide show
  1. {xtrack-0.98.12/xtrack.egg-info → xtrack-0.98.14}/PKG-INFO +1 -1
  2. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_coupling_edwards_teng.py +14 -15
  3. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_quadrupole_fringe_ptc.py +7 -7
  4. xtrack-0.98.14/xtrack/_version.py +1 -0
  5. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/twiss.py +251 -83
  6. {xtrack-0.98.12 → xtrack-0.98.14/xtrack.egg-info}/PKG-INFO +1 -1
  7. xtrack-0.98.12/xtrack/_version.py +0 -1
  8. {xtrack-0.98.12 → xtrack-0.98.14}/LICENSE +0 -0
  9. {xtrack-0.98.12 → xtrack-0.98.14}/MANIFEST.in +0 -0
  10. {xtrack-0.98.12 → xtrack-0.98.14}/README.md +0 -0
  11. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/__init__.py +0 -0
  12. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/base_classes.py +0 -0
  13. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/BB6D.py +0 -0
  14. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  15. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/__init__.py +0 -0
  16. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/beambeam.py +0 -0
  17. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/boost.py +0 -0
  18. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  19. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  20. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/qgauss.py +0 -0
  21. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/slicing.py +0 -0
  22. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/spacecharge.py +0 -0
  23. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/elements.py +0 -0
  24. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/line.py +0 -0
  25. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/mathlibs.py +0 -0
  26. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/particles.py +0 -0
  27. {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/temp_pyparticles.py +0 -0
  28. {xtrack-0.98.12 → xtrack-0.98.14}/pyproject.toml +0 -0
  29. {xtrack-0.98.12 → xtrack-0.98.14}/setup.cfg +0 -0
  30. {xtrack-0.98.12 → xtrack-0.98.14}/setup.py +0 -0
  31. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acceleration.py +0 -0
  32. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acdipole.py +0 -0
  33. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acdipole_twiss.py +0 -0
  34. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_amplitude_detuning.py +0 -0
  35. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_polygon.py +0 -0
  36. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_table.py +0 -0
  37. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  38. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_apertures.py +0 -0
  39. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_attr_replicas_and_slices.py +0 -0
  40. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_boris_spatial.py +0 -0
  41. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_bucket_with_ref_energy_change.py +0 -0
  42. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_cavity_absolute_time.py +0 -0
  43. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_cavity_harmonic.py +0 -0
  44. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_chromatic_functions_vs_madx.py +0 -0
  45. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_coasting.py +0 -0
  46. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_collective_tracker.py +0 -0
  47. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_collimation.py +0 -0
  48. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_electron_cooler.py +0 -0
  49. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_element_characterization_functions.py +0 -0
  50. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_element_internal_record.py +0 -0
  51. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements.py +0 -0
  52. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements_classflags.py +0 -0
  53. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements_thick.py +0 -0
  54. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_environment.py +0 -0
  55. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  56. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  57. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_footprint.py +0 -0
  58. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_freeze_longitudinal.py +0 -0
  59. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_full_rings.py +0 -0
  60. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_h6_sps_beamline.py +0 -0
  61. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_hvkick.py +0 -0
  62. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ions.py +0 -0
  63. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_json.py +0 -0
  64. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lhc_env.py +0 -0
  65. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lhc_match_phase_15.py +0 -0
  66. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_line.py +0 -0
  67. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_load.py +0 -0
  68. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_load_vars.py +0 -0
  69. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lumi.py +0 -0
  70. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_mad_writer.py +0 -0
  71. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_madloader.py +0 -0
  72. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_madnginterface.py +0 -0
  73. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_magnet.py +0 -0
  74. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_and_track_from_element.py +0 -0
  75. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_coupling_knob.py +0 -0
  76. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_nested.py +0 -0
  77. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_optics_and_ip_knob.py +0 -0
  78. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  79. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_orbit_bump.py +0 -0
  80. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_tune_chroma_cminus.py +0 -0
  81. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_misalign.py +0 -0
  82. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_monitor.py +0 -0
  83. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multi_bunch_gauss.py +0 -0
  84. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multiline.py +0 -0
  85. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multisetter.py +0 -0
  86. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multispecies.py +0 -0
  87. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader.py +0 -0
  88. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_lhc.py +0 -0
  89. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_lhc_thin.py +0 -0
  90. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_ps.py +0 -0
  91. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_sps.py +0 -0
  92. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_ti2.py +0 -0
  93. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_optimize_for_tracking.py +0 -0
  94. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles.py +0 -0
  95. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles_basics.py +0 -0
  96. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles_pdg.py +0 -0
  97. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_pipeline.py +0 -0
  98. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_prebuild_kernels.py +0 -0
  99. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ps_against_ptc.py +0 -0
  100. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ps_multiturn_twiss.py +0 -0
  101. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_psb_chicane.py +0 -0
  102. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_pyht_interface.py +0 -0
  103. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_quadrupole_wedge.py +0 -0
  104. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radial_steering.py +0 -0
  105. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation.py +0 -0
  106. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_equilibrium_emittances.py +0 -0
  107. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  108. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_integrals.py +0 -0
  109. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen.py +0 -0
  110. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_exp.py +0 -0
  111. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_gauss.py +0 -0
  112. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_ruth.py +0 -0
  113. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rbend_straight_body.py +0 -0
  114. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rf_track.py +0 -0
  115. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rotation_signs.py +0 -0
  116. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_second_order_taylor_map.py +0 -0
  117. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_seeds.py +0 -0
  118. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slice_and_insert_with_replicas.py +0 -0
  119. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slice_elements.py +0 -0
  120. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slicing.py +0 -0
  121. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  122. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
  123. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_spacecharge_in_ring.py +0 -0
  124. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_spin.py +0 -0
  125. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_sps_thick_cpymad_loader.py +0 -0
  126. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_sps_thick_native_loader.py +0 -0
  127. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_survey.py +0 -0
  128. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tapering.py +0 -0
  129. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_thick_kickers_rf_crab.py +0 -0
  130. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_thick_lhc.py +0 -0
  131. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tilt_shifts.py +0 -0
  132. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tracker.py +0 -0
  133. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_trajectory_correcton.py +0 -0
  134. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss.py +0 -0
  135. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss_to_file.py +0 -0
  136. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss_vs_madx_psb.py +0 -0
  137. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_vs_madx.py +0 -0
  138. {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_xmask_orbit_correction.py +0 -0
  139. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/__init__.py +0 -0
  140. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/__init__.py +0 -0
  141. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  142. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  143. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  144. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/__init__.py +0 -0
  145. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  146. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  147. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  148. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/python_lattice_writer/__init__.py +0 -0
  149. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/python_lattice_writer/lattice_py_generation.py +0 -0
  150. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/aperture_meas.py +0 -0
  151. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/base_element.py +0 -0
  152. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/__init__.py +0 -0
  153. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/acdipole.py +0 -0
  154. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures.py +0 -0
  155. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  156. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  157. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  158. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  159. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  160. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  161. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/beam_interaction.py +0 -0
  162. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements.py +0 -0
  163. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/_generate_slice_elements_c_code.py +0 -0
  164. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/_include_integrator.py +0 -0
  165. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/acdipole.h +0 -0
  166. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/bend.h +0 -0
  167. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  168. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/crab_cavity.h +0 -0
  169. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
  170. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  171. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  172. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift.h +0 -0
  173. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_exact.h +0 -0
  174. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_exact_slice.h +0 -0
  175. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  176. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  177. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_cavity.h +0 -0
  178. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_crab_cavity.h +0 -0
  179. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_multipole.h +0 -0
  180. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  181. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  182. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  183. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  184. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
  185. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  186. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/elens.h +0 -0
  187. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  188. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  189. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
  190. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  191. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet.h +0 -0
  192. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  193. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  194. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  195. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/marker.h +0 -0
  196. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/misalignment.h +0 -0
  197. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  198. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  199. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  200. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  201. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  202. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/rbend.h +0 -0
  203. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  204. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  205. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  206. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  207. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  208. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  209. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/slnd.h +0 -0
  210. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  211. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  212. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_cavity.h +0 -0
  213. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_crab_cavity.h +0 -0
  214. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_multipole.h +0 -0
  215. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  216. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  217. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
  218. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  219. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +0 -0
  220. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  221. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  222. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  223. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_cavity.h +0 -0
  224. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_crab_cavity.h +0 -0
  225. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_multipole.h +0 -0
  226. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  227. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
  228. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
  229. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  230. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
  231. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
  232. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
  233. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
  234. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
  235. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  236. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
  237. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
  238. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +0 -0
  239. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +0 -0
  240. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_acdipole.h +0 -0
  241. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  242. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  243. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  244. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  245. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
  246. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
  247. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
  248. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
  249. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet.template.h +0 -0
  250. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_configure.h +0 -0
  251. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  252. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  253. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  254. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  255. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_misalignments.h +0 -0
  256. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  257. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_rf.h +0 -0
  258. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_rf.template.h +0 -0
  259. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  260. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  261. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  262. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  263. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  264. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_xyshift.h +0 -0
  265. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  266. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/variable_solenoid.h +0 -0
  267. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  268. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/wire.h +0 -0
  269. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  270. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  271. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  272. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  273. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/exciter.py +0 -0
  274. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/rft_element.py +0 -0
  275. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_base.py +0 -0
  276. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_drift.py +0 -0
  277. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_edge.py +0 -0
  278. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  279. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_thin.py +0 -0
  280. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/boris.py +0 -0
  281. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/builder.py +0 -0
  282. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/environment.py +0 -0
  283. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/footprint.py +0 -0
  284. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/functions.py +0 -0
  285. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/general.py +0 -0
  286. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/atomicadd.h +0 -0
  287. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/checks.h +0 -0
  288. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/constants.h +0 -0
  289. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/particle_states.h +0 -0
  290. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/synrad_spectrum.h +0 -0
  291. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/track.h +0 -0
  292. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/track_local_particle_with_transformations.h +0 -0
  293. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/internal_record.py +0 -0
  294. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/json.py +0 -0
  295. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/line.py +0 -0
  296. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/linear_normal_form.py +0 -0
  297. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/load.py +0 -0
  298. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/loss_location_refinement/__init__.py +0 -0
  299. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  300. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/lumi.py +0 -0
  301. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_loader.py +0 -0
  302. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/__init__.py +0 -0
  303. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/loader.py +0 -0
  304. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/madx.lark +0 -0
  305. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/parse.py +0 -0
  306. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_writer.py +0 -0
  307. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/madng_interface.py +0 -0
  308. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/match.py +0 -0
  309. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/__init__.py +0 -0
  310. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_position_monitor.h +0 -0
  311. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_position_monitor.py +0 -0
  312. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_profile_monitor.h +0 -0
  313. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_profile_monitor.py +0 -0
  314. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_size_monitor.h +0 -0
  315. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_size_monitor.py +0 -0
  316. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/last_turns_monitor.h +0 -0
  317. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/last_turns_monitor.py +0 -0
  318. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/particles_monitor.h +0 -0
  319. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/particles_monitor.py +0 -0
  320. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline.py +0 -0
  321. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/__init__.py +0 -0
  322. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  323. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  324. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/__init__.py +0 -0
  325. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/multisetter.h +0 -0
  326. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/multisetter.py +0 -0
  327. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/__init__.py +0 -0
  328. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/constants.py +0 -0
  329. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/local_particle_custom_api.h +0 -0
  330. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/masses.py +0 -0
  331. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/particles.py +0 -0
  332. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/pdg.py +0 -0
  333. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/rng_src/base_rng.h +0 -0
  334. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/rng_src/particles_rng.h +0 -0
  335. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/__init__.py +0 -0
  336. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/core.py +0 -0
  337. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/manager.py +0 -0
  338. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/multitracker.py +0 -0
  339. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/__init__.py +0 -0
  340. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/element_inits.py +0 -0
  341. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/element_types.py +0 -0
  342. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/progress_indicator.py +0 -0
  343. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/__init__.py +0 -0
  344. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_generators.py +0 -0
  345. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/exponential.h +0 -0
  346. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  347. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/normal.h +0 -0
  348. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/rutherford.h +0 -0
  349. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/uniform.h +0 -0
  350. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/uniform_accurate.h +0 -0
  351. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/slicing.py +0 -0
  352. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/survey.py +0 -0
  353. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/__init__.py +0 -0
  354. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/parser.py +0 -0
  355. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/path.py +0 -0
  356. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/svgutils.py +0 -0
  357. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/synctime.py +0 -0
  358. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/table.py +0 -0
  359. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tapering.py +0 -0
  360. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/targets.py +0 -0
  361. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/track_flags.py +0 -0
  362. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker.py +0 -0
  363. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker_data.py +0 -0
  364. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker_src/tracker.h +0 -0
  365. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/trajectory_correction.py +0 -0
  366. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/twissplot.py +0 -0
  367. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/view.py +0 -0
  368. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/SOURCES.txt +0 -0
  369. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/dependency_links.txt +0 -0
  370. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/entry_points.txt +0 -0
  371. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/requires.txt +0 -0
  372. {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtrack
3
- Version: 0.98.12
3
+ Version: 0.98.14
4
4
  Summary: Tracking library for particle accelerators
5
5
  Author: G. Iadarola et al.
6
6
  License-Expression: Apache-2.0
@@ -69,24 +69,23 @@ def test_coupling_edwards_teng():
69
69
  betx_mad_at_s, bety_mad_at_s, alfx_mad_at_s, alfy_mad_at_s)
70
70
 
71
71
  xo.assert_allclose(tw.r11_edw_teng, r11_mad_at_s,
72
- rtol=1e-5, atol=1e-5*np.max(np.abs(r11_mad_at_s)))
72
+ rtol=1e-5, atol=5e-4*np.max(np.abs(r11_mad_at_s)))
73
73
  xo.assert_allclose(tw.r12_edw_teng, r12_mad_at_s,
74
- rtol=1e-5, atol=1e-5*np.max(np.abs(r12_mad_at_s)))
74
+ rtol=1e-5, atol=5e-4*np.max(np.abs(r12_mad_at_s)))
75
75
  xo.assert_allclose(tw.r21_edw_teng, r21_mad_at_s,
76
- rtol=1e-5, atol=1e-5*np.max(np.abs(r21_mad_at_s)))
76
+ rtol=1e-5, atol=6e-4*np.max(np.abs(r21_mad_at_s)))
77
77
  xo.assert_allclose(tw.r22_edw_teng, r22_mad_at_s,
78
- rtol=1e-5, atol=1e-5*np.max(np.abs(r22_mad_at_s)))
79
- xo.assert_allclose(tw.betx_edw_teng, betx_mad_at_s, atol=0, rtol=1e-5)
80
-
81
- xo.assert_allclose(tw.betx_edw_teng, betx_mad_at_s, atol=0, rtol=5e-8)
82
- xo.assert_allclose(tw.alfx_edw_teng, alfx_mad_at_s, atol=1e-4, rtol=1e-8)
83
- xo.assert_allclose(tw.bety_edw_teng, bety_mad_at_s, atol=0, rtol=5e-8)
84
- xo.assert_allclose(tw.alfy_edw_teng, alfy_mad_at_s, atol=1e-4, rtol=1e-8)
85
-
86
- xo.assert_allclose(tw.f1001, rdt_mad_at_s['f1001'],
87
- atol=1e-5 * np.max(np.abs(rdt_mad_at_s['f1001'])))
88
- xo.assert_allclose(tw.f1010, rdt_mad_at_s['f1010'],
89
- atol=1e-5 * np.max(np.abs(rdt_mad_at_s['f1010'])))
78
+ rtol=1e-5, atol=5e-4*np.max(np.abs(r22_mad_at_s)))
79
+ xo.assert_allclose(tw.betx_edw_teng, betx_mad_at_s, atol=0, rtol=1e-6)
80
+ xo.assert_allclose(tw.alfx_edw_teng, alfx_mad_at_s, atol=1e-4, rtol=1e-6)
81
+ xo.assert_allclose(tw.bety_edw_teng, bety_mad_at_s, atol=0, rtol=1e-6)
82
+ xo.assert_allclose(tw.alfy_edw_teng, alfy_mad_at_s, atol=1e-4, rtol=1e-6)
83
+
84
+ xo.assert_allclose(tw.f1001, rdt_mad_at_s['f1001'], rtol=1e-3,
85
+ atol=5e-4 * np.max(np.abs(rdt_mad_at_s['f1001'])))
86
+ xo.assert_allclose(tw.f1010, rdt_mad_at_s['f1010'], rtol=1e-3,
87
+ atol=5e-3 * np.max(np.abs(rdt_mad_at_s['f1010'])))
88
+
90
89
 
91
90
 
92
91
  def compute_rdt(r11, r12, r21, r22, betx, bety, alfx, alfy):
@@ -20,7 +20,7 @@ def test_quadrupole_fringe_ptc():
20
20
 
21
21
  p0 = xt.Particles(x=x0,px=px0,y=y0,py=py0,delta=delta0,zeta=zeta0,beta0=beta0)
22
22
 
23
- ptau0 = float(p0.ptau)
23
+ ptau0 = p0.ptau[0]
24
24
  tau0 = zeta0/beta0
25
25
 
26
26
  # XSuite
@@ -58,9 +58,9 @@ def test_quadrupole_fringe_ptc():
58
58
 
59
59
  df = madx.table.tracksumm.dframe()
60
60
 
61
- assert np.isclose(p0.x, df.x[-1])
62
- assert np.isclose(p0.px, df.px[-1])
63
- assert np.isclose(p0.y, df.y[-1])
64
- assert np.isclose(p0.py, df.py[-1])
65
- assert np.isclose(p0.ptau, df.pt[-1])
66
- assert np.isclose(p0.zeta/p0.beta0, df.t[-1])
61
+ assert np.isclose(p0.x, df.x.values[-1])
62
+ assert np.isclose(p0.px, df.px.values[-1])
63
+ assert np.isclose(p0.y, df.y.values[-1])
64
+ assert np.isclose(p0.py, df.py.values[-1])
65
+ assert np.isclose(p0.ptau, df.pt.values[-1])
66
+ assert np.isclose(p0.zeta/p0.beta0, df.t.values[-1])
@@ -0,0 +1 @@
1
+ __version__ = '0.98.14'
@@ -944,6 +944,8 @@ def twiss_line(line, particle_ref=None, method=None,
944
944
  alfy1, alfy2 = twiss_res['alfy1'], twiss_res['alfy2']
945
945
  coupling_result = _compute_coupling_elements_edwards_teng(
946
946
  W_matrix=twiss_res['W_matrix'],
947
+ mux=twiss_res['mux'],
948
+ muy=twiss_res['muy'],
947
949
  qx=twiss_res['qx'],
948
950
  qy=twiss_res['qy']
949
951
  )
@@ -1409,100 +1411,57 @@ def _compute_lattice_functions(Ws, use_full_inverse, s_co):
1409
1411
 
1410
1412
  def _compute_coupling_elements_edwards_teng(
1411
1413
  W_matrix: np.ndarray,
1414
+ mux: np.ndarray,
1415
+ muy: np.ndarray,
1412
1416
  qx: float = None,
1413
1417
  qy: float = None,
1414
1418
  ):
1415
1419
  """Compute coupling matrix elements using the Edwards-Teng method.
1416
1420
 
1417
- Using definition in chapter 7 of MAD8 guide
1418
-
1419
- For the RDTs calculation, refer to R. Calaga and R. Tomás, "Betatron coupling:
1420
- Merging Hamiltonian and matrix approaches", 10.1103/PhysRevSTAB.8.034001.
1421
-
1422
- Returns
1423
- -------
1424
- r11, r12, r21, r22: complex
1425
- Coupling matrix elements.
1426
- f1010, f1001: complex
1427
- Resonance driving terms f1010 and f1001.
1428
1421
  """
1429
1422
 
1430
- Rot = np.zeros(shape=(6, 6), dtype=np.float64)
1431
- lnf = xt.linear_normal_form
1432
-
1433
- Rot[0:2,0:2] = lnf.Rot2D(qx)
1434
- Rot[2:4,2:4] = lnf.Rot2D(qy)
1435
-
1436
- num_places = W_matrix.shape[0]
1437
- r11 = np.zeros(num_places)
1438
- r12 = np.zeros(num_places)
1439
- r21 = np.zeros(num_places)
1440
- r22 = np.zeros(num_places)
1441
- betx_et = np.zeros(num_places)
1442
- bety_et = np.zeros(num_places)
1443
- alfx_et = np.zeros(num_places)
1444
- alfy_et = np.zeros(num_places)
1445
- for idx in range(num_places):
1446
-
1447
- WW = W_matrix[idx, :, :]
1423
+ # This computes edwards-teng parameters from full one-turn W matrix at all locations
1424
+ # edw_teng_cols = _edwards_teng_from_one_turn_at_all_locations(W_matrix, qx, qy)
1425
+ #
1426
+ # The following instead computes from the one-turn R matrix at one location
1427
+ # and then propagates along the ring:
1448
1428
 
1449
- WW_inv = lnf.S.T @ WW.T @ lnf.S
1450
-
1451
- RR = WW @ Rot @ WW_inv
1452
-
1453
- AA = RR[:2, :2]
1454
- BB = RR[:2, 2:4]
1455
- CC = RR[2:4, :2]
1456
- DD = RR[2:4, 2:4]
1429
+ # R matrix of the full ring (4D)
1430
+ Rot = np.zeros(shape=(6, 6), dtype=np.float64)
1431
+ Rot[0:2,0:2] = lnf.Rot2D(2 * np.pi * qx)
1432
+ Rot[2:4,2:4] = lnf.Rot2D(2 * np.pi * qy)
1433
+ WW0 = W_matrix[0, :, :]
1434
+ WW0_inv = lnf.S.T @ WW0.T @ lnf.S
1435
+ RR = WW0 @ Rot @ WW0_inv
1436
+
1437
+ # Edwards-Teng initial conditions
1438
+ edw_teng_init = _compute_edwards_teng_initial(RR)
1439
+
1440
+ # Edwards-Teng parameters along the ring
1441
+ edw_teng_cols = _propagate_edwards_teng(
1442
+ WW=W_matrix, mux=mux, muy=muy,
1443
+ RR_ET0=edw_teng_init['RR_ET0'],
1444
+ betx0=edw_teng_init['betx0'],
1445
+ alfx0=edw_teng_init['alfx0'],
1446
+ bety0=edw_teng_init['bety0'],
1447
+ alfy0=edw_teng_init['alfy0']
1448
+ )
1457
1449
 
1458
- if np.linalg.norm(BB) < 1e-10 and np.linalg.norm(CC) < 1e-10:
1459
- R_edw_teng = np.zeros((2, 2))
1460
- else:
1461
- tr = np.linalg.trace
1462
- b_pl_c = CC + _conj_mat(BB)
1463
- det_bc = np.linalg.det(b_pl_c)
1464
- tr_a_m_tr_d = tr(AA) - tr(DD)
1465
- coeff = - (0.5 * tr_a_m_tr_d
1466
- + np.sign(det_bc) * np.sqrt(det_bc + 0.25 * tr_a_m_tr_d**2))
1467
- R_edw_teng = 1/coeff * b_pl_c
1468
-
1469
- EE = AA - BB@R_edw_teng
1470
- FF = DD + R_edw_teng@BB
1471
-
1472
- quarter = 0.25
1473
- two = 2.0
1474
-
1475
- sinmu2 = -EE[0,1]*EE[1,0] - quarter*(EE[0,0] - EE[1,1])**2
1476
- sinmux = np.sign(EE[0,1]) * np.sqrt(abs(sinmu2))
1477
- betx_et_this = EE[0,1] / sinmux
1478
- alfx_et_this = (EE[0,0] - EE[1,1]) / (two * sinmux)
1479
-
1480
- sinmu2 = -FF[0,1]*FF[1,0] - quarter*(FF[0,0] - FF[1,1])**2
1481
- sinmuy = np.sign(FF[0,1]) * np.sqrt(abs(sinmu2))
1482
- bety_et_this = FF[0,1] / sinmuy
1483
- alfy_et_this = (FF[0,0] - FF[1,1]) / (two * sinmuy)
1484
-
1485
- r11[idx] = R_edw_teng[0,0]
1486
- r12[idx] = R_edw_teng[0,1]
1487
- r21[idx] = R_edw_teng[1,0]
1488
- r22[idx] = R_edw_teng[1,1]
1489
- betx_et[idx] = betx_et_this
1490
- alfx_et[idx] = alfx_et_this
1491
- bety_et[idx] = bety_et_this
1492
- alfy_et[idx] = alfy_et_this
1493
-
1494
- rdts = _compute_coupling_rdts(r11, r12, r21, r22,
1495
- betx_et, bety_et, alfx_et, alfy_et)
1450
+ # Coupling RDTs from Edwards-Teng parameters
1451
+ rdts = _compute_coupling_rdts(edw_teng_cols['r11'], edw_teng_cols['r12'],
1452
+ edw_teng_cols['r21'], edw_teng_cols['r22'],
1453
+ edw_teng_cols['betx'], edw_teng_cols['bety'],
1454
+ edw_teng_cols['alfx'], edw_teng_cols['alfy'])
1496
1455
 
1497
1456
  out = {
1498
- 'r11_edw_teng': r11,
1499
- 'r12_edw_teng': r12,
1500
- 'r21_edw_teng': r21,
1501
- 'r22_edw_teng': r22,
1502
- 'betx_edw_teng': betx_et,
1503
- 'alfx_edw_teng': alfx_et,
1504
- 'bety_edw_teng': bety_et,
1505
- 'alfy_edw_teng': alfy_et,
1457
+ 'r11_edw_teng': edw_teng_cols['r11'],
1458
+ 'r12_edw_teng': edw_teng_cols['r12'],
1459
+ 'r21_edw_teng': edw_teng_cols['r21'],
1460
+ 'r22_edw_teng': edw_teng_cols['r22'],
1461
+ 'betx_edw_teng': edw_teng_cols['betx'],
1462
+ 'alfx_edw_teng': edw_teng_cols['alfx'],
1463
+ 'bety_edw_teng': edw_teng_cols['bety'],
1464
+ 'alfy_edw_teng': edw_teng_cols['alfy'],
1506
1465
  }
1507
1466
  out.update(rdts)
1508
1467
 
@@ -1556,6 +1515,50 @@ def _compute_coupling_rdts(r11, r12, r21, r22, betx, bety, alfx, alfy):
1556
1515
 
1557
1516
  return {'f1001': f1001, 'f1010': f1010}
1558
1517
 
1518
+ def _compute_edwards_teng_initial(RR):
1519
+
1520
+ AA = RR[:2, :2]
1521
+ BB = RR[:2, 2:4]
1522
+ CC = RR[2:4, :2]
1523
+ DD = RR[2:4, 2:4]
1524
+
1525
+ if np.linalg.norm(BB) < 1e-10 and np.linalg.norm(CC) < 1e-10:
1526
+ RR_ET0 = np.zeros((2, 2))
1527
+ else:
1528
+ tr = np.linalg.trace
1529
+ b_pl_c = CC + _conj_mat(BB)
1530
+ det_bc = np.linalg.det(b_pl_c)
1531
+ tr_a_m_tr_d = tr(AA) - tr(DD)
1532
+ coeff = - (0.5 * tr_a_m_tr_d
1533
+ + np.sign(tr_a_m_tr_d) * np.sqrt(det_bc + 0.25 * tr_a_m_tr_d**2))
1534
+ RR_ET0 = 1/coeff * b_pl_c
1535
+
1536
+ EE = AA - BB@RR_ET0
1537
+ FF = DD + RR_ET0@BB
1538
+
1539
+ quarter = 0.25
1540
+ two = 2.0
1541
+
1542
+ sinmu2 = -EE[0,1]*EE[1,0] - quarter*(EE[0,0] - EE[1,1])**2
1543
+ sinmux = np.sign(EE[0,1]) * np.sqrt(abs(sinmu2))
1544
+ betx0 = EE[0,1] / sinmux
1545
+ alfx0 = (EE[0,0] - EE[1,1]) / (two * sinmux)
1546
+
1547
+ sinmu2 = -FF[0,1]*FF[1,0] - quarter*(FF[0,0] - FF[1,1])**2
1548
+ sinmuy = np.sign(FF[0,1]) * np.sqrt(abs(sinmu2))
1549
+ bety0 = FF[0,1] / sinmuy
1550
+ alfy0 = (FF[0,0] - FF[1,1]) / (two * sinmuy)
1551
+
1552
+ edw_teng_init = {
1553
+ 'RR_ET0': RR_ET0,
1554
+ 'betx0': betx0,
1555
+ 'alfx0': alfx0,
1556
+ 'bety0': bety0,
1557
+ 'alfy0': alfy0
1558
+ }
1559
+
1560
+ return edw_teng_init
1561
+
1559
1562
  def _conj_mat(mm):
1560
1563
  a = mm[0,0]
1561
1564
  b = mm[0,1]
@@ -1564,6 +1567,171 @@ def _conj_mat(mm):
1564
1567
  return np.array([[d, -b], [-c, a]])
1565
1568
 
1566
1569
 
1570
+ def _edwards_teng_from_one_turn_at_all_locations(WW, qx, qy):
1571
+
1572
+ # R matrix of the full ring (4D)
1573
+ Rot = np.zeros(shape=(6, 6), dtype=np.float64)
1574
+ Rot[0:2,0:2] = lnf.Rot2D(2 * np.pi * qx)
1575
+ Rot[2:4,2:4] = lnf.Rot2D(2 * np.pi * qy)
1576
+
1577
+ n_elem = WW.shape[0]
1578
+
1579
+ betx = np.zeros(n_elem)
1580
+ alfx = np.zeros(n_elem)
1581
+ bety = np.zeros(n_elem)
1582
+ alfy = np.zeros(n_elem)
1583
+ r11 = np.zeros(n_elem)
1584
+ r12 = np.zeros(n_elem)
1585
+ r21 = np.zeros(n_elem)
1586
+ r22 = np.zeros(n_elem)
1587
+
1588
+ for ii in range(n_elem):
1589
+
1590
+ WW0 = WW[ii, :, :]
1591
+ WW0_inv = lnf.S.T @ WW0.T @ lnf.S
1592
+ RR = WW0 @ Rot @ WW0_inv
1593
+
1594
+ # Edwards-Teng initial conditions
1595
+ edw_teng_init = _compute_edwards_teng_initial(RR)
1596
+
1597
+ RR_ET=edw_teng_init['RR_ET0']
1598
+
1599
+ r11[ii] = RR_ET[0, 0]
1600
+ r12[ii] = RR_ET[0, 1]
1601
+ r21[ii] = RR_ET[1, 0]
1602
+ r22[ii] = RR_ET[1, 1]
1603
+ betx[ii] = edw_teng_init['betx0']
1604
+ alfx[ii] = edw_teng_init['alfx0']
1605
+ bety[ii] = edw_teng_init['bety0']
1606
+ alfy[ii] = edw_teng_init['alfy0']
1607
+
1608
+ out_dict = {
1609
+ 'betx': betx,
1610
+ 'alfx': alfx,
1611
+ 'bety': bety,
1612
+ 'alfy': alfy,
1613
+ 'r11': r11,
1614
+ 'r12': r12,
1615
+ 'r21': r21,
1616
+ 'r22': r22
1617
+ }
1618
+
1619
+ return out_dict
1620
+
1621
+ def _propagate_edwards_teng(WW, mux, muy, RR_ET0, betx0, alfx0, bety0, alfy0):
1622
+
1623
+ lnf = xt.linear_normal_form
1624
+ SS2D = lnf.S[:2, :2]
1625
+
1626
+ RR_ET = RR_ET0.copy()
1627
+
1628
+ n_elem = len(mux)
1629
+ betx = np.zeros(n_elem)
1630
+ alfx = np.zeros(n_elem)
1631
+ bety = np.zeros(n_elem)
1632
+ alfy = np.zeros(n_elem)
1633
+ r11 = np.zeros(n_elem)
1634
+ r12 = np.zeros(n_elem)
1635
+ r21 = np.zeros(n_elem)
1636
+ r22 = np.zeros(n_elem)
1637
+
1638
+ betx[0] = betx0
1639
+ alfx[0] = alfx0
1640
+ bety[0] = bety0
1641
+ alfy[0] = alfy0
1642
+ r11[0] = RR_ET[0, 0]
1643
+ r12[0] = RR_ET[0, 1]
1644
+ r21[0] = RR_ET[1, 0]
1645
+ r22[0] = RR_ET[1, 1]
1646
+
1647
+ for ii in range(n_elem - 1):
1648
+
1649
+ # Build 2D R matrix of the element
1650
+ WW1 = WW[ii, :, :]
1651
+ WW2 = WW[ii+1, :, :]
1652
+ WW1_inv = lnf.S.T @ WW1.T @ lnf.S
1653
+ Rot_e_ii = np.zeros((6,6), dtype=np.float64)
1654
+ Rot_e_ii[0:2,0:2] = lnf.Rot2D(2*np.pi*(mux[ii+1] - mux[ii]))
1655
+ Rot_e_ii[2:4,2:4] = lnf.Rot2D(2*np.pi*(muy[ii+1] - muy[ii]))
1656
+ RRe_ii = WW2 @ Rot_e_ii @ WW1_inv
1657
+
1658
+ # Blocks of the R matrix of the element
1659
+ AA = RRe_ii[:2, :2]
1660
+ BB = RRe_ii[:2, 2:4]
1661
+ CC = RRe_ii[2:4, :2]
1662
+ DD = RRe_ii[2:4, 2:4]
1663
+
1664
+ # Propagate EE, FF and RR_ET through the element
1665
+ # Bases on MAD-X implementation (see madx/src/twiss.f90, subroutine twcptk)
1666
+
1667
+ if np.allclose(BB, 0, atol=1e-12) and np.allclose(CC, 0, atol=1e-12):
1668
+ # Case in which the matrix is block diagonal (no coupling in the element)
1669
+ EE = AA
1670
+ FF = DD
1671
+ EEBAR = SS2D @ EE.T @ SS2D.T
1672
+ edet = EE[0,0]*EE[1,1] - EE[0,1]*EE[1,0]
1673
+ CCDD = -FF @ RR_ET
1674
+ RR_ET = -CCDD @ EEBAR / edet
1675
+ else:
1676
+ RR_ET_BAR = SS2D @ RR_ET.T @ SS2D.T
1677
+ EE = AA - BB @ RR_ET
1678
+ edet = EE[0,0]*EE[1,1] - EE[0,1]*EE[1,0]
1679
+ EEBAR = SS2D @ EE.T @ SS2D.T
1680
+ CCDD = CC - DD @ RR_ET
1681
+ FF = DD + CC @ RR_ET_BAR
1682
+ RR_ET = -CCDD @ EEBAR / edet
1683
+
1684
+ # Propagate Edwards-Teng Twiss parameters through the element
1685
+ # Based on MAD-X implementation (see madx/src/twiss.f90, subroutine twcptk_twiss)
1686
+
1687
+ betx1 = betx[ii]
1688
+ alfx1 = alfx[ii]
1689
+ bety1 = bety[ii]
1690
+ alfy1 = alfy[ii]
1691
+
1692
+ Rx11 = EE[0,0]
1693
+ Rx12 = EE[0,1]
1694
+ Rx21 = EE[1,0]
1695
+ Rx22 = EE[1,1]
1696
+ detx = Rx11 * Rx22 - Rx12 * Rx21
1697
+ tempb = Rx11 * betx1 - Rx12 * alfx1
1698
+ tempa = Rx21 * betx1 - Rx22 * alfx1
1699
+ alfx2 = - (tempa * tempb + Rx12 * Rx22) / (detx*betx1)
1700
+ betx2 = (tempb * tempb + Rx12 * Rx12) / (detx*betx1)
1701
+
1702
+ Ry11 = FF[0,0]
1703
+ Ry12 = FF[0,1]
1704
+ Ry21 = FF[1,0]
1705
+ Ry22 = FF[1,1]
1706
+ dety = Ry11 * Ry22 - Ry12 * Ry21
1707
+ tempb = Ry11 * bety1 - Ry12 * alfy1
1708
+ tempa = Ry21 * bety1 - Ry22 * alfy1
1709
+ alfy2 = - (tempa * tempb + Ry12 * Ry22) / (dety*bety1)
1710
+ bety2 = (tempb * tempb + Ry12 * Ry12) / (dety*bety1)
1711
+
1712
+ betx[ii+1] = betx2
1713
+ alfx[ii+1] = alfx2
1714
+ r11[ii+1] = RR_ET[0, 0]
1715
+ r12[ii+1] = RR_ET[0, 1]
1716
+ r21[ii+1] = RR_ET[1, 0]
1717
+ r22[ii+1] = RR_ET[1, 1]
1718
+ bety[ii+1] = bety2
1719
+ alfy[ii+1] = alfy2
1720
+
1721
+ out_dict = {
1722
+ 'betx': betx,
1723
+ 'alfx': alfx,
1724
+ 'bety': bety,
1725
+ 'alfy': alfy,
1726
+ 'r11': r11,
1727
+ 'r12': r12,
1728
+ 'r21': r21,
1729
+ 'r22': r22
1730
+ }
1731
+
1732
+ return out_dict
1733
+
1734
+
1567
1735
  def _compute_global_quantities(line, twiss_res, method):
1568
1736
 
1569
1737
  s_vect = twiss_res['s']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xtrack
3
- Version: 0.98.12
3
+ Version: 0.98.14
4
4
  Summary: Tracking library for particle accelerators
5
5
  Author: G. Iadarola et al.
6
6
  License-Expression: Apache-2.0
@@ -1 +0,0 @@
1
- __version__ = '0.98.12'
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