xtrack 0.69.1__tar.gz → 0.69.3__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.69.1/xtrack.egg-info → xtrack-0.69.3}/PKG-INFO +5 -1
- {xtrack-0.69.1 → xtrack-0.69.3}/setup.py +2 -1
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_environment.py +91 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_survey.py +9 -4
- xtrack-0.69.3/xtrack/_version.py +1 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/environment.py +12 -1
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/line.py +73 -4
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/survey.py +9 -1
- {xtrack-0.69.1 → xtrack-0.69.3/xtrack.egg-info}/PKG-INFO +5 -1
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack.egg-info/requires.txt +5 -0
- xtrack-0.69.1/xtrack/_version.py +0 -1
- {xtrack-0.69.1 → xtrack-0.69.3}/LICENSE +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/MANIFEST.in +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/README.md +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/base_classes.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/elements.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/line.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/particles.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/pyproject.toml +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/setup.cfg +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_acceleration.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_apertures.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_coasting.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_collimation.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_elements.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_elements_thick.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_footprint.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_full_rings.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_hvkick.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_ions.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_line.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_lumi.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_mad_writer.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_madloader.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_nested.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_multiline.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_multisetter.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_multispecies.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_particles_api.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_pipeline.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_radial_steering.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_radiation.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_random_gen.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_rf_track.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_seeds.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_slice_elements.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_slicing.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_sps_thick.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_tapering.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_tracker.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_twiss.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_vs_madx.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/base_element.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/slice_elements.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/beam_elements/slice_elements_thick.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/footprint.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/general.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/headers/checks.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/headers/constants.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/internal_record.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/json_utils.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/lumi.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/mad_loader.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/mad_writer.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/match.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/multiline/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/multiline/multiline.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/multiline/shared_knobs.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/particles/constants.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/particles/particles.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/__init__.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/slicing.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/synctime.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/tapering.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/targets.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/tracker.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/tracker_data.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/twiss.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack/twissplot.py +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack.egg-info/SOURCES.txt +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.69.1 → xtrack-0.69.3}/xtrack.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: xtrack
|
3
|
-
Version: 0.69.
|
3
|
+
Version: 0.69.3
|
4
4
|
Summary: Tracking library for particle accelerators
|
5
5
|
Home-page: https://xsuite.readthedocs.io/
|
6
6
|
Download-URL: https://pypi.python.org/pypi/xtrack
|
@@ -22,5 +22,9 @@ Requires-Dist: nafflib; extra == "tests"
|
|
22
22
|
Requires-Dist: PyHEADTAIL; extra == "tests"
|
23
23
|
Requires-Dist: pytest; extra == "tests"
|
24
24
|
Requires-Dist: pytest-mock; extra == "tests"
|
25
|
+
Provides-Extra: notebooks
|
26
|
+
Requires-Dist: jupyter; extra == "notebooks"
|
27
|
+
Requires-Dist: ipympl; extra == "notebooks"
|
28
|
+
Requires-Dist: xplt; extra == "notebooks"
|
25
29
|
|
26
30
|
Tracking library for particle accelerators
|
@@ -1377,6 +1377,26 @@ def test_assemble_ring_repeated_elements():
|
|
1377
1377
|
tw_one_cell_stripped = tw_one_cell.rows[:-1] # remove _end_point
|
1378
1378
|
xo.assert_allclose(tw_one_cell_stripped.betx, tw_one_cell_ref.betx, atol=0, rtol=5e-4)
|
1379
1379
|
|
1380
|
+
cell_selected = arc.select(start='mid::2', end='mid::3')
|
1381
|
+
tw_cell_selected = cell_selected.twiss4d()
|
1382
|
+
tw_cell_selected_stripped = tw_cell_selected.rows[:-1] # remove _end_point
|
1383
|
+
xo.assert_allclose(tw_cell_selected_stripped.betx, tw_one_cell_ref.betx, atol=0, rtol=5e-4)
|
1384
|
+
|
1385
|
+
tt_ring2 = ring2.get_table(attr=True)
|
1386
|
+
assert tt_ring2['name', 39] == 'mq.f::1'
|
1387
|
+
assert tt_ring2['name', 48] == 'mq.f::2'
|
1388
|
+
assert ring2.element_names[39] == 'mq.f'
|
1389
|
+
assert ring2.element_names[48] == 'mq.f'
|
1390
|
+
|
1391
|
+
ring2.replace_all_repeated_elements()
|
1392
|
+
tt_ring2_after = ring2.get_table(attr=True)
|
1393
|
+
assert tt_ring2_after['name', 39] == 'mq.f.1'
|
1394
|
+
assert tt_ring2_after['name', 48] == 'mq.f.2'
|
1395
|
+
assert ring2.element_names[39] == 'mq.f.1'
|
1396
|
+
assert ring2.element_names[48] == 'mq.f.2'
|
1397
|
+
assert str(ring2.ref['mq.f.1'].k1._expr) == "vars['kqf']"
|
1398
|
+
assert str(ring2.ref['mq.f.2'].k1._expr) == "vars['kqf']"
|
1399
|
+
assert ring2.get('mq.f.1') is not ring2.get('mq.f.2')
|
1380
1400
|
|
1381
1401
|
# import matplotlib.pyplot as plt
|
1382
1402
|
# plt.close('all')
|
@@ -1762,3 +1782,74 @@ def test_select_in_multiline():
|
|
1762
1782
|
== "((-vars['acbch7.r1b1']) + vars['aaa'])")
|
1763
1783
|
assert line_sel.get('mcbch.7r1.b1').knl[0] == 1e-6
|
1764
1784
|
assert line.get('mcbch.7r1.b1').knl[0] == 1e-6
|
1785
|
+
|
1786
|
+
@pytest.mark.parametrize('container_type', ['env', 'line'])
|
1787
|
+
def test_inpection_methods(container_type):
|
1788
|
+
|
1789
|
+
env = xt.Environment()
|
1790
|
+
|
1791
|
+
env.vars({
|
1792
|
+
'k.1': 1.,
|
1793
|
+
'a': 2.,
|
1794
|
+
'b': '2 * a + k.1',
|
1795
|
+
})
|
1796
|
+
|
1797
|
+
line = env.new_line([
|
1798
|
+
env.new('bb', xt.Bend, k0='2 * b', length=3+env.vars['a'] + env.vars['b'],
|
1799
|
+
h=5., ksl=[0, '3*b']),
|
1800
|
+
])
|
1801
|
+
|
1802
|
+
ee = {'env': env, 'line': line}[container_type]
|
1803
|
+
|
1804
|
+
# Line/Env methods (get, set, eval, get_expr, new_expr, info)
|
1805
|
+
assert ee.get('b') == 2 * 2 + 1
|
1806
|
+
assert ee.get('bb') is env.element_dict['bb']
|
1807
|
+
|
1808
|
+
assert str(ee.get_expr('b')) == "((2.0 * vars['a']) + vars['k.1'])"
|
1809
|
+
|
1810
|
+
assert ee.eval('3*a - sqrt(k.1)') == 5
|
1811
|
+
|
1812
|
+
ne = ee.new_expr('sqrt(3*a + 3)')
|
1813
|
+
assert xd.refs.is_ref(ne)
|
1814
|
+
assert str(ne) == "f.sqrt(((3.0 * vars['a']) + 3.0))"
|
1815
|
+
|
1816
|
+
ee.info('bb') # Check that it works
|
1817
|
+
ee.info('b')
|
1818
|
+
ee.info('a')
|
1819
|
+
|
1820
|
+
ee.set('c', '6*a')
|
1821
|
+
assert ee.get('c') == 6 * 2
|
1822
|
+
|
1823
|
+
# Line/Env containers (env[...], env.ref[...]
|
1824
|
+
assert ee['b'] == 2 * 2 + 1
|
1825
|
+
assert type(ee['bb']).__name__ == 'View'
|
1826
|
+
assert ee['bb'].__class__.__name__ == 'Bend'
|
1827
|
+
|
1828
|
+
# Vars methods (get, set, eval, get_expr, new_expr, info, get_table)
|
1829
|
+
assert ee.vars.get('b') == 2 * 2 + 1
|
1830
|
+
|
1831
|
+
assert str(ee.vars.get_expr('b')) == "((2.0 * vars['a']) + vars['k.1'])"
|
1832
|
+
|
1833
|
+
assert ee.vars.eval('3*a - sqrt(k.1)') == 5
|
1834
|
+
|
1835
|
+
ne = ee.vars.new_expr('sqrt(3*a + 3)')
|
1836
|
+
assert xd.refs.is_ref(ne)
|
1837
|
+
assert str(ne) == "f.sqrt(((3.0 * vars['a']) + 3.0))"
|
1838
|
+
|
1839
|
+
ee.vars.info('b')
|
1840
|
+
ee.vars.info('a')
|
1841
|
+
|
1842
|
+
ee.vars.set('d', '7*a')
|
1843
|
+
assert ee.vars.get('d') == 7 * 2
|
1844
|
+
|
1845
|
+
assert xd.refs.is_ref(ee.vars['b'])
|
1846
|
+
|
1847
|
+
# View methods get_expr, get_value, get_info, get_table (for now)
|
1848
|
+
assert xd.refs.is_ref(ee['bb'].get_expr('k0'))
|
1849
|
+
assert str(ee['bb'].get_expr('k0')) == "(2.0 * vars['b'])"
|
1850
|
+
assert ee['bb'].get_expr('k0')._value == 2 * (2 * 2 + 1)
|
1851
|
+
assert ee['bb'].get_value('k0') == 2 * (2 * 2 + 1)
|
1852
|
+
|
1853
|
+
tt = ee['bb'].get_table()
|
1854
|
+
assert tt['value', 'k0'] == 2 * (2 * 2 + 1)
|
1855
|
+
assert tt['expr', 'k0'] == "(2.0 * vars['b'])"
|
@@ -12,6 +12,11 @@ tilted = True
|
|
12
12
|
orientation = 'acw'
|
13
13
|
transform_to_actual_elements = True
|
14
14
|
|
15
|
+
if hasattr(np, 'trapezoid'): # numpy >= 2.0
|
16
|
+
trapz = np.trapezoid
|
17
|
+
else:
|
18
|
+
trapz = np.trapz
|
19
|
+
|
15
20
|
@for_all_test_contexts
|
16
21
|
@pytest.mark.parametrize(
|
17
22
|
'slice_mode',
|
@@ -103,17 +108,17 @@ def test_survey_slicing(test_context, slice_mode, tilted, orientation,
|
|
103
108
|
|
104
109
|
if not tilted and orientation == 'acw':
|
105
110
|
assert_allclose(np.abs(sv.Y), 0, rtol=0, atol=1e-14)
|
106
|
-
assert_allclose(
|
111
|
+
assert_allclose(trapz(sv.X, sv.Z), -4.818 , rtol=0, # anti-clockwise
|
107
112
|
atol=(2e-3 if slice_mode is not None else 0.5))
|
108
113
|
elif not tilted and orientation == 'cw':
|
109
114
|
assert_allclose(np.abs(sv.Y), 0, rtol=0, atol=1e-14)
|
110
|
-
assert_allclose(
|
115
|
+
assert_allclose(trapz(sv.X, sv.Z), 4.818 , rtol=0, # clockwise
|
111
116
|
atol=(2e-3 if slice_mode is not None else 0.5))
|
112
117
|
elif tilted and orientation == 'acw':
|
113
118
|
assert_allclose(np.abs(sv.X), 0, rtol=0, atol=1e-14)
|
114
|
-
assert_allclose(
|
119
|
+
assert_allclose(trapz(sv.Y, sv.Z), -4.818 , rtol=0, # anti-clockwise
|
115
120
|
atol=(2e-3 if slice_mode is not None else 0.5))
|
116
121
|
elif tilted and orientation == 'cw':
|
117
122
|
assert_allclose(np.abs(sv.X), 0, rtol=0, atol=1e-14)
|
118
|
-
assert_allclose(
|
123
|
+
assert_allclose(trapz(sv.Y, sv.Z), 4.818 , rtol=0, # clockwise
|
119
124
|
atol=(2e-3 if slice_mode is not None else 0.5))
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = '0.69.3'
|
@@ -40,6 +40,12 @@ class Environment:
|
|
40
40
|
self._drift_counter = 0
|
41
41
|
self.ref = EnvRef(self)
|
42
42
|
|
43
|
+
@property
|
44
|
+
def manager(self):
|
45
|
+
if not hasattr(self, '_var_management') or self._var_management is None:
|
46
|
+
self._init_var_management()
|
47
|
+
return self._var_management['manager']
|
48
|
+
|
43
49
|
def new_line(self, components=None, name=None):
|
44
50
|
out = xt.Line()
|
45
51
|
out.particle_ref = self.particle_ref
|
@@ -198,6 +204,11 @@ Environment.replace_replica = xt.Line.replace_replica
|
|
198
204
|
Environment.__getitem__ = xt.Line.__getitem__
|
199
205
|
Environment.set = xt.Line.set
|
200
206
|
Environment.get = xt.Line.get
|
207
|
+
Environment.eval = xt.Line.eval
|
208
|
+
Environment.info = xt.Line.info
|
209
|
+
Environment.get_expr = xt.Line.get_expr
|
210
|
+
Environment.new_expr = xt.Line.new_expr
|
211
|
+
|
201
212
|
|
202
213
|
class Place:
|
203
214
|
|
@@ -356,7 +367,7 @@ def _resolve_s_positions(seq_all_places, env):
|
|
356
367
|
aux_s_center.append(ss)
|
357
368
|
aux_tt['s_center'] = np.concatenate([aux_s_center, [0]])
|
358
369
|
|
359
|
-
i_sorted = np.argsort(aux_s_center, stable
|
370
|
+
i_sorted = np.argsort(aux_s_center, kind='stable')
|
360
371
|
|
361
372
|
name_sorted = [str(aux_tt.name[ii]) for ii in i_sorted]
|
362
373
|
|
@@ -3405,7 +3405,8 @@ class Line:
|
|
3405
3405
|
|
3406
3406
|
def __add__(self, other):
|
3407
3407
|
self._env_if_needed
|
3408
|
-
assert isinstance(other, Line), 'Only Line can be added to Line'
|
3408
|
+
#assert isinstance(other, Line), 'Only Line can be added to Line'
|
3409
|
+
assert other.__class__.__name__=="Line", 'Only Line can be added to Line'
|
3409
3410
|
assert other.env is self.env, 'Lines must be in the same environment'
|
3410
3411
|
out = self.env.new_line(
|
3411
3412
|
components=list(self.element_names) + list(other.element_names))
|
@@ -3458,6 +3459,25 @@ class Line:
|
|
3458
3459
|
if isinstance(self.element_dict[nn], xt.Replica):
|
3459
3460
|
self.replace_replica(nn)
|
3460
3461
|
|
3462
|
+
def replace_all_repeated_elements(self, separator='.', mode='clone'):
|
3463
|
+
|
3464
|
+
self._env_if_needed()
|
3465
|
+
env = self.env
|
3466
|
+
|
3467
|
+
self.discard_tracker()
|
3468
|
+
unique_names = list(set(self.element_names))
|
3469
|
+
aux_dict = {nn: [] for nn in unique_names}
|
3470
|
+
for ii, nn in enumerate(self.element_names):
|
3471
|
+
aux_dict[nn].append(ii)
|
3472
|
+
|
3473
|
+
for nn in unique_names:
|
3474
|
+
if len(aux_dict[nn]) > 1:
|
3475
|
+
i_rep = 0
|
3476
|
+
for ii in aux_dict[nn]:
|
3477
|
+
while (new_name := nn + separator + str(i_rep)) in self.element_dict:
|
3478
|
+
i_rep += 1
|
3479
|
+
env.new(new_name, nn, mode=mode)
|
3480
|
+
self.element_names[ii] = new_name
|
3461
3481
|
|
3462
3482
|
def select(self, start=None, end=None, name=None):
|
3463
3483
|
|
@@ -3473,7 +3493,7 @@ class Line:
|
|
3473
3493
|
|
3474
3494
|
self._env_if_needed()
|
3475
3495
|
|
3476
|
-
out = self.env.new_line(components=list(tt.
|
3496
|
+
out = self.env.new_line(components=list(tt.env_name), name=name)
|
3477
3497
|
|
3478
3498
|
if hasattr(self, '_in_multiline') and self._in_multiline is not None:
|
3479
3499
|
out.env._var_management = None
|
@@ -3536,6 +3556,35 @@ class Line:
|
|
3536
3556
|
else:
|
3537
3557
|
raise KeyError(f'Element or variable {key} not found')
|
3538
3558
|
|
3559
|
+
def info(self, key, limit=12):
|
3560
|
+
if key in self.element_dict:
|
3561
|
+
return self[key].get_info()
|
3562
|
+
elif key in self.vars:
|
3563
|
+
return self.vars.info(key, limit=limit)
|
3564
|
+
else:
|
3565
|
+
raise KeyError(f'Element or variable {key} not found')
|
3566
|
+
|
3567
|
+
# def get_value(self, key):
|
3568
|
+
# if key in self.element_dict:
|
3569
|
+
# return self.element_dict[key].get_value()
|
3570
|
+
# elif key in self.vars:
|
3571
|
+
# return self.vars.get_value(key)
|
3572
|
+
# else:
|
3573
|
+
# raise KeyError(f'Element or variable {key} not found')
|
3574
|
+
|
3575
|
+
@property
|
3576
|
+
def manager(self):
|
3577
|
+
return self._xdeps_manager
|
3578
|
+
|
3579
|
+
def eval(self, expr):
|
3580
|
+
return self.vars.eval(expr)
|
3581
|
+
|
3582
|
+
def new_expr(self, expr):
|
3583
|
+
return self.vars.new_expr(expr)
|
3584
|
+
|
3585
|
+
def get_expr(self, vars):
|
3586
|
+
return self.vars.get_expr(vars)
|
3587
|
+
|
3539
3588
|
def _env_if_needed(self):
|
3540
3589
|
if not hasattr(self, 'env') or self.env is None:
|
3541
3590
|
self.env = xt.Environment(element_dict=self.element_dict,
|
@@ -4653,6 +4702,10 @@ class LineVars:
|
|
4653
4702
|
out = list(self.line._xdeps_vref._owner.keys()).copy()
|
4654
4703
|
return out
|
4655
4704
|
|
4705
|
+
def __iter__(self):
|
4706
|
+
raise NotImplementedError('Use keys() method') # Untested
|
4707
|
+
return self.line._xdeps_vref._owner.__iter__()
|
4708
|
+
|
4656
4709
|
def update(self, other):
|
4657
4710
|
if self.line._xdeps_vref is None:
|
4658
4711
|
raise RuntimeError(
|
@@ -4671,10 +4724,23 @@ class LineVars:
|
|
4671
4724
|
if self.line._xdeps_vref is None:
|
4672
4725
|
raise RuntimeError(
|
4673
4726
|
f'Cannot access variables as the line has no xdeps manager')
|
4674
|
-
name = np.array([kk for kk in list(self.keys()) if kk != '__vary_default'])
|
4727
|
+
name = np.array([kk for kk in list(self.keys()) if kk != '__vary_default'], dtype=object)
|
4675
4728
|
value = np.array([self.line._xdeps_vref[kk]._value for kk in name])
|
4729
|
+
expr = np.array([str(self.line._xdeps_vref[str(kk)]._expr) for kk in name])
|
4676
4730
|
|
4677
|
-
return xd.Table({'name': name, 'value': value})
|
4731
|
+
return xd.Table({'name': name, 'value': value, 'expr': expr})
|
4732
|
+
|
4733
|
+
def new_expr(self, expr):
|
4734
|
+
return self.line._xdeps_eval.eval(expr)
|
4735
|
+
|
4736
|
+
def eval(self, expr):
|
4737
|
+
return self.new_expr(expr)._get_value()
|
4738
|
+
|
4739
|
+
def info(self, var, limit=10):
|
4740
|
+
return self[var]._info(limit=limit)
|
4741
|
+
|
4742
|
+
def get_expr(self, var):
|
4743
|
+
return self[var]._expr
|
4678
4744
|
|
4679
4745
|
def __contains__(self, key):
|
4680
4746
|
if self.line._xdeps_vref is None:
|
@@ -4799,6 +4865,9 @@ class LineVars:
|
|
4799
4865
|
else:
|
4800
4866
|
self[name] = value
|
4801
4867
|
|
4868
|
+
def get(self, name):
|
4869
|
+
return self[name]._value
|
4870
|
+
|
4802
4871
|
class ActionVars(Action):
|
4803
4872
|
|
4804
4873
|
def __init__(self, line):
|
@@ -168,13 +168,21 @@ class SurveyTable(Table):
|
|
168
168
|
return out
|
169
169
|
|
170
170
|
def plot(self, element_width=None, legend=True, **kwargs):
|
171
|
+
# Shallow copy of self
|
172
|
+
out_sv_table = SurveyTable.__new__(SurveyTable)
|
173
|
+
out_sv_table.__dict__.update(self.__dict__)
|
174
|
+
out_sv_table._data = self._data.copy()
|
175
|
+
|
176
|
+
# Removing the count for repeated elements
|
177
|
+
out_sv_table.name = np.array([nn.split('::')[0] for nn in out_sv_table.name])
|
178
|
+
|
171
179
|
if element_width is None:
|
172
180
|
x_range = max(self.X) - min(self.X)
|
173
181
|
y_range = max(self.Y) - min(self.Y)
|
174
182
|
z_range = max(self.Z) - min(self.Z)
|
175
183
|
element_width = max([x_range, y_range, z_range]) * 0.03
|
176
184
|
import xplt
|
177
|
-
xplt.FloorPlot(
|
185
|
+
xplt.FloorPlot(out_sv_table, self.line, element_width=element_width, **kwargs)
|
178
186
|
if legend:
|
179
187
|
import matplotlib.pyplot as plt
|
180
188
|
plt.legend()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: xtrack
|
3
|
-
Version: 0.69.
|
3
|
+
Version: 0.69.3
|
4
4
|
Summary: Tracking library for particle accelerators
|
5
5
|
Home-page: https://xsuite.readthedocs.io/
|
6
6
|
Download-URL: https://pypi.python.org/pypi/xtrack
|
@@ -22,5 +22,9 @@ Requires-Dist: nafflib; extra == "tests"
|
|
22
22
|
Requires-Dist: PyHEADTAIL; extra == "tests"
|
23
23
|
Requires-Dist: pytest; extra == "tests"
|
24
24
|
Requires-Dist: pytest-mock; extra == "tests"
|
25
|
+
Provides-Extra: notebooks
|
26
|
+
Requires-Dist: jupyter; extra == "notebooks"
|
27
|
+
Requires-Dist: ipympl; extra == "notebooks"
|
28
|
+
Requires-Dist: xplt; extra == "notebooks"
|
25
29
|
|
26
30
|
Tracking library for particle accelerators
|
xtrack-0.69.1/xtrack/_version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = '0.69.1'
|
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
|