xtrack 0.86.4__tar.gz → 0.87.0__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.86.4/xtrack.egg-info → xtrack-0.87.0}/PKG-INFO +1 -1
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_elements.py +3 -3
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_elements_thick.py +79 -79
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_ions.py +1 -1
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_line.py +1 -1
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_madloader.py +2 -2
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_madnginterface.py +30 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_native_madloader.py +37 -37
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_particles_basics.py +1 -1
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_slice_and_insert_with_replicas.py +8 -4
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_twiss.py +71 -7
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_vs_madx.py +3 -3
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_xmask_orbit_correction.py +4 -4
- xtrack-0.87.0/xtrack/_version.py +1 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +2 -1
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/line.py +5 -2
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/load.py +4 -0
- xtrack-0.87.0/xtrack/mad_writer.py +644 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/madng_interface.py +66 -35
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/twiss.py +257 -36
- {xtrack-0.86.4 → xtrack-0.87.0/xtrack.egg-info}/PKG-INFO +1 -1
- xtrack-0.86.4/xtrack/_version.py +0 -1
- xtrack-0.86.4/xtrack/mad_writer.py +0 -330
- {xtrack-0.86.4 → xtrack-0.87.0}/LICENSE +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/MANIFEST.in +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/README.md +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/base_classes.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/elements.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/line.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/particles.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/pyproject.toml +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/setup.cfg +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/setup.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_acceleration.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_aperture_table.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_apertures.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_bucket_with_ref_energy_change.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_coasting.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_collimation.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_electron_cooler.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_environment.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_footprint.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_full_rings.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_h6_sps_beamline.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_hvkick.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_legacy_multiline_to_env.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_lhc_env.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_load.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_lumi.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_mad_writer.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_magnet.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_nested.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_multi_bunch_gauss.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_multiline.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_multisetter.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_multispecies.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_optimize_for_tracking.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_particles.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_particles_pdg.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_pipeline.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_radial_steering.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_radiation.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_radiation_integrals.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_random_gen.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_rbend_rbarc.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_rf_track.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_seeds.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_slice_elements.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_slicing.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_spin.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_sps_thick.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_survey.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_tapering.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_tracker.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/aperture_meas.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/base_element.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/magnet.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/marker.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/rbend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/slnd.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_cavity.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/variable_solenoid.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/magnets.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/slice_elements_edge.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/slice_elements_thick.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/beam_elements/slice_elements_thin.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/environment.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/footprint.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/general.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/checks.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/constants.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/headers/track.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/internal_record.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/json.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/lumi.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/mad_loader.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/mad_parser/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/mad_parser/loader.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/mad_parser/madx.lark +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/mad_parser/parse.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/match.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multiline.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multiline_legacy/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multiline_legacy/shared_knobs.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/constants.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/masses.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/particles.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/pdg.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/slicing.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/survey.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/svgutils/__init__.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/svgutils/parser.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/svgutils/path.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/svgutils/svgutils.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/synctime.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/tapering.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/targets.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/tracker.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/tracker_data.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack/twissplot.py +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack.egg-info/SOURCES.txt +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.86.4 → xtrack-0.87.0}/xtrack.egg-info/top_level.txt +0 -0
|
@@ -492,19 +492,19 @@ def test_exciter(test_context):
|
|
|
492
492
|
expected_px = np.array([0.1, 0.2, 0.3])
|
|
493
493
|
particles.move(_context=xo.context_default)
|
|
494
494
|
|
|
495
|
-
xo.assert_allclose(particles.px, expected_px)
|
|
495
|
+
xo.assert_allclose(particles.px, expected_px, atol=1e-14)
|
|
496
496
|
|
|
497
497
|
particles.move(_context=test_context)
|
|
498
498
|
line.track(particles, num_turns=1)
|
|
499
499
|
expected_px += np.array([0.2, 0.3, 0.1])
|
|
500
500
|
particles.move(_context=xo.context_default)
|
|
501
|
-
xo.assert_allclose(particles.px, expected_px)
|
|
501
|
+
xo.assert_allclose(particles.px, expected_px, atol=1e-14)
|
|
502
502
|
|
|
503
503
|
particles.move(_context=test_context)
|
|
504
504
|
line.track(particles, num_turns=1)
|
|
505
505
|
expected_px += np.array([0.3, 0.1, 0])
|
|
506
506
|
particles.move(_context=xo.context_default)
|
|
507
|
-
xo.assert_allclose(particles.px, expected_px)
|
|
507
|
+
xo.assert_allclose(particles.px, expected_px, atol=1e-14)
|
|
508
508
|
|
|
509
509
|
|
|
510
510
|
test_source = r"""
|
|
@@ -627,29 +627,29 @@ def test_import_thick_bend_from_madx(use_true_thick_bends, with_knobs, bend_type
|
|
|
627
627
|
assert elem.model == {False: 'mat-kick-mat', True: 'full'}[use_true_thick_bends]
|
|
628
628
|
|
|
629
629
|
# Element:
|
|
630
|
-
xo.assert_allclose(elem.length, 2.0, atol=1e-
|
|
630
|
+
xo.assert_allclose(elem.length, 2.0, atol=1e-14)
|
|
631
631
|
# The below is not strictly compatible with MAD-X, but is a corner case
|
|
632
632
|
# that hopefully will never be relevant: if k0 is governed by an expression
|
|
633
633
|
# we assume k0_from_h=False, even if its value evaluates to zero. In MAD-X
|
|
634
634
|
# k0 = h if k0 is zero, but this is not feasible to implement in Xtrack now.
|
|
635
|
-
xo.assert_allclose(elem.k0, 0 if with_knobs else 0.05, atol=1e-
|
|
636
|
-
xo.assert_allclose(elem.h, 0.05, atol=1e-
|
|
637
|
-
xo.assert_allclose(elem.ksl, 0.0, atol=1e-
|
|
635
|
+
xo.assert_allclose(elem.k0, 0 if with_knobs else 0.05, atol=1e-14)
|
|
636
|
+
xo.assert_allclose(elem.h, 0.05, atol=1e-14) # h = angle / L
|
|
637
|
+
xo.assert_allclose(elem.ksl, 0.0, atol=1e-14)
|
|
638
638
|
|
|
639
639
|
xo.assert_allclose(
|
|
640
640
|
elem.knl,
|
|
641
641
|
np.array([0, 0, 0.8, 0, 0, 0]), # knl = [0, 0, k2 * L, 0, 0]
|
|
642
|
-
atol=1e-
|
|
642
|
+
atol=1e-14,
|
|
643
643
|
)
|
|
644
644
|
|
|
645
645
|
# Edges:
|
|
646
|
-
xo.assert_allclose(elem.edge_entry_fint, 0.5, atol=1e-
|
|
647
|
-
xo.assert_allclose(elem.edge_entry_hgap, 0.6, atol=1e-
|
|
648
|
-
xo.assert_allclose(elem.edge_entry_angle, 0.7, atol=1e-
|
|
646
|
+
xo.assert_allclose(elem.edge_entry_fint, 0.5, atol=1e-14)
|
|
647
|
+
xo.assert_allclose(elem.edge_entry_hgap, 0.6, atol=1e-14)
|
|
648
|
+
xo.assert_allclose(elem.edge_entry_angle, 0.7, atol=1e-14)
|
|
649
649
|
|
|
650
|
-
xo.assert_allclose(elem.edge_exit_fint, 0.5, atol=1e-
|
|
651
|
-
xo.assert_allclose(elem.edge_exit_hgap, 0.6, atol=1e-
|
|
652
|
-
xo.assert_allclose(elem.edge_exit_angle, 0.8, atol=1e-
|
|
650
|
+
xo.assert_allclose(elem.edge_exit_fint, 0.5, atol=1e-14)
|
|
651
|
+
xo.assert_allclose(elem.edge_exit_hgap, 0.6, atol=1e-14)
|
|
652
|
+
xo.assert_allclose(elem.edge_exit_angle, 0.8, atol=1e-14)
|
|
653
653
|
|
|
654
654
|
# Finish the test here if we are not using knobs
|
|
655
655
|
if not with_knobs:
|
|
@@ -665,26 +665,26 @@ def test_import_thick_bend_from_madx(use_true_thick_bends, with_knobs, bend_type
|
|
|
665
665
|
|
|
666
666
|
# Verify that the line has been adjusted correctly
|
|
667
667
|
# Element:
|
|
668
|
-
xo.assert_allclose(elem.length, 3.0, atol=1e-
|
|
669
|
-
xo.assert_allclose(elem.k0, 0.4, atol=1e-
|
|
670
|
-
xo.assert_allclose(elem.h, 0.2 / 3.0, atol=1e-
|
|
671
|
-
xo.assert_allclose(elem.ksl, 0.0, atol=1e-
|
|
668
|
+
xo.assert_allclose(elem.length, 3.0, atol=1e-14)
|
|
669
|
+
xo.assert_allclose(elem.k0, 0.4, atol=1e-14)
|
|
670
|
+
xo.assert_allclose(elem.h, 0.2 / 3.0, atol=1e-14) # h = angle / length
|
|
671
|
+
xo.assert_allclose(elem.ksl, 0.0, atol=1e-14)
|
|
672
672
|
|
|
673
673
|
xo.assert_allclose(
|
|
674
674
|
elem.knl,
|
|
675
675
|
np.array([0, 0, 2.4, 0, 0, 0]), # knl = [0, 0, k2 * L, 0, 0]
|
|
676
|
-
atol=1e-
|
|
676
|
+
atol=1e-14,
|
|
677
677
|
)
|
|
678
678
|
|
|
679
679
|
# Edges:
|
|
680
|
-
xo.assert_allclose(elem.edge_entry_fint, 1.0, atol=1e-
|
|
681
|
-
xo.assert_allclose(elem.edge_entry_hgap, 1.2, atol=1e-
|
|
682
|
-
xo.assert_allclose(elem.edge_entry_angle, 1.4, atol=1e-
|
|
683
|
-
xo.assert_allclose(elem.k0, 0.4, atol=1e-
|
|
680
|
+
xo.assert_allclose(elem.edge_entry_fint, 1.0, atol=1e-14)
|
|
681
|
+
xo.assert_allclose(elem.edge_entry_hgap, 1.2, atol=1e-14)
|
|
682
|
+
xo.assert_allclose(elem.edge_entry_angle, 1.4, atol=1e-14)
|
|
683
|
+
xo.assert_allclose(elem.k0, 0.4, atol=1e-14)
|
|
684
684
|
|
|
685
|
-
xo.assert_allclose(elem.edge_exit_fint, 1.0, atol=1e-
|
|
686
|
-
xo.assert_allclose(elem.edge_exit_hgap, 1.2, atol=1e-
|
|
687
|
-
xo.assert_allclose(elem.edge_exit_angle, 1.6, atol=1e-
|
|
685
|
+
xo.assert_allclose(elem.edge_exit_fint, 1.0, atol=1e-14)
|
|
686
|
+
xo.assert_allclose(elem.edge_exit_hgap, 1.2, atol=1e-14)
|
|
687
|
+
xo.assert_allclose(elem.edge_exit_angle, 1.6, atol=1e-14)
|
|
688
688
|
|
|
689
689
|
|
|
690
690
|
@pytest.mark.parametrize('with_knobs', [False, True])
|
|
@@ -710,9 +710,9 @@ def test_import_thick_quad_from_madx(with_knobs):
|
|
|
710
710
|
elem = line['elem']
|
|
711
711
|
|
|
712
712
|
# Verify that the line has been imported correctly
|
|
713
|
-
xo.assert_allclose(elem.length, 2.0, atol=1e-
|
|
714
|
-
xo.assert_allclose(elem.k1, 0.1, atol=1e-
|
|
715
|
-
xo.assert_allclose(elem.k1s, 0.2, atol=1e-
|
|
713
|
+
xo.assert_allclose(elem.length, 2.0, atol=1e-14)
|
|
714
|
+
xo.assert_allclose(elem.k1, 0.1, atol=1e-14)
|
|
715
|
+
xo.assert_allclose(elem.k1s, 0.2, atol=1e-14)
|
|
716
716
|
|
|
717
717
|
# Finish the test here if we are not using knobs
|
|
718
718
|
if not with_knobs:
|
|
@@ -726,9 +726,9 @@ def test_import_thick_quad_from_madx(with_knobs):
|
|
|
726
726
|
line.vars['knob_b'] = 3.0
|
|
727
727
|
|
|
728
728
|
# Verify that the line has been adjusted correctly
|
|
729
|
-
xo.assert_allclose(elem.length, 3.0, atol=1e-
|
|
730
|
-
xo.assert_allclose(elem.k1, 1.1, atol=1e-
|
|
731
|
-
xo.assert_allclose(elem.k1s, 1.2, atol=1e-
|
|
729
|
+
xo.assert_allclose(elem.length, 3.0, atol=1e-14)
|
|
730
|
+
xo.assert_allclose(elem.k1, 1.1, atol=1e-14)
|
|
731
|
+
xo.assert_allclose(elem.k1s, 1.2, atol=1e-14)
|
|
732
732
|
|
|
733
733
|
|
|
734
734
|
@pytest.mark.parametrize(
|
|
@@ -776,16 +776,16 @@ def test_import_thick_bend_from_madx_and_slice(
|
|
|
776
776
|
'sbend': xt.ThinSliceBend,
|
|
777
777
|
}[bend_type]
|
|
778
778
|
assert isinstance(elem, slice_class)
|
|
779
|
-
xo.assert_allclose(elem.weight, 0.5, atol=1e-
|
|
780
|
-
xo.assert_allclose(elem._parent.length, 2.0, atol=1e-
|
|
781
|
-
xo.assert_allclose(elem._parent.k0, 0.2, atol=1e-
|
|
782
|
-
xo.assert_allclose(elem._parent.knl, [0., 0, 0.8, 0, 0, 0], atol=1e-
|
|
783
|
-
xo.assert_allclose(elem._parent.ksl, 0, atol=1e-
|
|
784
|
-
xo.assert_allclose(elem._parent.h, 0.05, atol=1e-
|
|
779
|
+
xo.assert_allclose(elem.weight, 0.5, atol=1e-14)
|
|
780
|
+
xo.assert_allclose(elem._parent.length, 2.0, atol=1e-14)
|
|
781
|
+
xo.assert_allclose(elem._parent.k0, 0.2, atol=1e-14)
|
|
782
|
+
xo.assert_allclose(elem._parent.knl, [0., 0, 0.8, 0, 0, 0], atol=1e-14)
|
|
783
|
+
xo.assert_allclose(elem._parent.ksl, 0, atol=1e-14)
|
|
784
|
+
xo.assert_allclose(elem._parent.h, 0.05, atol=1e-14)
|
|
785
785
|
|
|
786
786
|
for drift in drifts:
|
|
787
|
-
xo.assert_allclose(drift._parent.length, 2., atol=1e-
|
|
788
|
-
xo.assert_allclose(drift.weight, 1./3., atol=1e-
|
|
787
|
+
xo.assert_allclose(drift._parent.length, 2., atol=1e-14)
|
|
788
|
+
xo.assert_allclose(drift.weight, 1./3., atol=1e-14)
|
|
789
789
|
|
|
790
790
|
# Finish the test here if we are not using knobs
|
|
791
791
|
if not with_knobs:
|
|
@@ -800,26 +800,26 @@ def test_import_thick_bend_from_madx_and_slice(
|
|
|
800
800
|
|
|
801
801
|
# Verify that the line has been adjusted correctly
|
|
802
802
|
for elem in elems:
|
|
803
|
-
xo.assert_allclose(elem.weight, 0.5, atol=1e-
|
|
804
|
-
xo.assert_allclose(elem._parent.length, 3.0, atol=1e-
|
|
805
|
-
xo.assert_allclose(elem._parent.k0, 0.4, atol=1e-
|
|
806
|
-
xo.assert_allclose(elem._parent.knl, [0., 0, 2.4, 0, 0, 0], atol=1e-
|
|
807
|
-
xo.assert_allclose(elem._parent.ksl, 0, atol=1e-
|
|
808
|
-
xo.assert_allclose(elem._parent.h, 0.2/3, atol=1e-
|
|
809
|
-
|
|
810
|
-
xo.assert_allclose(elem._xobject.weight, 0.5, atol=1e-
|
|
811
|
-
xo.assert_allclose(elem._xobject._parent.length, 3.0, atol=1e-
|
|
812
|
-
xo.assert_allclose(elem._xobject._parent.k0, 0.4, atol=1e-
|
|
813
|
-
xo.assert_allclose(elem._xobject._parent.knl, [0., 0, 2.4, 0, 0, 0], atol=1e-
|
|
814
|
-
xo.assert_allclose(elem._xobject._parent.ksl, 0, atol=1e-
|
|
815
|
-
xo.assert_allclose(elem._xobject._parent.h, 0.2/3, atol=1e-
|
|
803
|
+
xo.assert_allclose(elem.weight, 0.5, atol=1e-14)
|
|
804
|
+
xo.assert_allclose(elem._parent.length, 3.0, atol=1e-14)
|
|
805
|
+
xo.assert_allclose(elem._parent.k0, 0.4, atol=1e-14)
|
|
806
|
+
xo.assert_allclose(elem._parent.knl, [0., 0, 2.4, 0, 0, 0], atol=1e-14)
|
|
807
|
+
xo.assert_allclose(elem._parent.ksl, 0, atol=1e-14)
|
|
808
|
+
xo.assert_allclose(elem._parent.h, 0.2/3, atol=1e-14)
|
|
809
|
+
|
|
810
|
+
xo.assert_allclose(elem._xobject.weight, 0.5, atol=1e-14)
|
|
811
|
+
xo.assert_allclose(elem._xobject._parent.length, 3.0, atol=1e-14)
|
|
812
|
+
xo.assert_allclose(elem._xobject._parent.k0, 0.4, atol=1e-14)
|
|
813
|
+
xo.assert_allclose(elem._xobject._parent.knl, [0., 0, 2.4, 0, 0, 0], atol=1e-14)
|
|
814
|
+
xo.assert_allclose(elem._xobject._parent.ksl, 0, atol=1e-14)
|
|
815
|
+
xo.assert_allclose(elem._xobject._parent.h, 0.2/3, atol=1e-14)
|
|
816
816
|
|
|
817
817
|
assert elem._parent._buffer is line._buffer
|
|
818
818
|
assert elem._xobject._parent._buffer is line._buffer
|
|
819
819
|
|
|
820
820
|
for drift in drifts:
|
|
821
|
-
xo.assert_allclose(drift._parent.length, 3, atol=1e-
|
|
822
|
-
xo.assert_allclose(drift.weight, 1./3., atol=1e-
|
|
821
|
+
xo.assert_allclose(drift._parent.length, 3, atol=1e-14)
|
|
822
|
+
xo.assert_allclose(drift.weight, 1./3., atol=1e-14)
|
|
823
823
|
|
|
824
824
|
assert drift._parent._buffer is line._buffer
|
|
825
825
|
assert drift._xobject._parent._buffer is line._buffer
|
|
@@ -856,14 +856,14 @@ def test_import_thick_quad_from_madx_and_slice(with_knobs):
|
|
|
856
856
|
|
|
857
857
|
# Verify that the slices are correct
|
|
858
858
|
for elem in elems:
|
|
859
|
-
xo.assert_allclose(elem.weight, 0.5, atol=1e-
|
|
860
|
-
xo.assert_allclose(elem._parent.length, 2.0, atol=1e-
|
|
861
|
-
xo.assert_allclose(elem._parent.k1, 0.1, atol=1e-
|
|
862
|
-
xo.assert_allclose(elem._parent.k1s, 0.2, atol=1e-
|
|
859
|
+
xo.assert_allclose(elem.weight, 0.5, atol=1e-14)
|
|
860
|
+
xo.assert_allclose(elem._parent.length, 2.0, atol=1e-14)
|
|
861
|
+
xo.assert_allclose(elem._parent.k1, 0.1, atol=1e-14)
|
|
862
|
+
xo.assert_allclose(elem._parent.k1s, 0.2, atol=1e-14)
|
|
863
863
|
|
|
864
864
|
for drift in drifts:
|
|
865
|
-
xo.assert_allclose(drift._parent.length, 2., atol=1e-
|
|
866
|
-
xo.assert_allclose(drift.weight, 1./3., atol=1e-
|
|
865
|
+
xo.assert_allclose(drift._parent.length, 2., atol=1e-14)
|
|
866
|
+
xo.assert_allclose(drift.weight, 1./3., atol=1e-14)
|
|
867
867
|
|
|
868
868
|
# Finish the test here if we are not using knobs
|
|
869
869
|
if not with_knobs:
|
|
@@ -878,25 +878,25 @@ def test_import_thick_quad_from_madx_and_slice(with_knobs):
|
|
|
878
878
|
|
|
879
879
|
# Verify that the line has been adjusted correctly
|
|
880
880
|
for elem in elems:
|
|
881
|
-
xo.assert_allclose(elem.weight, 0.5, atol=1e-
|
|
882
|
-
xo.assert_allclose(elem._parent.length, 3.0, atol=1e-
|
|
883
|
-
xo.assert_allclose(elem._parent.k1, 2.1, atol=1e-
|
|
884
|
-
xo.assert_allclose(elem._parent.k1s, 2.2, atol=1e-
|
|
881
|
+
xo.assert_allclose(elem.weight, 0.5, atol=1e-14)
|
|
882
|
+
xo.assert_allclose(elem._parent.length, 3.0, atol=1e-14)
|
|
883
|
+
xo.assert_allclose(elem._parent.k1, 2.1, atol=1e-14)
|
|
884
|
+
xo.assert_allclose(elem._parent.k1s, 2.2, atol=1e-14)
|
|
885
885
|
|
|
886
|
-
xo.assert_allclose(elem._xobject.weight, 0.5, atol=1e-
|
|
887
|
-
xo.assert_allclose(elem._xobject._parent.length, 3.0, atol=1e-
|
|
888
|
-
xo.assert_allclose(elem._xobject._parent.k1, 2.1, atol=1e-
|
|
889
|
-
xo.assert_allclose(elem._xobject._parent.k1s, 2.2, atol=1e-
|
|
886
|
+
xo.assert_allclose(elem._xobject.weight, 0.5, atol=1e-14)
|
|
887
|
+
xo.assert_allclose(elem._xobject._parent.length, 3.0, atol=1e-14)
|
|
888
|
+
xo.assert_allclose(elem._xobject._parent.k1, 2.1, atol=1e-14)
|
|
889
|
+
xo.assert_allclose(elem._xobject._parent.k1s, 2.2, atol=1e-14)
|
|
890
890
|
|
|
891
891
|
assert elem._parent._buffer is line._buffer
|
|
892
892
|
assert elem._xobject._parent._buffer is line._buffer
|
|
893
893
|
|
|
894
894
|
for drift in drifts:
|
|
895
|
-
xo.assert_allclose(drift._parent.length, 3., atol=1e-
|
|
896
|
-
xo.assert_allclose(drift.weight, 1./3., atol=1e-
|
|
895
|
+
xo.assert_allclose(drift._parent.length, 3., atol=1e-14)
|
|
896
|
+
xo.assert_allclose(drift.weight, 1./3., atol=1e-14)
|
|
897
897
|
|
|
898
|
-
xo.assert_allclose(drift._xobject._parent.length, 3., atol=1e-
|
|
899
|
-
xo.assert_allclose(drift._xobject.weight, 1./3., atol=1e-
|
|
898
|
+
xo.assert_allclose(drift._xobject._parent.length, 3., atol=1e-14)
|
|
899
|
+
xo.assert_allclose(drift._xobject.weight, 1./3., atol=1e-14)
|
|
900
900
|
|
|
901
901
|
assert drift._parent._buffer is line._buffer
|
|
902
902
|
assert drift._xobject._parent._buffer is line._buffer
|
|
@@ -1064,7 +1064,7 @@ def test_import_thick_with_apertures_and_slice():
|
|
|
1064
1064
|
|
|
1065
1065
|
|
|
1066
1066
|
def _assert_eq(a, b):
|
|
1067
|
-
xo.assert_allclose(a, b, atol=1e-
|
|
1067
|
+
xo.assert_allclose(a, b, atol=1e-14)
|
|
1068
1068
|
|
|
1069
1069
|
_assert_eq(line[f'elm_aper'].rot_s_rad, 0.1)
|
|
1070
1070
|
_assert_eq(line[f'elm_aper'].shift_x, 0.2)
|
|
@@ -1492,12 +1492,12 @@ def test_solenoid_shifted_and_rotated_multipolar_kick(test_context):
|
|
|
1492
1492
|
line_test.track(p_test)
|
|
1493
1493
|
line_ref.track(p_ref)
|
|
1494
1494
|
|
|
1495
|
-
xo.assert_allclose(p_test.x, p_ref.x, rtol=0, atol=1e-
|
|
1496
|
-
xo.assert_allclose(p_test.px, p_ref.px, rtol=0, atol=1e-
|
|
1497
|
-
xo.assert_allclose(p_test.y, p_ref.y, rtol=0, atol=1e-
|
|
1498
|
-
xo.assert_allclose(p_test.py, p_ref.py, rtol=0, atol=1e-
|
|
1499
|
-
xo.assert_allclose(p_test.zeta, p_ref.zeta, rtol=0, atol=1e-
|
|
1500
|
-
xo.assert_allclose(p_test.delta, p_ref.delta, rtol=0, atol=1e-
|
|
1495
|
+
xo.assert_allclose(p_test.x, p_ref.x, rtol=0, atol=1e-14)
|
|
1496
|
+
xo.assert_allclose(p_test.px, p_ref.px, rtol=0, atol=1e-14)
|
|
1497
|
+
xo.assert_allclose(p_test.y, p_ref.y, rtol=0, atol=1e-14)
|
|
1498
|
+
xo.assert_allclose(p_test.py, p_ref.py, rtol=0, atol=1e-14)
|
|
1499
|
+
xo.assert_allclose(p_test.zeta, p_ref.zeta, rtol=0, atol=1e-14)
|
|
1500
|
+
xo.assert_allclose(p_test.delta, p_ref.delta, rtol=0, atol=1e-14)
|
|
1501
1501
|
|
|
1502
1502
|
|
|
1503
1503
|
@pytest.mark.parametrize('shift_x', (0, 1e-3))
|
|
@@ -1589,8 +1589,8 @@ def test_solenoid_multipole_shifts(shift_x, shift_y, test_element_name):
|
|
|
1589
1589
|
########################################
|
|
1590
1590
|
# Assertions
|
|
1591
1591
|
########################################
|
|
1592
|
-
xo.assert_allclose(tw.x[-1], tw_sol.x[-1], rtol=
|
|
1593
|
-
xo.assert_allclose(tw.y[-1], tw_sol.y[-1], rtol=
|
|
1592
|
+
xo.assert_allclose(tw.x[-1], tw_sol.x[-1], rtol=2e-6, atol=1e-12)
|
|
1593
|
+
xo.assert_allclose(tw.y[-1], tw_sol.y[-1], rtol=2e-6, atol=1e-12)
|
|
1594
1594
|
|
|
1595
1595
|
|
|
1596
1596
|
def test_solenoid_multipole_rotations():
|
|
@@ -88,7 +88,7 @@ def test_ions(test_context):
|
|
|
88
88
|
q0=mad.sequence.sps.beam.charge,
|
|
89
89
|
gamma0=mad.sequence.sps.beam.gamma)
|
|
90
90
|
|
|
91
|
-
xo.assert_allclose(line['actcse.31632'].voltage, V_RF, atol=1e-10)
|
|
91
|
+
xo.assert_allclose(line['actcse.31632'].voltage, V_RF, atol=1e-10, rtol=1e-15)
|
|
92
92
|
|
|
93
93
|
line.build_tracker()
|
|
94
94
|
|
|
@@ -994,7 +994,7 @@ def test_elements_intersecting_s():
|
|
|
994
994
|
}
|
|
995
995
|
result = line._elements_intersecting_s(cuts)
|
|
996
996
|
for kk in expected.keys() | result.keys():
|
|
997
|
-
xo.assert_allclose(expected[kk], result[kk], atol=1e-
|
|
997
|
+
xo.assert_allclose(expected[kk], result[kk], atol=1e-14)
|
|
998
998
|
|
|
999
999
|
|
|
1000
1000
|
def test_slicing_at_custom_s():
|
|
@@ -664,8 +664,8 @@ def test_mad_elements_import():
|
|
|
664
664
|
x_1, x_2, y_1, y_2 = 3, 2 * np.sqrt(3), np.sqrt(3), 6
|
|
665
665
|
expected_x_vertices = [x_1, x_2, -x_2, -x_1, -x_1, -x_2, x_2, x_1]
|
|
666
666
|
expected_y_vertices = [y_1, y_2, y_2, y_1, -y_1, -y_2, -y_2, -y_1]
|
|
667
|
-
xo.assert_allclose(line['oct_aper'].x_vertices, expected_x_vertices)
|
|
668
|
-
xo.assert_allclose(line['oct_aper'].y_vertices, expected_y_vertices)
|
|
667
|
+
xo.assert_allclose(line['oct_aper'].x_vertices, expected_x_vertices, atol=1e-14)
|
|
668
|
+
xo.assert_allclose(line['oct_aper'].y_vertices, expected_y_vertices, atol=1e-14)
|
|
669
669
|
|
|
670
670
|
|
|
671
671
|
def test_selective_expr_import_and_replace_in_expr():
|
|
@@ -97,3 +97,33 @@ def test_madng_interface_with_multipole_errors_and_misalignments():
|
|
|
97
97
|
xo.assert_allclose(tw.ay_chrom, tw.ay_ng, atol=5e-3*tw.wy_chrom.max(), rtol=0)
|
|
98
98
|
xo.assert_allclose(tw.bx_chrom, tw.bx_ng, atol=5e-3*tw.wx_chrom.max(), rtol=0)
|
|
99
99
|
xo.assert_allclose(tw.by_chrom, tw.by_ng, atol=5e-3*tw.wy_chrom.max(), rtol=0)
|
|
100
|
+
|
|
101
|
+
def test_madng_survey():
|
|
102
|
+
line = xt.Line.from_json(test_data_folder /
|
|
103
|
+
'hllhc15_thick/lhc_thick_with_knobs.json')
|
|
104
|
+
survey = line.madng_survey()
|
|
105
|
+
|
|
106
|
+
# Check that columns exist:
|
|
107
|
+
SURVEY_COLS = ['X', 'Y', 'Z', 'theta', 'phi', 'psi', 'name', 's', 'length', 'slc',
|
|
108
|
+
'turn', 'tdir', 'eidx', 'ename', 'element_type', 'angle', 'tilt']
|
|
109
|
+
assert isinstance(survey, xt.survey.SurveyTable)
|
|
110
|
+
assert len(survey.cols) == len(SURVEY_COLS)
|
|
111
|
+
for col in SURVEY_COLS:
|
|
112
|
+
assert col in survey.cols, f"Column '{col}' not found in survey"
|
|
113
|
+
|
|
114
|
+
# Compare MAD-NG survey with Xsuite survey
|
|
115
|
+
xsurvey = line.survey()
|
|
116
|
+
|
|
117
|
+
assert len(survey) == len(xsurvey), "Length of MAD-NG survey and Xsuite survey do not match"
|
|
118
|
+
|
|
119
|
+
xo.assert_allclose(survey.X, xsurvey.X, atol=1e-5, rtol=0)
|
|
120
|
+
xo.assert_allclose(survey.Y, xsurvey.Y, atol=1e-5, rtol=0)
|
|
121
|
+
xo.assert_allclose(survey.Z, xsurvey.Z, atol=1e-5, rtol=0)
|
|
122
|
+
xo.assert_allclose(survey.theta, xsurvey.theta, atol=1e-5, rtol=0)
|
|
123
|
+
xo.assert_allclose(survey.phi, xsurvey.phi, atol=1e-5, rtol=0)
|
|
124
|
+
xo.assert_allclose(survey.psi, xsurvey.psi, atol=1e-5, rtol=0)
|
|
125
|
+
xo.assert_allclose(survey.s, xsurvey.s, atol=1e-5, rtol=0)
|
|
126
|
+
xo.assert_allclose(survey.angle, xsurvey.angle, atol=1e-5, rtol=0)
|
|
127
|
+
xo.assert_allclose(survey.tilt, xsurvey.tilt, atol=1e-5, rtol=0)
|
|
128
|
+
# Length doesn't work because of multipoles.
|
|
129
|
+
#xo.assert_allclose(survey.length, xsurvey.length, atol=1e-5, rtol=0)
|