xtrack 0.69.3__tar.gz → 0.69.4__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.3/xtrack.egg-info → xtrack-0.69.4}/PKG-INFO +1 -1
- xtrack-0.69.4/xtrack/_version.py +1 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/environment.py +174 -81
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/line.py +87 -3
- {xtrack-0.69.3 → xtrack-0.69.4/xtrack.egg-info}/PKG-INFO +1 -1
- xtrack-0.69.3/xtrack/_version.py +0 -1
- {xtrack-0.69.3 → xtrack-0.69.4}/LICENSE +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/MANIFEST.in +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/README.md +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/base_classes.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/elements.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/line.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/particles.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/pyproject.toml +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/setup.cfg +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/setup.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_acceleration.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_apertures.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_coasting.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_collimation.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_elements.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_elements_thick.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_environment.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_footprint.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_full_rings.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_hvkick.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_ions.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_line.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_lumi.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_mad_writer.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_madloader.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_nested.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_multiline.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_multisetter.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_multispecies.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_particles_api.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_periodic_symmetric_twiss_and_match.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_pipeline.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_radial_steering.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_radiation.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_random_gen.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_rf_track.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_seeds.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_slice_elements.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_slicing.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_sps_thick.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_survey.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_tapering.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_tracker.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_twiss.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_vs_madx.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/base_element.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_elem.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/solenoid.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_drift.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thick_slice_solenoid.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_multipolar_components.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_multipole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_quadrupole.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_solenoid.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/slice_elements.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/beam_elements/slice_elements_thick.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/footprint.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/general.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/headers/checks.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/headers/constants.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/internal_record.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/json_utils.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/lumi.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/mad_loader.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/mad_writer.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/match.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/multiline/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/multiline/multiline.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/multiline/shared_knobs.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/particles/constants.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/particles/particles.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/__init__.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/slicing.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/survey.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/synctime.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/tapering.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/targets.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/tracker.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/tracker_data.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/twiss.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack/twissplot.py +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack.egg-info/SOURCES.txt +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.69.3 → xtrack-0.69.4}/xtrack.egg-info/top_level.txt +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = '0.69.4'
|
@@ -40,64 +40,39 @@ class Environment:
|
|
40
40
|
self._drift_counter = 0
|
41
41
|
self.ref = EnvRef(self)
|
42
42
|
|
43
|
-
|
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
|
-
|
49
|
-
def new_line(self, components=None, name=None):
|
50
|
-
out = xt.Line()
|
51
|
-
out.particle_ref = self.particle_ref
|
52
|
-
out.env = self
|
53
|
-
out._element_dict = self.element_dict # Avoid copying
|
54
|
-
if components is None:
|
55
|
-
components = []
|
56
|
-
|
57
|
-
for ii, nn in enumerate(components):
|
58
|
-
if (isinstance(nn, Place) and isinstance(nn.name, str)
|
59
|
-
and nn.name in self.lines):
|
60
|
-
nn.name = self.lines[nn.name]
|
61
|
-
if isinstance(nn, str) and nn in self.lines:
|
62
|
-
components[ii] = self.lines[nn]
|
63
|
-
|
64
|
-
flattened_components = _flatten_components(components)
|
65
|
-
out.element_names = handle_s_places(flattened_components, self)
|
66
|
-
out._var_management = self._var_management
|
67
|
-
out._name = name
|
68
|
-
out.builder = Builder(env=self, components=components)
|
69
|
-
|
70
|
-
# Temporary solution to keep consistency in multiline
|
71
|
-
if hasattr(self, '_in_multiline') and self._in_multiline is not None:
|
72
|
-
out._var_management = None
|
73
|
-
out._in_multiline = self._in_multiline
|
74
|
-
out._name_in_multiline = self._name_in_multiline
|
75
|
-
|
76
|
-
self._lines_weakrefs.add(out) # Weak references
|
77
|
-
if name is not None:
|
78
|
-
self.lines[name] = out
|
79
|
-
|
80
|
-
return out
|
81
|
-
|
82
|
-
def new_builder(self, components=None, name=None):
|
83
|
-
return Builder(env=self, components=components, name=name)
|
84
|
-
|
85
|
-
def _ensure_tracker_consistency(self, buffer):
|
86
|
-
for ln in self._lines_weakrefs:
|
87
|
-
if ln._has_valid_tracker() and ln._buffer is not buffer:
|
88
|
-
ln.discard_tracker()
|
89
|
-
|
90
|
-
def _get_a_drift_name(self):
|
91
|
-
self._drift_counter += 1
|
92
|
-
nn = f'drift_{self._drift_counter}'
|
93
|
-
if nn not in self.element_dict:
|
94
|
-
return nn
|
95
|
-
else:
|
96
|
-
return self._get_a_drift_name()
|
97
|
-
|
98
|
-
def new(self, name, cls, mode=None, at=None, from_=None, extra=None,
|
43
|
+
def new(self, name, parent, mode=None, at=None, from_=None, extra=None,
|
99
44
|
mirror=False, **kwargs):
|
100
45
|
|
46
|
+
'''
|
47
|
+
Create a new element or line.
|
48
|
+
|
49
|
+
Parameters
|
50
|
+
----------
|
51
|
+
name : str
|
52
|
+
Name of the new element or line
|
53
|
+
parent : str or class
|
54
|
+
Parent class or name of the parent element
|
55
|
+
mode : str, optional
|
56
|
+
- clone: clone the parent element or line.
|
57
|
+
The parent element or line is copied, together with the associated
|
58
|
+
expressions.
|
59
|
+
- replica: replicate the parent elements or lines are made.
|
60
|
+
at : float or str, optional
|
61
|
+
Position of the created object.
|
62
|
+
from_: str, optional
|
63
|
+
Name of the element from which the position is calculated (its center
|
64
|
+
is used as reference).
|
65
|
+
mirror : bool, optional
|
66
|
+
Can only be used when cloning lines. If True, the order of the elements
|
67
|
+
is reversed.
|
68
|
+
|
69
|
+
Returns
|
70
|
+
-------
|
71
|
+
str or Place
|
72
|
+
Name of the created element or line or a Place object if at or from_ is
|
73
|
+
provided.
|
74
|
+
'''
|
75
|
+
|
101
76
|
if from_ is not None or at is not None:
|
102
77
|
all_kwargs = locals()
|
103
78
|
all_kwargs.pop('self')
|
@@ -111,60 +86,60 @@ class Environment:
|
|
111
86
|
_ALLOWED_ELEMENT_TYPES_DICT = xt.line._ALLOWED_ELEMENT_TYPES_DICT
|
112
87
|
_STR_ALLOWED_ELEMENT_TYPES_IN_NEW = xt.line._STR_ALLOWED_ELEMENT_TYPES_IN_NEW
|
113
88
|
|
114
|
-
if
|
115
|
-
|
89
|
+
if parent in self.lines:
|
90
|
+
parent = self.lines[parent]
|
116
91
|
|
117
|
-
if isinstance(
|
92
|
+
if isinstance(parent, xt.Line):
|
118
93
|
assert len(kwargs) == 0, 'No kwargs allowed when creating a line'
|
119
94
|
if mode == 'replica':
|
120
95
|
assert name is not None, 'Name must be provided when replicating a line'
|
121
|
-
return
|
96
|
+
return parent.replicate(name=name, mirror=mirror)
|
122
97
|
else:
|
123
98
|
assert mode in [None, 'clone'], f'Unknown mode {mode}'
|
124
99
|
assert name is not None, 'Name must be provided when cloning a line'
|
125
|
-
return
|
100
|
+
return parent.clone(name=name, mirror=mirror)
|
126
101
|
|
127
|
-
assert mirror is False, 'mirror=True only allowed when cloning
|
102
|
+
assert mirror is False, 'mirror=True only allowed when cloning lines.'
|
128
103
|
|
129
|
-
if
|
104
|
+
if parent is xt.Line or (parent=='Line' and (
|
130
105
|
'Line' not in self.lines and 'Line' not in self.element_dict)):
|
131
106
|
assert mode is None, 'Mode not allowed when cls is Line'
|
132
107
|
return self.new_line(name=name, **kwargs)
|
133
108
|
|
134
109
|
if mode == 'replica':
|
135
|
-
assert
|
136
|
-
kwargs['parent_name'] = xo.String(
|
137
|
-
|
110
|
+
assert parent in self.element_dict, f'Element {parent} not found, cannot replicate'
|
111
|
+
kwargs['parent_name'] = xo.String(parent)
|
112
|
+
parent = xt.Replica
|
138
113
|
elif mode == 'clone':
|
139
|
-
assert
|
114
|
+
assert parent in self.element_dict, f'Element {parent} not found, cannot clone'
|
140
115
|
else:
|
141
116
|
assert mode is None, f'Unknown mode {mode}'
|
142
117
|
|
143
118
|
_eval = self._xdeps_eval.eval
|
144
119
|
|
145
|
-
assert isinstance(
|
120
|
+
assert isinstance(parent, str) or parent in _ALLOWED_ELEMENT_TYPES_IN_NEW, (
|
146
121
|
'Only '
|
147
122
|
+ _STR_ALLOWED_ELEMENT_TYPES_IN_NEW
|
148
123
|
+ ' elements are allowed in `new` for now.')
|
149
124
|
|
150
125
|
needs_instantiation = True
|
151
|
-
if isinstance(
|
152
|
-
if
|
126
|
+
if isinstance(parent, str):
|
127
|
+
if parent in self.element_dict:
|
153
128
|
# Clone an existing element
|
154
|
-
self.element_dict[name] = xt.Replica(parent_name=
|
155
|
-
|
156
|
-
|
129
|
+
self.element_dict[name] = xt.Replica(parent_name=parent)
|
130
|
+
xt.Line.replace_replica(self, name)
|
131
|
+
parent = type(self.element_dict[name])
|
157
132
|
needs_instantiation = False
|
158
|
-
elif
|
159
|
-
|
133
|
+
elif parent in _ALLOWED_ELEMENT_TYPES_DICT:
|
134
|
+
parent = _ALLOWED_ELEMENT_TYPES_DICT[parent]
|
160
135
|
needs_instantiation = True
|
161
136
|
else:
|
162
|
-
raise ValueError(f'Element type {
|
137
|
+
raise ValueError(f'Element type {parent} not found')
|
163
138
|
|
164
|
-
ref_kwargs, value_kwargs = _parse_kwargs(
|
139
|
+
ref_kwargs, value_kwargs = _parse_kwargs(parent, kwargs, _eval)
|
165
140
|
|
166
141
|
if needs_instantiation: # Parent is a class and not another element
|
167
|
-
self.element_dict[name] =
|
142
|
+
self.element_dict[name] = parent(**value_kwargs)
|
168
143
|
|
169
144
|
_set_kwargs(name=name, ref_kwargs=ref_kwargs, value_kwargs=value_kwargs,
|
170
145
|
element_dict=self.element_dict, element_refs=self.element_refs)
|
@@ -175,9 +150,128 @@ class Environment:
|
|
175
150
|
|
176
151
|
return name
|
177
152
|
|
153
|
+
def new_line(self, components=None, name=None):
|
154
|
+
|
155
|
+
'''
|
156
|
+
Create a new line.
|
157
|
+
|
158
|
+
Parameters
|
159
|
+
----------
|
160
|
+
components : list, optional
|
161
|
+
List of components to be added to the line. It can include strings,
|
162
|
+
place objects, and lines.
|
163
|
+
name : str, optional
|
164
|
+
Name of the new line.
|
165
|
+
|
166
|
+
Returns
|
167
|
+
-------
|
168
|
+
line
|
169
|
+
The new line.
|
170
|
+
|
171
|
+
Examples
|
172
|
+
--------
|
173
|
+
.. code-block:: python
|
174
|
+
|
175
|
+
env = xt.Environment()
|
176
|
+
env['a'] = 3 # Define a variable
|
177
|
+
env.new('mq1', xt.Quadrupole, length=0.3, k1='a') # Create an element
|
178
|
+
env.new('mq2', xt.Quadrupole, length=0.3, k1='-a') # Create another element
|
179
|
+
|
180
|
+
ln = env.new_line(name='myline', components=[
|
181
|
+
'mq', # Add the element 'mq' at the start of the line
|
182
|
+
env.new('mymark', xt.Marker, at=10.0), # Create a marker at s=10
|
183
|
+
env.new('mq1_clone', 'mq1', k1='2a'), # Clone 'mq1' with a different k1
|
184
|
+
env.place('mq2', at=20.0, from='mymark'), # Place 'mq2' at s=20
|
185
|
+
])
|
186
|
+
'''
|
187
|
+
|
188
|
+
out = xt.Line()
|
189
|
+
out.particle_ref = self.particle_ref
|
190
|
+
out.env = self
|
191
|
+
out._element_dict = self.element_dict # Avoid copying
|
192
|
+
if components is None:
|
193
|
+
components = []
|
194
|
+
|
195
|
+
for ii, nn in enumerate(components):
|
196
|
+
if (isinstance(nn, Place) and isinstance(nn.name, str)
|
197
|
+
and nn.name in self.lines):
|
198
|
+
nn.name = self.lines[nn.name]
|
199
|
+
if isinstance(nn, str) and nn in self.lines:
|
200
|
+
components[ii] = self.lines[nn]
|
201
|
+
|
202
|
+
flattened_components = _flatten_components(components)
|
203
|
+
out.element_names = handle_s_places(flattened_components, self)
|
204
|
+
out._var_management = self._var_management
|
205
|
+
out._name = name
|
206
|
+
out.builder = Builder(env=self, components=components)
|
207
|
+
|
208
|
+
# Temporary solution to keep consistency in multiline
|
209
|
+
if hasattr(self, '_in_multiline') and self._in_multiline is not None:
|
210
|
+
out._var_management = None
|
211
|
+
out._in_multiline = self._in_multiline
|
212
|
+
out._name_in_multiline = self._name_in_multiline
|
213
|
+
|
214
|
+
self._lines_weakrefs.add(out) # Weak references
|
215
|
+
if name is not None:
|
216
|
+
self.lines[name] = out
|
217
|
+
|
218
|
+
return out
|
219
|
+
|
178
220
|
def place(self, name, at=None, from_=None, anchor=None, from_anchor=None):
|
221
|
+
'''
|
222
|
+
Create a place object.
|
223
|
+
|
224
|
+
Parameters
|
225
|
+
----------
|
226
|
+
name : str or Line
|
227
|
+
Name of the element or line to be placed.
|
228
|
+
at : float or str, optional
|
229
|
+
Position of the created object.
|
230
|
+
from_: str, optional
|
231
|
+
Name of the element from which the position is calculated (its center
|
232
|
+
is used as reference).
|
233
|
+
|
234
|
+
Returns
|
235
|
+
-------
|
236
|
+
Place
|
237
|
+
The new place object.
|
238
|
+
'''
|
239
|
+
|
179
240
|
return Place(name, at=at, from_=from_, anchor=anchor, from_anchor=from_anchor)
|
180
241
|
|
242
|
+
def new_builder(self, components=None, name=None):
|
243
|
+
'''
|
244
|
+
Create a new builder.
|
245
|
+
|
246
|
+
Parameters
|
247
|
+
----------
|
248
|
+
components : list, optional
|
249
|
+
List of components to be added to the builder. It can include strings,
|
250
|
+
place objects, and lines.
|
251
|
+
name : str, optional
|
252
|
+
Name of the line that will be built by the builder.
|
253
|
+
|
254
|
+
Returns
|
255
|
+
-------
|
256
|
+
Builder
|
257
|
+
The new builder.
|
258
|
+
'''
|
259
|
+
|
260
|
+
return Builder(env=self, components=components, name=name)
|
261
|
+
|
262
|
+
def _ensure_tracker_consistency(self, buffer):
|
263
|
+
for ln in self._lines_weakrefs:
|
264
|
+
if ln._has_valid_tracker() and ln._buffer is not buffer:
|
265
|
+
ln.discard_tracker()
|
266
|
+
|
267
|
+
def _get_a_drift_name(self):
|
268
|
+
self._drift_counter += 1
|
269
|
+
nn = f'drift_{self._drift_counter}'
|
270
|
+
if nn not in self.element_dict:
|
271
|
+
return nn
|
272
|
+
else:
|
273
|
+
return self._get_a_drift_name()
|
274
|
+
|
181
275
|
def __setitem__(self, key, value):
|
182
276
|
|
183
277
|
if isinstance(value, xt.Line):
|
@@ -200,7 +294,6 @@ Environment.element_refs = xt.Line.element_refs
|
|
200
294
|
Environment.vars = xt.Line.vars
|
201
295
|
Environment.varval = xt.Line.varval
|
202
296
|
Environment.vv = xt.Line.vv
|
203
|
-
Environment.replace_replica = xt.Line.replace_replica
|
204
297
|
Environment.__getitem__ = xt.Line.__getitem__
|
205
298
|
Environment.set = xt.Line.set
|
206
299
|
Environment.get = xt.Line.get
|
@@ -208,7 +301,7 @@ Environment.eval = xt.Line.eval
|
|
208
301
|
Environment.info = xt.Line.info
|
209
302
|
Environment.get_expr = xt.Line.get_expr
|
210
303
|
Environment.new_expr = xt.Line.new_expr
|
211
|
-
|
304
|
+
Environment.ref_manager = xt.Line.ref_manager
|
212
305
|
|
213
306
|
class Place:
|
214
307
|
|
@@ -306,7 +399,7 @@ def _resolve_s_positions(seq_all_places, env):
|
|
306
399
|
if seq_all_places[0].at is None and not seq_all_places[0]._before:
|
307
400
|
# In case we want to allow for the length to be an expression
|
308
401
|
s_center_dct[seq_all_places[0]] = aux_tt['length', seq_all_places[0].name] / 2
|
309
|
-
|
402
|
+
s_center_dct_names[seq_all_places[0].name] = s_center_dct[seq_all_places[0]]
|
310
403
|
n_resolved += 1
|
311
404
|
|
312
405
|
while n_resolved != n_resolved_prev:
|
@@ -3412,6 +3412,9 @@ class Line:
|
|
3412
3412
|
components=list(self.element_names) + list(other.element_names))
|
3413
3413
|
return out
|
3414
3414
|
|
3415
|
+
def __sub__(self, other):
|
3416
|
+
return self + (-other)
|
3417
|
+
|
3415
3418
|
def replicate(self, name, mirror=False):
|
3416
3419
|
|
3417
3420
|
self._env_if_needed()
|
@@ -3506,6 +3509,27 @@ class Line:
|
|
3506
3509
|
return out
|
3507
3510
|
|
3508
3511
|
def set(self, name, *args, **kwargs):
|
3512
|
+
'''
|
3513
|
+
Set the values or expressions of variables or element properties.
|
3514
|
+
|
3515
|
+
Parameters
|
3516
|
+
----------
|
3517
|
+
name : str
|
3518
|
+
Name of the variable or element.
|
3519
|
+
value: float or str
|
3520
|
+
Value or expression of the variable to set. Can be provided only
|
3521
|
+
if the name is associated to a variable.
|
3522
|
+
**kwargs, float or str
|
3523
|
+
Attributes to set. Can be provided only if the name is associated
|
3524
|
+
to an element.
|
3525
|
+
|
3526
|
+
Examples
|
3527
|
+
--------
|
3528
|
+
>>> line.set('a', 0.1)
|
3529
|
+
>>> line.set('k1', '3*a')
|
3530
|
+
>>> line.set('quad', k1=0.1, k2='3*a')
|
3531
|
+
|
3532
|
+
'''
|
3509
3533
|
_eval = self._xdeps_eval.eval
|
3510
3534
|
|
3511
3535
|
if hasattr(self, 'lines') and name in self.lines:
|
@@ -3549,6 +3573,21 @@ class Line:
|
|
3549
3573
|
self.vars[name] = value
|
3550
3574
|
|
3551
3575
|
def get(self, key):
|
3576
|
+
'''
|
3577
|
+
Get an element or the value of a variable.
|
3578
|
+
|
3579
|
+
Parameters
|
3580
|
+
----------
|
3581
|
+
key : str
|
3582
|
+
Name of the element or variable.
|
3583
|
+
|
3584
|
+
Returns
|
3585
|
+
-------
|
3586
|
+
element : Element or float
|
3587
|
+
Element or value of the variable.
|
3588
|
+
|
3589
|
+
'''
|
3590
|
+
|
3552
3591
|
if key in self.element_dict:
|
3553
3592
|
return self.element_dict[key]
|
3554
3593
|
elif key in self.vars:
|
@@ -3557,6 +3596,10 @@ class Line:
|
|
3557
3596
|
raise KeyError(f'Element or variable {key} not found')
|
3558
3597
|
|
3559
3598
|
def info(self, key, limit=12):
|
3599
|
+
"""
|
3600
|
+
Get information about an element or a variable.
|
3601
|
+
"""
|
3602
|
+
|
3560
3603
|
if key in self.element_dict:
|
3561
3604
|
return self[key].get_info()
|
3562
3605
|
elif key in self.vars:
|
@@ -3573,17 +3616,58 @@ class Line:
|
|
3573
3616
|
# raise KeyError(f'Element or variable {key} not found')
|
3574
3617
|
|
3575
3618
|
@property
|
3576
|
-
def
|
3619
|
+
def ref_manager(self):
|
3577
3620
|
return self._xdeps_manager
|
3578
3621
|
|
3579
3622
|
def eval(self, expr):
|
3623
|
+
'''
|
3624
|
+
Get the value of an expression
|
3625
|
+
|
3626
|
+
Parameters
|
3627
|
+
----------
|
3628
|
+
expr : str
|
3629
|
+
Expression to evaluate.
|
3630
|
+
|
3631
|
+
Returns
|
3632
|
+
-------
|
3633
|
+
value : float
|
3634
|
+
Value of the expression.
|
3635
|
+
'''
|
3636
|
+
|
3580
3637
|
return self.vars.eval(expr)
|
3581
3638
|
|
3582
3639
|
def new_expr(self, expr):
|
3640
|
+
'''
|
3641
|
+
Create a new expression
|
3642
|
+
|
3643
|
+
Parameters
|
3644
|
+
----------
|
3645
|
+
expr : str
|
3646
|
+
Expression to create.
|
3647
|
+
|
3648
|
+
Returns
|
3649
|
+
-------
|
3650
|
+
expr : Expression
|
3651
|
+
New expression.
|
3652
|
+
'''
|
3583
3653
|
return self.vars.new_expr(expr)
|
3584
3654
|
|
3585
|
-
def get_expr(self,
|
3586
|
-
|
3655
|
+
def get_expr(self, var):
|
3656
|
+
'''
|
3657
|
+
Get expression associated to a variable
|
3658
|
+
|
3659
|
+
Parameters
|
3660
|
+
----------
|
3661
|
+
var: str
|
3662
|
+
Name of the variable
|
3663
|
+
|
3664
|
+
Returns
|
3665
|
+
-------
|
3666
|
+
expr : Expression
|
3667
|
+
Expression associated to the variable
|
3668
|
+
'''
|
3669
|
+
|
3670
|
+
return self.vars.get_expr(var)
|
3587
3671
|
|
3588
3672
|
def _env_if_needed(self):
|
3589
3673
|
if not hasattr(self, 'env') or self.env is None:
|
xtrack-0.69.3/xtrack/_version.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = '0.69.3'
|
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
|