xtrack 0.82.0__tar.gz → 0.82.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 (304) hide show
  1. {xtrack-0.82.0/xtrack.egg-info → xtrack-0.82.1}/PKG-INFO +1 -1
  2. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_twiss_vs_madx_psb.py +2 -2
  3. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_vs_madx.py +2 -2
  4. xtrack-0.82.1/xtrack/_version.py +1 -0
  5. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/twiss.py +76 -62
  6. {xtrack-0.82.0 → xtrack-0.82.1/xtrack.egg-info}/PKG-INFO +1 -1
  7. xtrack-0.82.0/xtrack/_version.py +0 -1
  8. {xtrack-0.82.0 → xtrack-0.82.1}/LICENSE +0 -0
  9. {xtrack-0.82.0 → xtrack-0.82.1}/MANIFEST.in +0 -0
  10. {xtrack-0.82.0 → xtrack-0.82.1}/README.md +0 -0
  11. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/__init__.py +0 -0
  12. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/base_classes.py +0 -0
  13. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/BB6D.py +0 -0
  14. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
  15. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/__init__.py +0 -0
  16. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/beambeam.py +0 -0
  17. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/boost.py +0 -0
  18. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
  19. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
  20. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/qgauss.py +0 -0
  21. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/slicing.py +0 -0
  22. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/be_beamfields/spacecharge.py +0 -0
  23. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/elements.py +0 -0
  24. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/line.py +0 -0
  25. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/mathlibs.py +0 -0
  26. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/particles.py +0 -0
  27. {xtrack-0.82.0 → xtrack-0.82.1}/ducktrack/temp_pyparticles.py +0 -0
  28. {xtrack-0.82.0 → xtrack-0.82.1}/pyproject.toml +0 -0
  29. {xtrack-0.82.0 → xtrack-0.82.1}/setup.cfg +0 -0
  30. {xtrack-0.82.0 → xtrack-0.82.1}/setup.py +0 -0
  31. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_acceleration.py +0 -0
  32. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_amplitude_detuning.py +0 -0
  33. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_aperture_table.py +0 -0
  34. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  35. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_apertures.py +0 -0
  36. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_attr_replicas_and_slices.py +0 -0
  37. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_bucket_with_ref_energy_change.py +0 -0
  38. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_cavity_absolute_time.py +0 -0
  39. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_chromatic_functions_vs_madx.py +0 -0
  40. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_coasting.py +0 -0
  41. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_collective_tracker.py +0 -0
  42. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_collimation.py +0 -0
  43. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_electron_cooler.py +0 -0
  44. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_element_characterization_functions.py +0 -0
  45. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_element_internal_record.py +0 -0
  46. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_elements.py +0 -0
  47. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_elements_classflags.py +0 -0
  48. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_elements_thick.py +0 -0
  49. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_environment.py +0 -0
  50. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  51. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  52. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_footprint.py +0 -0
  53. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_freeze_longitudinal.py +0 -0
  54. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_full_rings.py +0 -0
  55. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_h6_sps_beamline.py +0 -0
  56. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_hvkick.py +0 -0
  57. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_ions.py +0 -0
  58. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_legacy_multiline_to_env.py +0 -0
  59. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_lhc_env.py +0 -0
  60. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_lhc_match_phase_15.py +0 -0
  61. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_line.py +0 -0
  62. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_lumi.py +0 -0
  63. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_mad_writer.py +0 -0
  64. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_madloader.py +0 -0
  65. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_madnginterface.py +0 -0
  66. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_magnet.py +0 -0
  67. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_and_track_from_element.py +0 -0
  68. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_coupling_knob.py +0 -0
  69. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_nested.py +0 -0
  70. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_optics_and_ip_knob.py +0 -0
  71. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  72. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_orbit_bump.py +0 -0
  73. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_match_tune_chroma_cminus.py +0 -0
  74. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_monitor.py +0 -0
  75. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_multi_bunch_gauss.py +0 -0
  76. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_multiline.py +0 -0
  77. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_multisetter.py +0 -0
  78. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_multispecies.py +0 -0
  79. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_native_madloader.py +0 -0
  80. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_optimize_for_tracking.py +0 -0
  81. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_particles.py +0 -0
  82. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_particles_basics.py +0 -0
  83. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_particles_pdg.py +0 -0
  84. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
  85. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_pipeline.py +0 -0
  86. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_prebuild_kernels.py +0 -0
  87. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_ps_against_ptc.py +0 -0
  88. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_ps_multiturn_twiss.py +0 -0
  89. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_psb_chicane.py +0 -0
  90. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_pyht_interface.py +0 -0
  91. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_radial_steering.py +0 -0
  92. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_radiation.py +0 -0
  93. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_radiation_equilibrium_emittances.py +0 -0
  94. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  95. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_random_gen.py +0 -0
  96. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_random_gen_exp.py +0 -0
  97. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_random_gen_gauss.py +0 -0
  98. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_random_gen_ruth.py +0 -0
  99. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_rbend_rbarc.py +0 -0
  100. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_rf_track.py +0 -0
  101. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_rotation_signs.py +0 -0
  102. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_second_order_taylor_map.py +0 -0
  103. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_seeds.py +0 -0
  104. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_slice_and_insert_with_replicas.py +0 -0
  105. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_slice_elements.py +0 -0
  106. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_slicing.py +0 -0
  107. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  108. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_spacecharge_in_ring.py +0 -0
  109. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_sps_thick.py +0 -0
  110. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_survey.py +0 -0
  111. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_tapering.py +0 -0
  112. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_thick_lhc.py +0 -0
  113. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_tilt_shifts.py +0 -0
  114. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_tracker.py +0 -0
  115. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_trajectory_correcton.py +0 -0
  116. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_twiss.py +0 -0
  117. {xtrack-0.82.0 → xtrack-0.82.1}/tests/test_xmask_orbit_correction.py +0 -0
  118. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/__init__.py +0 -0
  119. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/__init__.py +0 -0
  120. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  121. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  122. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
  123. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/lhc_match/__init__.py +0 -0
  124. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
  125. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
  126. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/_temp/lhc_match/var_limits.py +0 -0
  127. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/aperture_meas.py +0 -0
  128. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/base_element.py +0 -0
  129. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/__init__.py +0 -0
  130. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures.py +0 -0
  131. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  132. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  133. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  134. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  135. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  136. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  137. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/beam_interaction.py +0 -0
  138. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements.py +0 -0
  139. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/bend.h +0 -0
  140. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  141. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  142. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  143. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift.h +0 -0
  144. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
  145. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  146. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  147. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  148. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  149. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  150. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  151. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  152. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/elens.h +0 -0
  153. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  154. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  155. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  156. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/magnet.h +0 -0
  157. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  158. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  159. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  160. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  161. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  162. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  163. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  164. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  165. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/rbend.h +0 -0
  166. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  167. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  168. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  169. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  170. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  171. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  172. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
  173. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  174. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  175. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
  176. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  177. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  178. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
  179. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  180. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
  181. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  182. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  183. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  184. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  185. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
  186. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
  187. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  188. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
  189. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
  190. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
  191. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
  192. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
  193. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  194. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
  195. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
  196. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
  197. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  198. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  199. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  200. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
  201. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  202. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  203. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  204. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  205. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  206. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
  207. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
  208. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
  209. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
  210. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  211. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  212. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  213. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  214. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  215. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  216. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  217. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/wire.h +0 -0
  218. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  219. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  220. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  221. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  222. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/exciter.py +0 -0
  223. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/magnets.py +0 -0
  224. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/rft_element.py +0 -0
  225. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/slice_elements.py +0 -0
  226. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/beam_elements/slice_elements_thick.py +0 -0
  227. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/environment.py +0 -0
  228. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/footprint.py +0 -0
  229. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/general.py +0 -0
  230. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/headers/atomicadd.h +0 -0
  231. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/headers/checks.h +0 -0
  232. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/headers/constants.h +0 -0
  233. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/headers/particle_states.h +0 -0
  234. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/headers/synrad_spectrum.h +0 -0
  235. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/internal_record.py +0 -0
  236. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/json.py +0 -0
  237. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/line.py +0 -0
  238. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/linear_normal_form.py +0 -0
  239. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/loss_location_refinement/__init__.py +0 -0
  240. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
  241. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/lumi.py +0 -0
  242. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_loader.py +0 -0
  243. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_parser/__init__.py +0 -0
  244. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_parser/loader.py +0 -0
  245. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_parser/madx.lark +0 -0
  246. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_parser/parse.py +0 -0
  247. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/mad_writer.py +0 -0
  248. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/madng_interface.py +0 -0
  249. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/match.py +0 -0
  250. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/__init__.py +0 -0
  251. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_position_monitor.h +0 -0
  252. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_position_monitor.py +0 -0
  253. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_profile_monitor.h +0 -0
  254. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_profile_monitor.py +0 -0
  255. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_size_monitor.h +0 -0
  256. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/beam_size_monitor.py +0 -0
  257. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/last_turns_monitor.h +0 -0
  258. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/last_turns_monitor.py +0 -0
  259. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/particles_monitor.h +0 -0
  260. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/monitors/particles_monitor.py +0 -0
  261. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multiline.py +0 -0
  262. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multiline_legacy/__init__.py +0 -0
  263. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
  264. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multiline_legacy/shared_knobs.py +0 -0
  265. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multisetter/__init__.py +0 -0
  266. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/multisetter/multisetter.py +0 -0
  267. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/__init__.py +0 -0
  268. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/constants.py +0 -0
  269. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/masses.py +0 -0
  270. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/particles.py +0 -0
  271. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/pdg.py +0 -0
  272. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/rng_src/base_rng.h +0 -0
  273. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/particles/rng_src/particles_rng.h +0 -0
  274. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/pipeline/__init__.py +0 -0
  275. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/pipeline/core.py +0 -0
  276. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/pipeline/manager.py +0 -0
  277. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/pipeline/multitracker.py +0 -0
  278. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/progress_indicator.py +0 -0
  279. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/__init__.py +0 -0
  280. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_generators.py +0 -0
  281. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/exponential.h +0 -0
  282. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  283. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/normal.h +0 -0
  284. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/rutherford.h +0 -0
  285. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/uniform.h +0 -0
  286. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/random/random_src/uniform_accurate.h +0 -0
  287. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/slicing.py +0 -0
  288. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/survey.py +0 -0
  289. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/svgutils/__init__.py +0 -0
  290. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/svgutils/parser.py +0 -0
  291. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/svgutils/path.py +0 -0
  292. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/svgutils/svgutils.py +0 -0
  293. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/synctime.py +0 -0
  294. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/tapering.py +0 -0
  295. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/targets.py +0 -0
  296. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/tracker.py +0 -0
  297. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/tracker_data.py +0 -0
  298. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/tracker_src/tracker.h +0 -0
  299. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/trajectory_correction.py +0 -0
  300. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack/twissplot.py +0 -0
  301. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack.egg-info/SOURCES.txt +0 -0
  302. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack.egg-info/dependency_links.txt +0 -0
  303. {xtrack-0.82.0 → xtrack-0.82.1}/xtrack.egg-info/requires.txt +0 -0
  304. {xtrack-0.82.0 → xtrack-0.82.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.82.0
3
+ Version: 0.82.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
@@ -31,8 +31,8 @@ def test_twiss_psb(test_context):
31
31
  # With the approximation beta ~= beta0 we have delta ~= pzeta ~= 1/beta0 ptau
32
32
  # ==> ptau ~= beta0 delta ==> dptau / ddelta~= beta0
33
33
 
34
- xo.assert_allclose(tw.dqx, twmad.summary.dq1 * beta0, rtol=0, atol=1e-5)
35
- xo.assert_allclose(tw.dqy, twmad.summary.dq2 * beta0, rtol=0, atol=1e-5)
34
+ xo.assert_allclose(tw.dqx, twmad.summary.dq1 * beta0, rtol=0, atol=1e-3)
35
+ xo.assert_allclose(tw.dqy, twmad.summary.dq2 * beta0, rtol=0, atol=1e-3)
36
36
 
37
37
  dx_ref = np.interp(tw.s, twmad.s, twmad.dx * beta0)
38
38
  betx_ref = np.interp(tw.s, twmad.s, twmad.betx)
@@ -620,7 +620,7 @@ def test_low_beta_twiss(test_context):
620
620
  xo.assert_allclose(mad.table.summ['q1'][0], tw['qx'], rtol=0, atol=1e-6)
621
621
  xo.assert_allclose(mad.table.summ['q2'][0], tw['qy'], rtol=0, atol=1e-6)
622
622
  xo.assert_allclose(mad.table.summ['dq1'][0]*beta0, tw['dqx'], rtol=0,
623
- atol=1e-6)
623
+ atol=1e-3)
624
624
  xo.assert_allclose(mad.table.summ['dq2'][0]*beta0, tw['dqy'], rtol=0,
625
- atol=1e-6)
625
+ atol=1e-3)
626
626
  xo.assert_allclose(tw.qs, emitdf.qs.iloc[0], rtol=0, atol=1e-8)
