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