xtrack 0.97.0__tar.gz → 0.97.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. {xtrack-0.97.0/xtrack.egg-info → xtrack-0.97.1}/PKG-INFO +1 -1
  2. xtrack-0.97.1/ducktrack/be_beamfields/BB6D.py +160 -0
  3. xtrack-0.97.1/ducktrack/be_beamfields/BB6Ddata.py +309 -0
  4. xtrack-0.97.1/ducktrack/be_beamfields/__init__.py +7 -0
  5. xtrack-0.97.1/ducktrack/be_beamfields/beambeam.py +441 -0
  6. xtrack-0.97.1/ducktrack/be_beamfields/boost.py +125 -0
  7. xtrack-0.97.1/ducktrack/be_beamfields/gaussian_fields.py +216 -0
  8. xtrack-0.97.1/ducktrack/be_beamfields/propagate_sigma_matrix.py +304 -0
  9. xtrack-0.97.1/ducktrack/be_beamfields/qgauss.py +80 -0
  10. xtrack-0.97.1/ducktrack/be_beamfields/slicing.py +61 -0
  11. xtrack-0.97.1/ducktrack/be_beamfields/spacecharge.py +182 -0
  12. {xtrack-0.97.0 → xtrack-0.97.1}/pyproject.toml +1 -1
  13. xtrack-0.97.1/xtrack/_temp/__init__.py +0 -0
  14. xtrack-0.97.1/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
  15. xtrack-0.97.1/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +96 -0
  16. xtrack-0.97.1/xtrack/_temp/lhc_match/__init__.py +3 -0
  17. xtrack-0.97.1/xtrack/_temp/lhc_match/gen_madx_optics_file.py +57 -0
  18. xtrack-0.97.1/xtrack/_temp/lhc_match/lhc_match.py +1149 -0
  19. xtrack-0.97.1/xtrack/_temp/lhc_match/var_limits.py +337 -0
  20. xtrack-0.97.1/xtrack/_temp/python_lattice_writer/__init__.py +0 -0
  21. xtrack-0.97.1/xtrack/_temp/python_lattice_writer/lattice_py_generation.py +318 -0
  22. xtrack-0.97.1/xtrack/_version.py +1 -0
  23. xtrack-0.97.1/xtrack/beam_elements/__init__.py +37 -0
  24. xtrack-0.97.1/xtrack/beam_elements/acdipole.py +224 -0
  25. xtrack-0.97.1/xtrack/beam_elements/apertures.py +555 -0
  26. xtrack-0.97.1/xtrack/beam_elements/beam_interaction.py +97 -0
  27. xtrack-0.97.1/xtrack/beam_elements/elements.py +4401 -0
  28. xtrack-0.97.1/xtrack/beam_elements/elements_src/_generate_slice_elements_c_code.py +310 -0
  29. xtrack-0.97.1/xtrack/beam_elements/elements_src/_include_integrator.py +144 -0
  30. xtrack-0.97.1/xtrack/beam_elements/exciter.py +159 -0
  31. xtrack-0.97.1/xtrack/beam_elements/rft_element.py +80 -0
  32. xtrack-0.97.1/xtrack/beam_elements/slice_base.py +41 -0
  33. xtrack-0.97.1/xtrack/beam_elements/slice_elements_drift.py +170 -0
  34. xtrack-0.97.1/xtrack/beam_elements/slice_elements_edge.py +414 -0
  35. xtrack-0.97.1/xtrack/beam_elements/slice_elements_thick.py +127 -0
  36. xtrack-0.97.1/xtrack/beam_elements/slice_elements_thin.py +256 -0
  37. xtrack-0.97.1/xtrack/loss_location_refinement/__init__.py +6 -0
  38. xtrack-0.97.1/xtrack/loss_location_refinement/loss_location_refinement.py +631 -0
  39. xtrack-0.97.1/xtrack/mad_parser/__init__.py +2 -0
  40. xtrack-0.97.1/xtrack/mad_parser/loader.py +745 -0
  41. xtrack-0.97.1/xtrack/mad_parser/parse.py +322 -0
  42. xtrack-0.97.1/xtrack/monitors/__init__.py +8 -0
  43. xtrack-0.97.1/xtrack/monitors/beam_position_monitor.py +136 -0
  44. xtrack-0.97.1/xtrack/monitors/beam_profile_monitor.py +207 -0
  45. xtrack-0.97.1/xtrack/monitors/beam_size_monitor.py +149 -0
  46. xtrack-0.97.1/xtrack/monitors/last_turns_monitor.py +122 -0
  47. xtrack-0.97.1/xtrack/monitors/particles_monitor.py +184 -0
  48. xtrack-0.97.1/xtrack/multiline_legacy/__init__.py +2 -0
  49. xtrack-0.97.1/xtrack/multiline_legacy/multiline_legacy.py +684 -0
  50. xtrack-0.97.1/xtrack/multiline_legacy/shared_knobs.py +71 -0
  51. xtrack-0.97.1/xtrack/multisetter/__init__.py +1 -0
  52. xtrack-0.97.1/xtrack/multisetter/multisetter.py +197 -0
  53. xtrack-0.97.1/xtrack/particles/__init__.py +23 -0
  54. xtrack-0.97.1/xtrack/particles/constants.py +7 -0
  55. xtrack-0.97.1/xtrack/particles/masses.py +181 -0
  56. xtrack-0.97.1/xtrack/particles/particles.py +2119 -0
  57. xtrack-0.97.1/xtrack/particles/pdg.py +549 -0
  58. xtrack-0.97.1/xtrack/pipeline/__init__.py +3 -0
  59. xtrack-0.97.1/xtrack/pipeline/core.py +40 -0
  60. xtrack-0.97.1/xtrack/pipeline/manager.py +87 -0
  61. xtrack-0.97.1/xtrack/pipeline/multitracker.py +72 -0
  62. xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/__init__.py +7 -0
  63. xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/element_inits.py +38 -0
  64. xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/element_types.py +114 -0
  65. xtrack-0.97.1/xtrack/random/__init__.py +5 -0
  66. xtrack-0.97.1/xtrack/random/random_generators.py +201 -0
  67. xtrack-0.97.1/xtrack/svgutils/__init__.py +1 -0
  68. xtrack-0.97.1/xtrack/svgutils/parser.py +327 -0
  69. xtrack-0.97.1/xtrack/svgutils/path.py +985 -0
  70. xtrack-0.97.1/xtrack/svgutils/svgutils.py +45 -0
  71. {xtrack-0.97.0 → xtrack-0.97.1/xtrack.egg-info}/PKG-INFO +1 -1
  72. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/SOURCES.txt +67 -0
  73. xtrack-0.97.0/xtrack/_version.py +0 -1
  74. {xtrack-0.97.0 → xtrack-0.97.1}/LICENSE +0 -0
  75. {xtrack-0.97.0 → xtrack-0.97.1}/MANIFEST.in +0 -0
  76. {xtrack-0.97.0 → xtrack-0.97.1}/README.md +0 -0
  77. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/__init__.py +0 -0
  78. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/base_classes.py +0 -0
  79. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/elements.py +0 -0
  80. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/line.py +0 -0
  81. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/mathlibs.py +0 -0
  82. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/particles.py +0 -0
  83. {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/temp_pyparticles.py +0 -0
  84. {xtrack-0.97.0 → xtrack-0.97.1}/setup.cfg +0 -0
  85. {xtrack-0.97.0 → xtrack-0.97.1}/setup.py +0 -0
  86. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acceleration.py +0 -0
  87. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acdipole.py +0 -0
  88. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acdipole_twiss.py +0 -0
  89. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_amplitude_detuning.py +0 -0
  90. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_polygon.py +0 -0
  91. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_table.py +0 -0
  92. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
  93. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_apertures.py +0 -0
  94. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_attr_replicas_and_slices.py +0 -0
  95. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_boris_spatial.py +0 -0
  96. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_bucket_with_ref_energy_change.py +0 -0
  97. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_cavity_absolute_time.py +0 -0
  98. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_chromatic_functions_vs_madx.py +0 -0
  99. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_coasting.py +0 -0
  100. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_collective_tracker.py +0 -0
  101. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_collimation.py +0 -0
  102. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_coupling_edwards_teng.py +0 -0
  103. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_electron_cooler.py +0 -0
  104. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_element_characterization_functions.py +0 -0
  105. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_element_internal_record.py +0 -0
  106. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements.py +0 -0
  107. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements_classflags.py +0 -0
  108. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements_thick.py +0 -0
  109. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_environment.py +0 -0
  110. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction.py +0 -0
  111. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
  112. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_footprint.py +0 -0
  113. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_freeze_longitudinal.py +0 -0
  114. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_full_rings.py +0 -0
  115. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_h6_sps_beamline.py +0 -0
  116. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_hvkick.py +0 -0
  117. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ions.py +0 -0
  118. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_json.py +0 -0
  119. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_legacy_multiline_to_env.py +0 -0
  120. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lhc_env.py +0 -0
  121. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lhc_match_phase_15.py +0 -0
  122. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_line.py +0 -0
  123. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_load.py +0 -0
  124. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_load_vars.py +0 -0
  125. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lumi.py +0 -0
  126. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_mad_writer.py +0 -0
  127. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_madloader.py +0 -0
  128. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_madnginterface.py +0 -0
  129. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_magnet.py +0 -0
  130. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_and_track_from_element.py +0 -0
  131. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_coupling_knob.py +0 -0
  132. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_nested.py +0 -0
  133. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob.py +0 -0
  134. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
  135. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_orbit_bump.py +0 -0
  136. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_tune_chroma_cminus.py +0 -0
  137. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_misalign.py +0 -0
  138. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_monitor.py +0 -0
  139. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multi_bunch_gauss.py +0 -0
  140. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multiline.py +0 -0
  141. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multisetter.py +0 -0
  142. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multispecies.py +0 -0
  143. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader.py +0 -0
  144. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_lhc.py +0 -0
  145. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_lhc_thin.py +0 -0
  146. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_ps.py +0 -0
  147. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_sps.py +0 -0
  148. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_ti2.py +0 -0
  149. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_optimize_for_tracking.py +0 -0
  150. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles.py +0 -0
  151. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles_basics.py +0 -0
  152. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles_pdg.py +0 -0
  153. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_pipeline.py +0 -0
  154. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_prebuild_kernels.py +0 -0
  155. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ps_against_ptc.py +0 -0
  156. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ps_multiturn_twiss.py +0 -0
  157. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_psb_chicane.py +0 -0
  158. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_pyht_interface.py +0 -0
  159. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_quadrupole_fringe_ptc.py +0 -0
  160. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_quadrupole_wedge.py +0 -0
  161. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radial_steering.py +0 -0
  162. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation.py +0 -0
  163. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances.py +0 -0
  164. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
  165. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_integrals.py +0 -0
  166. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen.py +0 -0
  167. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_exp.py +0 -0
  168. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_gauss.py +0 -0
  169. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_ruth.py +0 -0
  170. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rbend_straight_body.py +0 -0
  171. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rf_track.py +0 -0
  172. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rotation_signs.py +0 -0
  173. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_second_order_taylor_map.py +0 -0
  174. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_seeds.py +0 -0
  175. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slice_and_insert_with_replicas.py +0 -0
  176. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slice_elements.py +0 -0
  177. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slicing.py +0 -0
  178. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
  179. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
  180. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_spacecharge_in_ring.py +0 -0
  181. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_spin.py +0 -0
  182. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_sps_thick_cpymad_loader.py +0 -0
  183. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_sps_thick_native_loader.py +0 -0
  184. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_survey.py +0 -0
  185. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tapering.py +0 -0
  186. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_thick_kickers_rf_crab.py +0 -0
  187. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_thick_lhc.py +0 -0
  188. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tilt_shifts.py +0 -0
  189. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tracker.py +0 -0
  190. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_trajectory_correcton.py +0 -0
  191. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss.py +0 -0
  192. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss_to_file.py +0 -0
  193. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss_vs_madx_psb.py +0 -0
  194. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_vs_madx.py +0 -0
  195. {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_xmask_orbit_correction.py +0 -0
  196. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/__init__.py +0 -0
  197. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
  198. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/aperture_meas.py +0 -0
  199. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/base_element.py +0 -0
  200. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
  201. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
  202. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
  203. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
  204. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
  205. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
  206. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/acdipole.h +0 -0
  207. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/bend.h +0 -0
  208. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/cavity.h +0 -0
  209. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/crab_cavity.h +0 -0
  210. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
  211. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
  212. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
  213. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift.h +0 -0
  214. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact.h +0 -0
  215. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact_slice.h +0 -0
  216. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
  217. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
  218. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_cavity.h +0 -0
  219. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_crab_cavity.h +0 -0
  220. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_multipole.h +0 -0
  221. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
  222. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
  223. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
  224. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
  225. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
  226. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
  227. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/elens.h +0 -0
  228. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/exciter.h +0 -0
  229. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
  230. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
  231. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
  232. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet.h +0 -0
  233. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
  234. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
  235. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
  236. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/marker.h +0 -0
  237. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/misalignment.h +0 -0
  238. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipole.h +0 -0
  239. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
  240. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
  241. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/octupole.h +0 -0
  242. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
  243. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rbend.h +0 -0
  244. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
  245. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
  246. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
  247. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
  248. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
  249. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
  250. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/slnd.h +0 -0
  251. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/srotation.h +0 -0
  252. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/temprf.h +0 -0
  253. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
  254. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_cavity.h +0 -0
  255. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_crab_cavity.h +0 -0
  256. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_multipole.h +0 -0
  257. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
  258. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
  259. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
  260. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
  261. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +0 -0
  262. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
  263. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
  264. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
  265. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_cavity.h +0 -0
  266. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_crab_cavity.h +0 -0
  267. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_multipole.h +0 -0
  268. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
  269. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
  270. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
  271. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
  272. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
  273. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
  274. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
  275. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
  276. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
  277. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
  278. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
  279. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
  280. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +0 -0
  281. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +0 -0
  282. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_acdipole.h +0 -0
  283. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
  284. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
  285. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
  286. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
  287. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
  288. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
  289. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
  290. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
  291. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.template.h +0 -0
  292. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_configure.h +0 -0
  293. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
  294. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
  295. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
  296. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
  297. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_misalignments.h +0 -0
  298. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
  299. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.h +0 -0
  300. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.template.h +0 -0
  301. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
  302. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
  303. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
  304. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
  305. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
  306. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xyshift.h +0 -0
  307. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
  308. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/variable_solenoid.h +0 -0
  309. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wedge.h +0 -0
  310. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wire.h +0 -0
  311. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
  312. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
  313. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
  314. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
  315. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/boris.py +0 -0
  316. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/builder.py +0 -0
  317. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/environment.py +0 -0
  318. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/footprint.py +0 -0
  319. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/functions.py +0 -0
  320. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/general.py +0 -0
  321. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/atomicadd.h +0 -0
  322. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/checks.h +0 -0
  323. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/constants.h +0 -0
  324. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/particle_states.h +0 -0
  325. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/synrad_spectrum.h +0 -0
  326. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/track.h +0 -0
  327. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/track_local_particle_with_transformations.h +0 -0
  328. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/internal_record.py +0 -0
  329. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/json.py +0 -0
  330. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/line.py +0 -0
  331. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/linear_normal_form.py +0 -0
  332. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/load.py +0 -0
  333. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/lumi.py +0 -0
  334. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_loader.py +0 -0
  335. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_parser/madx.lark +0 -0
  336. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_writer.py +0 -0
  337. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/madng_interface.py +0 -0
  338. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/match.py +0 -0
  339. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_position_monitor.h +0 -0
  340. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_profile_monitor.h +0 -0
  341. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_size_monitor.h +0 -0
  342. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/last_turns_monitor.h +0 -0
  343. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/particles_monitor.h +0 -0
  344. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/multiline.py +0 -0
  345. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/multisetter/multisetter.h +0 -0
  346. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/local_particle_custom_api.h +0 -0
  347. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/rng_src/base_rng.h +0 -0
  348. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/rng_src/particles_rng.h +0 -0
  349. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/progress_indicator.py +0 -0
  350. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/exponential.h +0 -0
  351. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
  352. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/normal.h +0 -0
  353. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/rutherford.h +0 -0
  354. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/uniform.h +0 -0
  355. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/uniform_accurate.h +0 -0
  356. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/slicing.py +0 -0
  357. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/survey.py +0 -0
  358. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/synctime.py +0 -0
  359. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/table.py +0 -0
  360. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tapering.py +0 -0
  361. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/targets.py +0 -0
  362. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/track_flags.py +0 -0
  363. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker.py +0 -0
  364. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker_data.py +0 -0
  365. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker_src/tracker.h +0 -0
  366. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/trajectory_correction.py +0 -0
  367. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/twiss.py +0 -0
  368. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/twissplot.py +0 -0
  369. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/view.py +0 -0
  370. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/dependency_links.txt +0 -0
  371. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/entry_points.txt +0 -0
  372. {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/requires.txt +0 -0
  373. {xtrack-0.97.0 → xtrack-0.97.1}/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.97.0
3
+ Version: 0.97.1
4
4
  Summary: Tracking library for particle accelerators
5
5
  Author: G. Iadarola et al.
6
6
  License-Expression: Apache-2.0
@@ -0,0 +1,160 @@
1
+ # copyright ############################### #
2
+ # This file is part of the Xtrack Package. #
3
+ # Copyright (c) CERN, 2021. #
4
+ # ######################################### #
5
+
6
+ from . import propagate_sigma_matrix as psm
7
+ from . import boost as boost
8
+
9
+ # import transverse_efields as tef
10
+
11
+ from . import gaussian_fields as gf
12
+
13
+
14
+ import numpy as np
15
+
16
+
17
+ from scipy.constants import c as c_light
18
+
19
+
20
+ def BB6D_track(x, px, y, py, sigma, delta, q0, p0, bb6ddata, mathlib):
21
+
22
+ # print('Input px',px)
23
+
24
+ q_part = bb6ddata.q_part
25
+ parboost = bb6ddata.parboost
26
+ Sigmas_0_star = bb6ddata.Sigmas_0_star
27
+ N_slices = bb6ddata.N_slices
28
+ N_part_per_slice = bb6ddata.N_part_per_slice
29
+ x_slices_star = bb6ddata.x_slices_star
30
+ y_slices_star = bb6ddata.y_slices_star
31
+ sigma_slices_star = bb6ddata.sigma_slices_star
32
+ min_sigma_diff = bb6ddata.min_sigma_diff
33
+ threshold_singular = bb6ddata.threshold_singular
34
+
35
+ # Change reference frame
36
+ x_subCO = x - bb6ddata.x_CO - bb6ddata.delta_x
37
+ px_subCO = px - bb6ddata.px_CO
38
+ y_subCO = y - bb6ddata.y_CO - bb6ddata.delta_y
39
+ py_subCO = py - bb6ddata.py_CO
40
+ sigma_subCO = sigma - bb6ddata.sigma_CO
41
+ delta_subCO = delta - bb6ddata.delta_CO
42
+
43
+ # Boost coordinates of the weak beam
44
+ x_star, px_star, y_star, py_star, sigma_star, delta_star = boost.boost(
45
+ x_subCO,
46
+ px_subCO,
47
+ y_subCO,
48
+ py_subCO,
49
+ sigma_subCO,
50
+ delta_subCO,
51
+ parboost,
52
+ )
53
+ # ~ x_star, px_star, y_star, py_star, sigma_star, delta_star =
54
+ # (x, px, y, py, sigma, delta)
55
+ for i_slice in range(N_slices):
56
+ sigma_slice_star = sigma_slices_star[i_slice]
57
+ x_slice_star = x_slices_star[i_slice]
58
+ y_slice_star = y_slices_star[i_slice]
59
+
60
+ # Compute force scaling factor
61
+ Ksl = N_part_per_slice[i_slice] * q_part * q0 / (p0 * c_light)
62
+
63
+ # Identify the Collision Point (CP)
64
+ S = 0.5 * (sigma_star - sigma_slice_star)
65
+
66
+ # Get strong beam shape at the CP
67
+ (
68
+ Sig_11_hat_star,
69
+ Sig_33_hat_star,
70
+ costheta,
71
+ sintheta,
72
+ dS_Sig_11_hat_star,
73
+ dS_Sig_33_hat_star,
74
+ dS_costheta,
75
+ dS_sintheta,
76
+ extra_data,
77
+ ) = psm.propagate_Sigma_matrix(
78
+ Sigmas_0_star, S, threshold_singular=threshold_singular
79
+ )
80
+
81
+ # Evaluate transverse coordinates of the weake baem w.r.t.
82
+ # the strong beam centroid
83
+ x_bar_star = x_star + px_star * S - x_slice_star
84
+ y_bar_star = y_star + py_star * S - y_slice_star
85
+
86
+ # Move to the uncoupled reference frame
87
+ x_bar_hat_star = x_bar_star * costheta + y_bar_star * sintheta
88
+ y_bar_hat_star = -x_bar_star * sintheta + y_bar_star * costheta
89
+
90
+ # Compute derivatives of the transformation
91
+ dS_x_bar_hat_star = x_bar_star * dS_costheta + y_bar_star * dS_sintheta
92
+ dS_y_bar_hat_star = (
93
+ -x_bar_star * dS_sintheta + y_bar_star * dS_costheta
94
+ )
95
+
96
+ # Compute normalized field
97
+ # Ex, Ey, Gx, Gy = tef.get_Ex_Ey_Gx_Gy_gauss(
98
+ # x=x_bar_hat_star, y=y_bar_hat_star,
99
+ # sigma_x=np.sqrt(Sig_11_hat_star),
100
+ # sigma_y=np.sqrt(Sig_33_hat_star),
101
+ # min_sigma_diff = min_sigma_diff)
102
+
103
+ Ex, Ey, Gx, Gy = gf.get_Ex_Ey_Gx_Gy_gauss(
104
+ x=x_bar_hat_star,
105
+ y=y_bar_hat_star,
106
+ sigma_x=np.sqrt(Sig_11_hat_star),
107
+ sigma_y=np.sqrt(Sig_33_hat_star),
108
+ min_sigma_diff=min_sigma_diff,
109
+ skip_Gs=False,
110
+ mathlib=mathlib,
111
+ )
112
+
113
+ # Compute kicks
114
+ Fx_hat_star = Ksl * Ex
115
+ Fy_hat_star = Ksl * Ey
116
+ Gx_hat_star = Ksl * Gx
117
+ Gy_hat_star = Ksl * Gy
118
+
119
+ # Move kisks to coupled reference frame
120
+ Fx_star = Fx_hat_star * costheta - Fy_hat_star * sintheta
121
+ Fy_star = Fx_hat_star * sintheta + Fy_hat_star * costheta
122
+
123
+ # Compute longitudinal kick
124
+ Fz_star = 0.5 * (
125
+ Fx_hat_star * dS_x_bar_hat_star
126
+ + Fy_hat_star * dS_y_bar_hat_star
127
+ + Gx_hat_star * dS_Sig_11_hat_star
128
+ + Gy_hat_star * dS_Sig_33_hat_star
129
+ )
130
+
131
+ # Apply the kicks (Hirata's synchro-beam)
132
+ delta_star = (
133
+ delta_star
134
+ + Fz_star
135
+ + 0.5
136
+ * (
137
+ Fx_star * (px_star + 0.5 * Fx_star)
138
+ + Fy_star * (py_star + 0.5 * Fy_star)
139
+ )
140
+ )
141
+ x_star = x_star - S * Fx_star
142
+ px_star = px_star + Fx_star
143
+ y_star = y_star - S * Fy_star
144
+ py_star = py_star + Fy_star
145
+
146
+ # Inverse boost on the coordinates of the weak beam
147
+ x_ret, px_ret, y_ret, py_ret, sigma_ret, delta_ret = boost.inv_boost(
148
+ x_star, px_star, y_star, py_star, sigma_star, delta_star, parboost
149
+ )
150
+
151
+ # Go back to original reference frame and remove dipolar effect
152
+ x_out = x_ret + bb6ddata.x_CO + bb6ddata.delta_x - bb6ddata.Dx_sub
153
+ px_out = px_ret + bb6ddata.px_CO - bb6ddata.Dpx_sub
154
+ y_out = y_ret + bb6ddata.y_CO + bb6ddata.delta_y - bb6ddata.Dy_sub
155
+ py_out = py_ret + bb6ddata.py_CO - bb6ddata.Dpy_sub
156
+ sigma_out = sigma_ret + bb6ddata.sigma_CO - bb6ddata.Dsigma_sub
157
+ delta_out = delta_ret + bb6ddata.delta_CO - bb6ddata.Ddelta_sub
158
+
159
+ # print(x_ret, px_ret, y_ret, py_ret, sigma_ret, delta_ret)
160
+ return x_out, px_out, y_out, py_out, sigma_out, delta_out
@@ -0,0 +1,309 @@
1
+ # copyright ############################### #
2
+ # This file is part of the Xtrack Package. #
3
+ # Copyright (c) CERN, 2021. #
4
+ # ######################################### #
5
+
6
+ import numpy as np
7
+
8
+ from . import boost
9
+
10
+
11
+ class ParBoost(object):
12
+ # it is practically a struct
13
+ def __init__(self, phi, alpha):
14
+ self.sphi = np.sin(phi)
15
+ self.cphi = np.cos(phi)
16
+ self.tphi = np.tan(phi)
17
+ self.salpha = np.sin(alpha)
18
+ self.calpha = np.cos(alpha)
19
+
20
+ def tobuffer(self):
21
+ buf = [self.sphi, self.cphi, self.tphi, self.salpha, self.calpha]
22
+ return np.array(buf, dtype=np.float64)
23
+
24
+
25
+ class Sigmas(object):
26
+ def __init__(
27
+ self,
28
+ Sig_11_0,
29
+ Sig_12_0,
30
+ Sig_13_0,
31
+ Sig_14_0,
32
+ Sig_22_0,
33
+ Sig_23_0,
34
+ Sig_24_0,
35
+ Sig_33_0,
36
+ Sig_34_0,
37
+ Sig_44_0,
38
+ ):
39
+
40
+ self.Sig_11_0 = Sig_11_0
41
+ self.Sig_12_0 = Sig_12_0
42
+ self.Sig_13_0 = Sig_13_0
43
+ self.Sig_14_0 = Sig_14_0
44
+ self.Sig_22_0 = Sig_22_0
45
+ self.Sig_23_0 = Sig_23_0
46
+ self.Sig_24_0 = Sig_24_0
47
+ self.Sig_33_0 = Sig_33_0
48
+ self.Sig_34_0 = Sig_34_0
49
+ self.Sig_44_0 = Sig_44_0
50
+
51
+ def tobuffer(self):
52
+ buf = [
53
+ self.Sig_11_0,
54
+ self.Sig_12_0,
55
+ self.Sig_13_0,
56
+ self.Sig_14_0,
57
+ self.Sig_22_0,
58
+ self.Sig_23_0,
59
+ self.Sig_24_0,
60
+ self.Sig_33_0,
61
+ self.Sig_34_0,
62
+ self.Sig_44_0,
63
+ ]
64
+ return np.array(buf, dtype=np.float64)
65
+
66
+
67
+ def boost_sigmas(Sigma_0, cphi):
68
+ Sigma_0_boosted = Sigmas(
69
+ Sigma_0.Sig_11_0,
70
+ Sigma_0.Sig_12_0 / cphi,
71
+ Sigma_0.Sig_13_0,
72
+ Sigma_0.Sig_14_0 / cphi,
73
+ Sigma_0.Sig_22_0 / cphi / cphi,
74
+ Sigma_0.Sig_23_0 / cphi,
75
+ Sigma_0.Sig_24_0 / cphi / cphi,
76
+ Sigma_0.Sig_33_0,
77
+ Sigma_0.Sig_34_0 / cphi,
78
+ Sigma_0.Sig_44_0 / cphi / cphi,
79
+ )
80
+ return Sigma_0_boosted
81
+
82
+
83
+ def int_to_float64arr(val):
84
+ temp = np.zeros(1, (np.float64, {"i64": ("i8", 0)}))
85
+ temp["i64"][0] = val
86
+ return temp
87
+
88
+
89
+ class BB6D_Data(object):
90
+ def __init__(
91
+ self,
92
+ q_part,
93
+ parboost,
94
+ Sigmas_0_star,
95
+ N_slices,
96
+ N_part_per_slice,
97
+ x_slices_star,
98
+ y_slices_star,
99
+ sigma_slices_star,
100
+ min_sigma_diff,
101
+ threshold_singular,
102
+ delta_x,
103
+ delta_y,
104
+ x_CO,
105
+ px_CO,
106
+ y_CO,
107
+ py_CO,
108
+ sigma_CO,
109
+ delta_CO,
110
+ Dx_sub,
111
+ Dpx_sub,
112
+ Dy_sub,
113
+ Dpy_sub,
114
+ Dsigma_sub,
115
+ Ddelta_sub,
116
+ enabled,
117
+ ):
118
+
119
+ self.q_part = q_part
120
+ self.parboost = parboost
121
+ self.Sigmas_0_star = Sigmas_0_star
122
+ self.min_sigma_diff = min_sigma_diff
123
+ self.threshold_singular = threshold_singular
124
+ self.N_slices = N_slices
125
+ self.N_part_per_slice = N_part_per_slice
126
+ self.x_slices_star = x_slices_star
127
+ self.y_slices_star = y_slices_star
128
+ self.sigma_slices_star = sigma_slices_star
129
+
130
+ self.delta_x = delta_x
131
+ self.delta_y = delta_y
132
+ self.x_CO = x_CO
133
+ self.px_CO = px_CO
134
+ self.y_CO = y_CO
135
+ self.py_CO = py_CO
136
+ self.sigma_CO = sigma_CO
137
+ self.delta_CO = delta_CO
138
+ self.Dx_sub = Dx_sub
139
+ self.Dpx_sub = Dpx_sub
140
+ self.Dy_sub = Dy_sub
141
+ self.Dpy_sub = Dpy_sub
142
+ self.Dsigma_sub = Dsigma_sub
143
+ self.Ddelta_sub = Ddelta_sub
144
+
145
+ self.enabled = enabled
146
+
147
+ def tobuffer(self):
148
+
149
+ buffer_list = []
150
+ # Buffers corresponding to BB6D struct
151
+ buffer_list.append(np.array([self.q_part], dtype=np.float64))
152
+ buffer_list.append(self.parboost.tobuffer())
153
+ buffer_list.append(self.Sigmas_0_star.tobuffer())
154
+ buffer_list.append(np.array([self.min_sigma_diff], dtype=np.float64))
155
+ buffer_list.append(
156
+ np.array([self.threshold_singular], dtype=np.float64)
157
+ )
158
+ buffer_list.append(int_to_float64arr(self.N_slices))
159
+
160
+ buffer_list.append(np.array([self.delta_x], dtype=np.float64))
161
+ buffer_list.append(np.array([self.delta_y], dtype=np.float64))
162
+ buffer_list.append(np.array([self.x_CO], dtype=np.float64))
163
+ buffer_list.append(np.array([self.px_CO], dtype=np.float64))
164
+ buffer_list.append(np.array([self.y_CO], dtype=np.float64))
165
+ buffer_list.append(np.array([self.py_CO], dtype=np.float64))
166
+ buffer_list.append(np.array([self.sigma_CO], dtype=np.float64))
167
+ buffer_list.append(np.array([self.delta_CO], dtype=np.float64))
168
+ buffer_list.append(np.array([self.Dx_sub], dtype=np.float64))
169
+ buffer_list.append(np.array([self.Dpx_sub], dtype=np.float64))
170
+ buffer_list.append(np.array([self.Dy_sub], dtype=np.float64))
171
+ buffer_list.append(np.array([self.Dpy_sub], dtype=np.float64))
172
+ buffer_list.append(np.array([self.Dsigma_sub], dtype=np.float64))
173
+ buffer_list.append(np.array([self.Ddelta_sub], dtype=np.float64))
174
+ buffer_list.append(
175
+ int_to_float64arr({True: 1, False: 0}[self.enabled])
176
+ )
177
+
178
+ buffer_list.append(int_to_float64arr(3)) # offset to N_part_per_slice
179
+ # offset to x_slices_star
180
+ buffer_list.append(int_to_float64arr(2 + self.N_slices))
181
+ # offset to y_slices_star
182
+ buffer_list.append(int_to_float64arr(1 + 2 * self.N_slices))
183
+ # offset to sigma_slices_star
184
+ buffer_list.append(int_to_float64arr(0 + 3 * self.N_slices))
185
+
186
+ # Buffers corresponding to arrays
187
+ buffer_list.append(np.array(self.N_part_per_slice, dtype=np.float64))
188
+ buffer_list.append(np.array(self.x_slices_star, dtype=np.float64))
189
+ buffer_list.append(np.array(self.y_slices_star, dtype=np.float64))
190
+ buffer_list.append(np.array(self.sigma_slices_star, dtype=np.float64))
191
+
192
+ buf = np.concatenate(buffer_list)
193
+
194
+ return buf
195
+
196
+
197
+ def BB6D_init(
198
+ q_part,
199
+ phi,
200
+ alpha,
201
+ delta_x,
202
+ delta_y,
203
+ N_part_per_slice,
204
+ z_slices,
205
+ Sig_11_0,
206
+ Sig_12_0,
207
+ Sig_13_0,
208
+ Sig_14_0,
209
+ Sig_22_0,
210
+ Sig_23_0,
211
+ Sig_24_0,
212
+ Sig_33_0,
213
+ Sig_34_0,
214
+ Sig_44_0,
215
+ x_CO,
216
+ px_CO,
217
+ y_CO,
218
+ py_CO,
219
+ sigma_CO,
220
+ delta_CO,
221
+ min_sigma_diff,
222
+ threshold_singular,
223
+ Dx_sub,
224
+ Dpx_sub,
225
+ Dy_sub,
226
+ Dpy_sub,
227
+ Dsigma_sub,
228
+ Ddelta_sub,
229
+ enabled,
230
+ ):
231
+
232
+ assert len(N_part_per_slice) == len(z_slices)
233
+
234
+ # Prepare data for Lorentz transformation
235
+ parboost = ParBoost(phi=phi, alpha=alpha)
236
+
237
+ # Prepare data with strong beam shape
238
+ Sigmas_0 = Sigmas(
239
+ Sig_11_0,
240
+ Sig_12_0,
241
+ Sig_13_0,
242
+ Sig_14_0,
243
+ Sig_22_0,
244
+ Sig_23_0,
245
+ Sig_24_0,
246
+ Sig_33_0,
247
+ Sig_34_0,
248
+ Sig_44_0,
249
+ )
250
+
251
+ # Boost strong beam shape
252
+ Sigmas_0_star = boost_sigmas(Sigmas_0, parboost.cphi)
253
+
254
+ # Sort according to z, head at the first position in the arrays
255
+ ind_sorted = np.argsort(z_slices)[::-1]
256
+ z_slices = np.take(z_slices, ind_sorted)
257
+ N_part_per_slice = np.take(N_part_per_slice, ind_sorted)
258
+
259
+ # By boosting the strong z and all zeros, I get the transverse coordinates
260
+ # of the strong beam in the ref system of the weak
261
+ boost_vect = np.vectorize(boost.boost, excluded="parboost")
262
+ (
263
+ x_slices_star,
264
+ px_slices_star,
265
+ y_slices_star,
266
+ py_slices_star,
267
+ sigma_slices_star,
268
+ delta_slices_star,
269
+ ) = boost_vect(
270
+ x=0 * z_slices,
271
+ px=0 * z_slices,
272
+ y=0 * z_slices,
273
+ py=0 * z_slices,
274
+ sigma=z_slices,
275
+ delta=0 * z_slices,
276
+ parboost=parboost,
277
+ )
278
+
279
+ N_slices = len(z_slices)
280
+
281
+ bb6d_data = BB6D_Data(
282
+ q_part,
283
+ parboost,
284
+ Sigmas_0_star,
285
+ N_slices,
286
+ N_part_per_slice,
287
+ x_slices_star,
288
+ y_slices_star,
289
+ sigma_slices_star,
290
+ min_sigma_diff,
291
+ threshold_singular,
292
+ delta_x,
293
+ delta_y,
294
+ x_CO,
295
+ px_CO,
296
+ y_CO,
297
+ py_CO,
298
+ sigma_CO,
299
+ delta_CO,
300
+ Dx_sub,
301
+ Dpx_sub,
302
+ Dy_sub,
303
+ Dpy_sub,
304
+ Dsigma_sub,
305
+ Ddelta_sub,
306
+ enabled,
307
+ )
308
+
309
+ return bb6d_data
@@ -0,0 +1,7 @@
1
+ # copyright ############################### #
2
+ # This file is part of the Xtrack Package. #
3
+ # Copyright (c) CERN, 2021. #
4
+ # ######################################### #
5
+
6
+ from .beambeam import BeamBeam4D, BeamBeam6D
7
+ from .spacecharge import SCQGaussProfile