@@ -0,0 +1 @@
1
+ __version__ = '0.82.1'
@@ -680,6 +680,43 @@ def twiss_line(line, particle_ref=None, method=None,
680
680
  _initial_particles=_initial_particles,
681
681
  _ebe_monitor=_ebe_monitor)
682
682
 
683
+
684
+
685
+ if (not only_orbit and (
686
+ (compute_chromatic_properties is True)
687
+ or (compute_chromatic_properties is None and periodic))):
688
+
689
+ with xt.line._preserve_config(line):
690
+ line.freeze_energy(force=True)
691
+ cols_chrom, scalars_chrom = _compute_chromatic_functions(
692
+ line=line,
693
+ init=init,
694
+ delta_chrom=delta_chrom,
695
+ steps_r_matrix=steps_r_matrix,
696
+ matrix_responsiveness_tol=matrix_responsiveness_tol,
697
+ matrix_stability_tol=matrix_stability_tol,
698
+ symplectify=symplectify,
699
+ method=method,
700
+ use_full_inverse=use_full_inverse,
701
+ nemitt_x=nemitt_x,
702
+ nemitt_y=nemitt_y,
703
+ on_momentum_twiss_res=twiss_res,
704
+ r_sigma=r_sigma,
705
+ delta_disp=delta_disp,
706
+ zeta_disp=zeta_disp,
707
+ start=start,
708
+ end=end,
709
+ num_turns=num_turns,
710
+ hide_thin_groups=hide_thin_groups,
711
+ only_markers=only_markers,
712
+ periodic=periodic,
713
+ periodic_mode=periodic_mode,
714
+ include_collective=include_collective,
715
+ )
716
+ twiss_res._data.update(cols_chrom)
717
+ twiss_res._data.update(scalars_chrom)
718
+ twiss_res._col_names += list(cols_chrom.keys())
719
+
683
720
  if not skip_global_quantities and not only_orbit:
684
721
  twiss_res._data['R_matrix'] = R_matrix
685
722
  twiss_res._data['steps_r_matrix'] = steps_r_matrix
@@ -691,39 +728,6 @@ def twiss_line(line, particle_ref=None, method=None,
691
728
  twiss_res._data['eigenvalues'] = eigenvalues.copy()
692
729
  twiss_res._data['rotation_matrix'] = Rot.copy()
693
730
 
694
- if (not only_orbit and (
695
- (compute_chromatic_properties is True)
696
- or (compute_chromatic_properties is None and periodic))):
697
-
698
- cols_chrom, scalars_chrom = _compute_chromatic_functions(
699
- line=line,
700
- init=init,
701
- delta_chrom=delta_chrom,
702
- steps_r_matrix=steps_r_matrix,
703
- matrix_responsiveness_tol=matrix_responsiveness_tol,
704
- matrix_stability_tol=matrix_stability_tol,
705
- symplectify=symplectify,
706
- method=method,
707
- use_full_inverse=use_full_inverse,
708
- nemitt_x=nemitt_x,
709
- nemitt_y=nemitt_y,
710
- on_momentum_twiss_res=twiss_res,
711
- r_sigma=r_sigma,
712
- delta_disp=delta_disp,
713
- zeta_disp=zeta_disp,
714
- start=start,
715
- end=end,
716
- num_turns=num_turns,
717
- hide_thin_groups=hide_thin_groups,
718
- only_markers=only_markers,
719
- periodic=periodic,
720
- periodic_mode=periodic_mode,
721
- include_collective=include_collective,
722
- )
723
- twiss_res._data.update(cols_chrom)
724
- twiss_res._data.update(scalars_chrom)
725
- twiss_res._col_names += list(cols_chrom.keys())
726
-
727
731
  if eneloss_and_damping and not only_orbit:
728
732
  assert 'R_matrix' in twiss_res._data
729
733
  if radiation_method != 'full' or twiss_res._data['R_matrix_ebe'] is None:
@@ -814,14 +818,16 @@ def twiss_line(line, particle_ref=None, method=None,
814
818
  if ((twiss_res.orientation == 'forward' and not reverse)
815
819
  or (twiss_res.orientation == 'backward' and reverse)):
816
820
  twiss_res.muzeta += init.muzeta - twiss_res.muzeta[0]
817
- twiss_res.dzeta += init.dzeta - twiss_res.dzeta[0]
821
+ if 'dzeta' in twiss_res._data:
822
+ twiss_res.dzeta += init.dzeta - twiss_res.dzeta[0]
818
823
  if 'mux' in twiss_res._data:
819
824
  twiss_res.mux += init.mux - twiss_res.mux[0]
820
825
  twiss_res.muy += init.muy - twiss_res.muy[0]
821
826
  elif ((twiss_res.orientation == 'forward' and reverse)
822
827
  or (twiss_res.orientation == 'backward' and not reverse)):
823
828
  twiss_res.muzeta += init.muzeta - twiss_res.muzeta[-1]
824
- twiss_res.dzeta += init.dzeta - twiss_res.dzeta[-1]
829
+ if 'dzeta' in twiss_res._data:
830
+ twiss_res.dzeta += init.dzeta - twiss_res.dzeta[-1]
825
831
  if 'mux' in twiss_res._data:
826
832
  twiss_res.mux += init.mux - twiss_res.mux[-1]
827
833
  twiss_res.muy += init.muy - twiss_res.muy[-1]
@@ -1013,14 +1019,6 @@ def _twiss_open(line, init,
1013
1019
  Ws[:, 4, :] -= 0.5 * (line.record_last_track.zeta[7:13, i_start:i_stop+1] - zeta_co).T / scale_eigen
1014
1020
  Ws[:, 5, :] -= 0.5 * (line.record_last_track.ptau[7:13, i_start:i_stop+1] - ptau_co).T / particle_on_co._xobject.beta0[0] / scale_eigen
1015
1021
 
1016
- dzeta = (((line.record_last_track.zeta[6, i_start:i_stop+1] - zeta_co).T
1017
- - (line.record_last_track.zeta[12, i_start:i_stop+1] - zeta_co).T )
1018
- / ((line.record_last_track.delta[6, i_start:i_stop+1] - delta_co).T
1019
- - (line.record_last_track.delta[12, i_start:i_stop+1] - delta_co).T))
1020
-
1021
- dzeta -= dzeta[0]
1022
- dzeta = np.array(dzeta)
1023
-
1024
1022
  name_co = np.array(line._element_names_unique[i_start:i_stop] + ('_end_point',))
1025
1023
  name_co_env = np.array(line.element_names[i_start:i_stop] + ('_end_point',))
1026
1024
 
@@ -1052,8 +1050,6 @@ def _twiss_open(line, init,
1052
1050
  lattice_functions, i_replace = _compute_lattice_functions(Ws, use_full_inverse, s_co)
1053
1051
  twiss_res_element_by_element.update(lattice_functions)
1054
1052
 
1055
- twiss_res_element_by_element['dzeta'] = dzeta
1056
-
1057
1053
  extra_data = {}
1058
1054
  extra_data['only_markers'] = only_markers
1059
1055
  if _keep_tracking_data:
@@ -1067,7 +1063,7 @@ def _twiss_open(line, init,
1067
1063
  'x', 'px', 'y', 'py', 'zeta', 'delta', 'ptau',
1068
1064
  'betx', 'bety', 'alfx', 'alfy', 'gamx', 'gamy',
1069
1065
  'betx1', 'bety1', 'betx2', 'bety2',
1070
- 'dx', 'dpx', 'dy', 'dzeta', 'dpy',
1066
+ 'dx', 'dpx', 'dy', 'dpy',
1071
1067
  ]
1072
1068
 
1073
1069
  for key in _vars_hide_changes:
@@ -1228,20 +1224,17 @@ def _compute_global_quantities(line, twiss_res):
1228
1224
  part_on_co = twiss_res['particle_on_co']
1229
1225
  W_matrix = twiss_res['W_matrix']
1230
1226
 
1231
- dzeta = twiss_res['dzeta']
1232
- eta = -dzeta[-1]/circumference
1233
- alpha = eta + 1/part_on_co._xobject.gamma0[0]**2
1234
-
1235
1227
  beta0 = part_on_co._xobject.beta0[0]
1236
1228
  T_rev0 = circumference/clight/beta0
1237
1229
  bets0 = W_matrix[0, 4, 4]**2 + W_matrix[0, 4, 5]**2
1238
- if eta < 0: # below transition
1239
- bets0 = -bets0
1240
- ptau_co = twiss_res['ptau']
1241
-
1230
+ if 'slip_factor' in twiss_res:
1231
+ if twiss_res['slip_factor'] < 0: # below transition
1232
+ bets0 = -bets0
1233
+ else:
1234
+ bets0 = 0
1242
1235
 
1243
1236
  twiss_res._data.update({
1244
- 'slip_factor': eta, 'momentum_compaction_factor': alpha, 'bets0': bets0,
1237
+ 'bets0': bets0,
1245
1238
  'circumference': circumference, 'T_rev0': T_rev0,
1246
1239
  'particle_on_co':part_on_co.copy(_context=xo.context_default),
1247
1240
  'gamma0': part_on_co._xobject.gamma0[0],
@@ -1439,12 +1432,22 @@ def _compute_chromatic_functions(line, init, delta_chrom, steps_r_matrix,
1439
1432
  dqx = dmux[-1]
1440
1433
  dqy = dmuy[-1]
1441
1434
 
1442
- cols_chrom = {'dmux': dmux, 'dmuy': dmuy,
1435
+ dzeta = (tw_chrom_res[1].zeta - tw_chrom_res[0].zeta)/(2*delta_chrom)
1436
+ dzeta -= dzeta[0]
1437
+ dzeta = np.array(dzeta)
1438
+
1439
+ slip_factor = -dzeta[-1] / tw_chrom_res[0].circumference
1440
+ momentum_compaction_factor = (slip_factor
1441
+ + 1/tw_chrom_res[0].particle_on_co._xobject.gamma0[0]**2)
1442
+
1443
+ cols_chrom = {'dmux': dmux, 'dmuy': dmuy, 'dzeta': dzeta,
1443
1444
  'bx_chrom': bx_chrom, 'by_chrom': by_chrom,
1444
1445
  'ax_chrom': ax_chrom, 'ay_chrom': ay_chrom,
1445
1446
  'wx_chrom': wx_chrom, 'wy_chrom': wy_chrom,
1446
1447
  }
1447
- scalars_chrom = {'dqx': dqx, 'dqy': dqy}
1448
+ scalars_chrom = {'dqx': dqx, 'dqy': dqy, 'slip_factor': slip_factor,
1449
+ 'momentum_compaction_factor': momentum_compaction_factor,
1450
+ }
1448
1451
 
1449
1452
  if on_momentum_twiss_res is not None:
1450
1453
  mux = on_momentum_twiss_res.mux
@@ -2049,6 +2052,8 @@ def _handle_loop_around(kwargs):
2049
2052
  tw_res.mux -= tw_res['mux', ele_name_init] - init.mux
2050
2053
  tw_res.muy -= tw_res['muy', ele_name_init] - init.muy
2051
2054
  tw_res.muzeta -= tw_res['muzeta', ele_name_init] - init.muzeta
2055
+
2056
+ if 'dzeta' in tw_res.keys():
2052
2057
  tw_res.dzeta -= tw_res['dzeta', ele_name_init] - init.dzeta
2053
2058
 
2054
2059
  # Not yet supported
@@ -2098,7 +2103,9 @@ def _handle_init_inside_range(kwargs):
2098
2103
  tw_res.mux -= tw_res['mux', ele_name_init] - init.mux
2099
2104
  tw_res.muy -= tw_res['muy', ele_name_init] - init.muy
2100
2105
  tw_res.muzeta -= tw_res['muzeta', ele_name_init] - init.muzeta
2101
- tw_res.dzeta -= tw_res['dzeta', ele_name_init] - init.dzeta
2106
+
2107
+ if 'dzeta' in tw_res:
2108
+ tw_res.dzeta -= tw_res['dzeta', ele_name_init] - init.dzeta
2102
2109
 
2103
2110
  # Not correctly handled yet
2104
2111
  if 'dmux' in tw_res.keys():
@@ -3009,11 +3016,14 @@ class TwissTable(Table):
3009
3016
  mux = self.mux[at_element]
3010
3017
  muy = self.muy[at_element]
3011
3018
  muzeta = self.muzeta[at_element]
3012
- dzeta = self.dzeta[at_element]
3013
3019
  else:
3014
3020
  mux = 0
3015
3021
  muy = 0
3016
3022
  muzeta = 0
3023
+
3024
+ if 'dzeta' in self.keys():
3025
+ dzeta = self.dzeta[at_element]
3026
+ else:
3017
3027
  dzeta = 0
3018
3028
 
3019
3029
  return TwissInit(particle_on_co=part, W_matrix=W,
@@ -3342,7 +3352,8 @@ class TwissTable(Table):
3342
3352
  out.dpx = out.dpx
3343
3353
  out.dy = out.dy
3344
3354
  out.dpy = -out.dpy
3345
- out.dzeta = -out.dzeta
3355
+ if 'dzeta' in out:
3356
+ out.dzeta = -out.dzeta
3346
3357
 
3347
3358
  if 'dx_zeta' in out._col_names:
3348
3359
  out.dx_zeta = out.dx_zeta
@@ -3365,10 +3376,12 @@ class TwissTable(Table):
3365
3376
  out.mux = out.mux[0] - out.mux
3366
3377
  out.muy = out.muy[0] - out.muy
3367
3378
  out.muzeta = out.muzeta[0] - out.muzeta
3368
- out.dzeta = out.dzeta[0] - out.dzeta
3369
3379
  out.phix = -out.phix
3370
3380
  out.phiy = -out.phiy
3371
3381
 
3382
+ if 'dzeta' in out:
3383
+ out.dzeta = out.dzeta[0] - out.dzeta
3384
+
3372
3385
  if 'ax_chrom' in out._col_names:
3373
3386
  out.ax_chrom = -out.ax_chrom
3374
3387
  out.ay_chrom = -out.ay_chrom
@@ -3471,7 +3484,8 @@ class TwissTable(Table):
3471
3484
 
3472
3485
  def zero_at(self, name):
3473
3486
  for kk in CYCLICAL_QUANTITIES:
3474
- self[kk] -= self[kk, name]
3487
+ if kk in self:
3488
+ self[kk] -= self[kk, name]
3475
3489
 
3476
3490
  def target(self, tars=None, value=None, at=None, **kwargs):
3477
3491
  if value is None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xtrack
3
- Version: 0.82.0
3
+ Version: 0.82.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.82.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
File without changes
File without changes