xtrack 0.98.12__tar.gz → 0.98.14__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.98.12/xtrack.egg-info → xtrack-0.98.14}/PKG-INFO +1 -1
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_coupling_edwards_teng.py +14 -15
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_quadrupole_fringe_ptc.py +7 -7
- xtrack-0.98.14/xtrack/_version.py +1 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/twiss.py +251 -83
- {xtrack-0.98.12 → xtrack-0.98.14/xtrack.egg-info}/PKG-INFO +1 -1
- xtrack-0.98.12/xtrack/_version.py +0 -1
- {xtrack-0.98.12 → xtrack-0.98.14}/LICENSE +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/MANIFEST.in +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/README.md +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/base_classes.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/BB6D.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/BB6Ddata.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/beambeam.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/boost.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/gaussian_fields.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/propagate_sigma_matrix.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/qgauss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/slicing.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/be_beamfields/spacecharge.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/elements.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/line.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/particles.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/pyproject.toml +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/setup.cfg +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/setup.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acceleration.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acdipole.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_acdipole_twiss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_polygon.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_table.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_apertures.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_boris_spatial.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_bucket_with_ref_energy_change.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_cavity_harmonic.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_coasting.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_collimation.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_electron_cooler.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_elements_thick.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_environment.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_footprint.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_full_rings.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_h6_sps_beamline.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_hvkick.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ions.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_json.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lhc_env.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_line.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_load.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_load_vars.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_lumi.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_mad_writer.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_madloader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_madnginterface.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_magnet.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_nested.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_misalign.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multi_bunch_gauss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multiline.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multisetter.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_multispecies.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_lhc.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_lhc_thin.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_ps.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_sps.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_native_madloader_ti2.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_optimize_for_tracking.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles_basics.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_particles_pdg.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_pipeline.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_quadrupole_wedge.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radial_steering.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_radiation_integrals.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rbend_straight_body.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rf_track.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_seeds.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slice_elements.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_slicing.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_spin.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_sps_thick_cpymad_loader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_sps_thick_native_loader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_survey.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tapering.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_thick_kickers_rf_crab.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_tracker.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss_to_file.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_vs_madx.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/gen_madx_optics_file.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/lhc_match.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/lhc_match/var_limits.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/python_lattice_writer/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/_temp/python_lattice_writer/lattice_py_generation.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/aperture_meas.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/base_element.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/acdipole.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/beam_interaction.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/_generate_slice_elements_c_code.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/_include_integrator.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/acdipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/crab_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_exact.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_exact_slice.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_crab_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_multipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/marker.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/misalignment.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/rbend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/slnd.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_crab_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_multipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_crab_cavity.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_multipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_acdipole.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet.template.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_configure.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_misalignments.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_rf.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_rf.template.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_xyshift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/variable_solenoid.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/exciter.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/rft_element.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_base.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_drift.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_edge.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_thick.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/beam_elements/slice_elements_thin.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/boris.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/builder.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/environment.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/footprint.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/functions.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/general.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/checks.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/constants.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/track.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/headers/track_local_particle_with_transformations.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/internal_record.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/json.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/line.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/load.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/loss_location_refinement/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/loss_location_refinement/loss_location_refinement.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/lumi.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_loader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/loader.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/madx.lark +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_parser/parse.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/mad_writer.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/madng_interface.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/match.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_position_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_profile_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/beam_size_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/last_turns_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/monitors/particles_monitor.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/multiline_legacy.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multiline_legacy/shared_knobs.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/multisetter.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/multisetter/multisetter.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/constants.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/local_particle_custom_api.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/masses.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/particles.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/pdg.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/core.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/manager.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/pipeline/multitracker.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/element_inits.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/prebuilt_kernel_definitions/element_types.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_generators.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/slicing.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/survey.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/__init__.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/parser.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/path.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/svgutils/svgutils.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/synctime.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/table.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tapering.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/targets.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/track_flags.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker_data.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/twissplot.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack/view.py +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/SOURCES.txt +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/entry_points.txt +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.98.12 → xtrack-0.98.14}/xtrack.egg-info/top_level.txt +0 -0
|
@@ -69,24 +69,23 @@ def test_coupling_edwards_teng():
|
|
|
69
69
|
betx_mad_at_s, bety_mad_at_s, alfx_mad_at_s, alfy_mad_at_s)
|
|
70
70
|
|
|
71
71
|
xo.assert_allclose(tw.r11_edw_teng, r11_mad_at_s,
|
|
72
|
-
rtol=1e-5, atol=
|
|
72
|
+
rtol=1e-5, atol=5e-4*np.max(np.abs(r11_mad_at_s)))
|
|
73
73
|
xo.assert_allclose(tw.r12_edw_teng, r12_mad_at_s,
|
|
74
|
-
rtol=1e-5, atol=
|
|
74
|
+
rtol=1e-5, atol=5e-4*np.max(np.abs(r12_mad_at_s)))
|
|
75
75
|
xo.assert_allclose(tw.r21_edw_teng, r21_mad_at_s,
|
|
76
|
-
rtol=1e-5, atol=
|
|
76
|
+
rtol=1e-5, atol=6e-4*np.max(np.abs(r21_mad_at_s)))
|
|
77
77
|
xo.assert_allclose(tw.r22_edw_teng, r22_mad_at_s,
|
|
78
|
-
rtol=1e-5, atol=
|
|
79
|
-
xo.assert_allclose(tw.betx_edw_teng, betx_mad_at_s, atol=0, rtol=1e-
|
|
80
|
-
|
|
81
|
-
xo.assert_allclose(tw.
|
|
82
|
-
xo.assert_allclose(tw.
|
|
83
|
-
|
|
84
|
-
xo.assert_allclose(tw.
|
|
85
|
-
|
|
86
|
-
xo.assert_allclose(tw.
|
|
87
|
-
atol=
|
|
88
|
-
|
|
89
|
-
atol=1e-5 * np.max(np.abs(rdt_mad_at_s['f1010'])))
|
|
78
|
+
rtol=1e-5, atol=5e-4*np.max(np.abs(r22_mad_at_s)))
|
|
79
|
+
xo.assert_allclose(tw.betx_edw_teng, betx_mad_at_s, atol=0, rtol=1e-6)
|
|
80
|
+
xo.assert_allclose(tw.alfx_edw_teng, alfx_mad_at_s, atol=1e-4, rtol=1e-6)
|
|
81
|
+
xo.assert_allclose(tw.bety_edw_teng, bety_mad_at_s, atol=0, rtol=1e-6)
|
|
82
|
+
xo.assert_allclose(tw.alfy_edw_teng, alfy_mad_at_s, atol=1e-4, rtol=1e-6)
|
|
83
|
+
|
|
84
|
+
xo.assert_allclose(tw.f1001, rdt_mad_at_s['f1001'], rtol=1e-3,
|
|
85
|
+
atol=5e-4 * np.max(np.abs(rdt_mad_at_s['f1001'])))
|
|
86
|
+
xo.assert_allclose(tw.f1010, rdt_mad_at_s['f1010'], rtol=1e-3,
|
|
87
|
+
atol=5e-3 * np.max(np.abs(rdt_mad_at_s['f1010'])))
|
|
88
|
+
|
|
90
89
|
|
|
91
90
|
|
|
92
91
|
def compute_rdt(r11, r12, r21, r22, betx, bety, alfx, alfy):
|
|
@@ -20,7 +20,7 @@ def test_quadrupole_fringe_ptc():
|
|
|
20
20
|
|
|
21
21
|
p0 = xt.Particles(x=x0,px=px0,y=y0,py=py0,delta=delta0,zeta=zeta0,beta0=beta0)
|
|
22
22
|
|
|
23
|
-
ptau0 =
|
|
23
|
+
ptau0 = p0.ptau[0]
|
|
24
24
|
tau0 = zeta0/beta0
|
|
25
25
|
|
|
26
26
|
# XSuite
|
|
@@ -58,9 +58,9 @@ def test_quadrupole_fringe_ptc():
|
|
|
58
58
|
|
|
59
59
|
df = madx.table.tracksumm.dframe()
|
|
60
60
|
|
|
61
|
-
assert np.isclose(p0.x, df.x[-1])
|
|
62
|
-
assert np.isclose(p0.px, df.px[-1])
|
|
63
|
-
assert np.isclose(p0.y, df.y[-1])
|
|
64
|
-
assert np.isclose(p0.py, df.py[-1])
|
|
65
|
-
assert np.isclose(p0.ptau, df.pt[-1])
|
|
66
|
-
assert np.isclose(p0.zeta/p0.beta0, df.t[-1])
|
|
61
|
+
assert np.isclose(p0.x, df.x.values[-1])
|
|
62
|
+
assert np.isclose(p0.px, df.px.values[-1])
|
|
63
|
+
assert np.isclose(p0.y, df.y.values[-1])
|
|
64
|
+
assert np.isclose(p0.py, df.py.values[-1])
|
|
65
|
+
assert np.isclose(p0.ptau, df.pt.values[-1])
|
|
66
|
+
assert np.isclose(p0.zeta/p0.beta0, df.t.values[-1])
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.98.14'
|
|
@@ -944,6 +944,8 @@ def twiss_line(line, particle_ref=None, method=None,
|
|
|
944
944
|
alfy1, alfy2 = twiss_res['alfy1'], twiss_res['alfy2']
|
|
945
945
|
coupling_result = _compute_coupling_elements_edwards_teng(
|
|
946
946
|
W_matrix=twiss_res['W_matrix'],
|
|
947
|
+
mux=twiss_res['mux'],
|
|
948
|
+
muy=twiss_res['muy'],
|
|
947
949
|
qx=twiss_res['qx'],
|
|
948
950
|
qy=twiss_res['qy']
|
|
949
951
|
)
|
|
@@ -1409,100 +1411,57 @@ def _compute_lattice_functions(Ws, use_full_inverse, s_co):
|
|
|
1409
1411
|
|
|
1410
1412
|
def _compute_coupling_elements_edwards_teng(
|
|
1411
1413
|
W_matrix: np.ndarray,
|
|
1414
|
+
mux: np.ndarray,
|
|
1415
|
+
muy: np.ndarray,
|
|
1412
1416
|
qx: float = None,
|
|
1413
1417
|
qy: float = None,
|
|
1414
1418
|
):
|
|
1415
1419
|
"""Compute coupling matrix elements using the Edwards-Teng method.
|
|
1416
1420
|
|
|
1417
|
-
Using definition in chapter 7 of MAD8 guide
|
|
1418
|
-
|
|
1419
|
-
For the RDTs calculation, refer to R. Calaga and R. Tomás, "Betatron coupling:
|
|
1420
|
-
Merging Hamiltonian and matrix approaches", 10.1103/PhysRevSTAB.8.034001.
|
|
1421
|
-
|
|
1422
|
-
Returns
|
|
1423
|
-
-------
|
|
1424
|
-
r11, r12, r21, r22: complex
|
|
1425
|
-
Coupling matrix elements.
|
|
1426
|
-
f1010, f1001: complex
|
|
1427
|
-
Resonance driving terms f1010 and f1001.
|
|
1428
1421
|
"""
|
|
1429
1422
|
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
num_places = W_matrix.shape[0]
|
|
1437
|
-
r11 = np.zeros(num_places)
|
|
1438
|
-
r12 = np.zeros(num_places)
|
|
1439
|
-
r21 = np.zeros(num_places)
|
|
1440
|
-
r22 = np.zeros(num_places)
|
|
1441
|
-
betx_et = np.zeros(num_places)
|
|
1442
|
-
bety_et = np.zeros(num_places)
|
|
1443
|
-
alfx_et = np.zeros(num_places)
|
|
1444
|
-
alfy_et = np.zeros(num_places)
|
|
1445
|
-
for idx in range(num_places):
|
|
1446
|
-
|
|
1447
|
-
WW = W_matrix[idx, :, :]
|
|
1423
|
+
# This computes edwards-teng parameters from full one-turn W matrix at all locations
|
|
1424
|
+
# edw_teng_cols = _edwards_teng_from_one_turn_at_all_locations(W_matrix, qx, qy)
|
|
1425
|
+
#
|
|
1426
|
+
# The following instead computes from the one-turn R matrix at one location
|
|
1427
|
+
# and then propagates along the ring:
|
|
1448
1428
|
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1429
|
+
# R matrix of the full ring (4D)
|
|
1430
|
+
Rot = np.zeros(shape=(6, 6), dtype=np.float64)
|
|
1431
|
+
Rot[0:2,0:2] = lnf.Rot2D(2 * np.pi * qx)
|
|
1432
|
+
Rot[2:4,2:4] = lnf.Rot2D(2 * np.pi * qy)
|
|
1433
|
+
WW0 = W_matrix[0, :, :]
|
|
1434
|
+
WW0_inv = lnf.S.T @ WW0.T @ lnf.S
|
|
1435
|
+
RR = WW0 @ Rot @ WW0_inv
|
|
1436
|
+
|
|
1437
|
+
# Edwards-Teng initial conditions
|
|
1438
|
+
edw_teng_init = _compute_edwards_teng_initial(RR)
|
|
1439
|
+
|
|
1440
|
+
# Edwards-Teng parameters along the ring
|
|
1441
|
+
edw_teng_cols = _propagate_edwards_teng(
|
|
1442
|
+
WW=W_matrix, mux=mux, muy=muy,
|
|
1443
|
+
RR_ET0=edw_teng_init['RR_ET0'],
|
|
1444
|
+
betx0=edw_teng_init['betx0'],
|
|
1445
|
+
alfx0=edw_teng_init['alfx0'],
|
|
1446
|
+
bety0=edw_teng_init['bety0'],
|
|
1447
|
+
alfy0=edw_teng_init['alfy0']
|
|
1448
|
+
)
|
|
1457
1449
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
det_bc = np.linalg.det(b_pl_c)
|
|
1464
|
-
tr_a_m_tr_d = tr(AA) - tr(DD)
|
|
1465
|
-
coeff = - (0.5 * tr_a_m_tr_d
|
|
1466
|
-
+ np.sign(det_bc) * np.sqrt(det_bc + 0.25 * tr_a_m_tr_d**2))
|
|
1467
|
-
R_edw_teng = 1/coeff * b_pl_c
|
|
1468
|
-
|
|
1469
|
-
EE = AA - BB@R_edw_teng
|
|
1470
|
-
FF = DD + R_edw_teng@BB
|
|
1471
|
-
|
|
1472
|
-
quarter = 0.25
|
|
1473
|
-
two = 2.0
|
|
1474
|
-
|
|
1475
|
-
sinmu2 = -EE[0,1]*EE[1,0] - quarter*(EE[0,0] - EE[1,1])**2
|
|
1476
|
-
sinmux = np.sign(EE[0,1]) * np.sqrt(abs(sinmu2))
|
|
1477
|
-
betx_et_this = EE[0,1] / sinmux
|
|
1478
|
-
alfx_et_this = (EE[0,0] - EE[1,1]) / (two * sinmux)
|
|
1479
|
-
|
|
1480
|
-
sinmu2 = -FF[0,1]*FF[1,0] - quarter*(FF[0,0] - FF[1,1])**2
|
|
1481
|
-
sinmuy = np.sign(FF[0,1]) * np.sqrt(abs(sinmu2))
|
|
1482
|
-
bety_et_this = FF[0,1] / sinmuy
|
|
1483
|
-
alfy_et_this = (FF[0,0] - FF[1,1]) / (two * sinmuy)
|
|
1484
|
-
|
|
1485
|
-
r11[idx] = R_edw_teng[0,0]
|
|
1486
|
-
r12[idx] = R_edw_teng[0,1]
|
|
1487
|
-
r21[idx] = R_edw_teng[1,0]
|
|
1488
|
-
r22[idx] = R_edw_teng[1,1]
|
|
1489
|
-
betx_et[idx] = betx_et_this
|
|
1490
|
-
alfx_et[idx] = alfx_et_this
|
|
1491
|
-
bety_et[idx] = bety_et_this
|
|
1492
|
-
alfy_et[idx] = alfy_et_this
|
|
1493
|
-
|
|
1494
|
-
rdts = _compute_coupling_rdts(r11, r12, r21, r22,
|
|
1495
|
-
betx_et, bety_et, alfx_et, alfy_et)
|
|
1450
|
+
# Coupling RDTs from Edwards-Teng parameters
|
|
1451
|
+
rdts = _compute_coupling_rdts(edw_teng_cols['r11'], edw_teng_cols['r12'],
|
|
1452
|
+
edw_teng_cols['r21'], edw_teng_cols['r22'],
|
|
1453
|
+
edw_teng_cols['betx'], edw_teng_cols['bety'],
|
|
1454
|
+
edw_teng_cols['alfx'], edw_teng_cols['alfy'])
|
|
1496
1455
|
|
|
1497
1456
|
out = {
|
|
1498
|
-
'r11_edw_teng': r11,
|
|
1499
|
-
'r12_edw_teng': r12,
|
|
1500
|
-
'r21_edw_teng': r21,
|
|
1501
|
-
'r22_edw_teng': r22,
|
|
1502
|
-
'betx_edw_teng':
|
|
1503
|
-
'alfx_edw_teng':
|
|
1504
|
-
'bety_edw_teng':
|
|
1505
|
-
'alfy_edw_teng':
|
|
1457
|
+
'r11_edw_teng': edw_teng_cols['r11'],
|
|
1458
|
+
'r12_edw_teng': edw_teng_cols['r12'],
|
|
1459
|
+
'r21_edw_teng': edw_teng_cols['r21'],
|
|
1460
|
+
'r22_edw_teng': edw_teng_cols['r22'],
|
|
1461
|
+
'betx_edw_teng': edw_teng_cols['betx'],
|
|
1462
|
+
'alfx_edw_teng': edw_teng_cols['alfx'],
|
|
1463
|
+
'bety_edw_teng': edw_teng_cols['bety'],
|
|
1464
|
+
'alfy_edw_teng': edw_teng_cols['alfy'],
|
|
1506
1465
|
}
|
|
1507
1466
|
out.update(rdts)
|
|
1508
1467
|
|
|
@@ -1556,6 +1515,50 @@ def _compute_coupling_rdts(r11, r12, r21, r22, betx, bety, alfx, alfy):
|
|
|
1556
1515
|
|
|
1557
1516
|
return {'f1001': f1001, 'f1010': f1010}
|
|
1558
1517
|
|
|
1518
|
+
def _compute_edwards_teng_initial(RR):
|
|
1519
|
+
|
|
1520
|
+
AA = RR[:2, :2]
|
|
1521
|
+
BB = RR[:2, 2:4]
|
|
1522
|
+
CC = RR[2:4, :2]
|
|
1523
|
+
DD = RR[2:4, 2:4]
|
|
1524
|
+
|
|
1525
|
+
if np.linalg.norm(BB) < 1e-10 and np.linalg.norm(CC) < 1e-10:
|
|
1526
|
+
RR_ET0 = np.zeros((2, 2))
|
|
1527
|
+
else:
|
|
1528
|
+
tr = np.linalg.trace
|
|
1529
|
+
b_pl_c = CC + _conj_mat(BB)
|
|
1530
|
+
det_bc = np.linalg.det(b_pl_c)
|
|
1531
|
+
tr_a_m_tr_d = tr(AA) - tr(DD)
|
|
1532
|
+
coeff = - (0.5 * tr_a_m_tr_d
|
|
1533
|
+
+ np.sign(tr_a_m_tr_d) * np.sqrt(det_bc + 0.25 * tr_a_m_tr_d**2))
|
|
1534
|
+
RR_ET0 = 1/coeff * b_pl_c
|
|
1535
|
+
|
|
1536
|
+
EE = AA - BB@RR_ET0
|
|
1537
|
+
FF = DD + RR_ET0@BB
|
|
1538
|
+
|
|
1539
|
+
quarter = 0.25
|
|
1540
|
+
two = 2.0
|
|
1541
|
+
|
|
1542
|
+
sinmu2 = -EE[0,1]*EE[1,0] - quarter*(EE[0,0] - EE[1,1])**2
|
|
1543
|
+
sinmux = np.sign(EE[0,1]) * np.sqrt(abs(sinmu2))
|
|
1544
|
+
betx0 = EE[0,1] / sinmux
|
|
1545
|
+
alfx0 = (EE[0,0] - EE[1,1]) / (two * sinmux)
|
|
1546
|
+
|
|
1547
|
+
sinmu2 = -FF[0,1]*FF[1,0] - quarter*(FF[0,0] - FF[1,1])**2
|
|
1548
|
+
sinmuy = np.sign(FF[0,1]) * np.sqrt(abs(sinmu2))
|
|
1549
|
+
bety0 = FF[0,1] / sinmuy
|
|
1550
|
+
alfy0 = (FF[0,0] - FF[1,1]) / (two * sinmuy)
|
|
1551
|
+
|
|
1552
|
+
edw_teng_init = {
|
|
1553
|
+
'RR_ET0': RR_ET0,
|
|
1554
|
+
'betx0': betx0,
|
|
1555
|
+
'alfx0': alfx0,
|
|
1556
|
+
'bety0': bety0,
|
|
1557
|
+
'alfy0': alfy0
|
|
1558
|
+
}
|
|
1559
|
+
|
|
1560
|
+
return edw_teng_init
|
|
1561
|
+
|
|
1559
1562
|
def _conj_mat(mm):
|
|
1560
1563
|
a = mm[0,0]
|
|
1561
1564
|
b = mm[0,1]
|
|
@@ -1564,6 +1567,171 @@ def _conj_mat(mm):
|
|
|
1564
1567
|
return np.array([[d, -b], [-c, a]])
|
|
1565
1568
|
|
|
1566
1569
|
|
|
1570
|
+
def _edwards_teng_from_one_turn_at_all_locations(WW, qx, qy):
|
|
1571
|
+
|
|
1572
|
+
# R matrix of the full ring (4D)
|
|
1573
|
+
Rot = np.zeros(shape=(6, 6), dtype=np.float64)
|
|
1574
|
+
Rot[0:2,0:2] = lnf.Rot2D(2 * np.pi * qx)
|
|
1575
|
+
Rot[2:4,2:4] = lnf.Rot2D(2 * np.pi * qy)
|
|
1576
|
+
|
|
1577
|
+
n_elem = WW.shape[0]
|
|
1578
|
+
|
|
1579
|
+
betx = np.zeros(n_elem)
|
|
1580
|
+
alfx = np.zeros(n_elem)
|
|
1581
|
+
bety = np.zeros(n_elem)
|
|
1582
|
+
alfy = np.zeros(n_elem)
|
|
1583
|
+
r11 = np.zeros(n_elem)
|
|
1584
|
+
r12 = np.zeros(n_elem)
|
|
1585
|
+
r21 = np.zeros(n_elem)
|
|
1586
|
+
r22 = np.zeros(n_elem)
|
|
1587
|
+
|
|
1588
|
+
for ii in range(n_elem):
|
|
1589
|
+
|
|
1590
|
+
WW0 = WW[ii, :, :]
|
|
1591
|
+
WW0_inv = lnf.S.T @ WW0.T @ lnf.S
|
|
1592
|
+
RR = WW0 @ Rot @ WW0_inv
|
|
1593
|
+
|
|
1594
|
+
# Edwards-Teng initial conditions
|
|
1595
|
+
edw_teng_init = _compute_edwards_teng_initial(RR)
|
|
1596
|
+
|
|
1597
|
+
RR_ET=edw_teng_init['RR_ET0']
|
|
1598
|
+
|
|
1599
|
+
r11[ii] = RR_ET[0, 0]
|
|
1600
|
+
r12[ii] = RR_ET[0, 1]
|
|
1601
|
+
r21[ii] = RR_ET[1, 0]
|
|
1602
|
+
r22[ii] = RR_ET[1, 1]
|
|
1603
|
+
betx[ii] = edw_teng_init['betx0']
|
|
1604
|
+
alfx[ii] = edw_teng_init['alfx0']
|
|
1605
|
+
bety[ii] = edw_teng_init['bety0']
|
|
1606
|
+
alfy[ii] = edw_teng_init['alfy0']
|
|
1607
|
+
|
|
1608
|
+
out_dict = {
|
|
1609
|
+
'betx': betx,
|
|
1610
|
+
'alfx': alfx,
|
|
1611
|
+
'bety': bety,
|
|
1612
|
+
'alfy': alfy,
|
|
1613
|
+
'r11': r11,
|
|
1614
|
+
'r12': r12,
|
|
1615
|
+
'r21': r21,
|
|
1616
|
+
'r22': r22
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
return out_dict
|
|
1620
|
+
|
|
1621
|
+
def _propagate_edwards_teng(WW, mux, muy, RR_ET0, betx0, alfx0, bety0, alfy0):
|
|
1622
|
+
|
|
1623
|
+
lnf = xt.linear_normal_form
|
|
1624
|
+
SS2D = lnf.S[:2, :2]
|
|
1625
|
+
|
|
1626
|
+
RR_ET = RR_ET0.copy()
|
|
1627
|
+
|
|
1628
|
+
n_elem = len(mux)
|
|
1629
|
+
betx = np.zeros(n_elem)
|
|
1630
|
+
alfx = np.zeros(n_elem)
|
|
1631
|
+
bety = np.zeros(n_elem)
|
|
1632
|
+
alfy = np.zeros(n_elem)
|
|
1633
|
+
r11 = np.zeros(n_elem)
|
|
1634
|
+
r12 = np.zeros(n_elem)
|
|
1635
|
+
r21 = np.zeros(n_elem)
|
|
1636
|
+
r22 = np.zeros(n_elem)
|
|
1637
|
+
|
|
1638
|
+
betx[0] = betx0
|
|
1639
|
+
alfx[0] = alfx0
|
|
1640
|
+
bety[0] = bety0
|
|
1641
|
+
alfy[0] = alfy0
|
|
1642
|
+
r11[0] = RR_ET[0, 0]
|
|
1643
|
+
r12[0] = RR_ET[0, 1]
|
|
1644
|
+
r21[0] = RR_ET[1, 0]
|
|
1645
|
+
r22[0] = RR_ET[1, 1]
|
|
1646
|
+
|
|
1647
|
+
for ii in range(n_elem - 1):
|
|
1648
|
+
|
|
1649
|
+
# Build 2D R matrix of the element
|
|
1650
|
+
WW1 = WW[ii, :, :]
|
|
1651
|
+
WW2 = WW[ii+1, :, :]
|
|
1652
|
+
WW1_inv = lnf.S.T @ WW1.T @ lnf.S
|
|
1653
|
+
Rot_e_ii = np.zeros((6,6), dtype=np.float64)
|
|
1654
|
+
Rot_e_ii[0:2,0:2] = lnf.Rot2D(2*np.pi*(mux[ii+1] - mux[ii]))
|
|
1655
|
+
Rot_e_ii[2:4,2:4] = lnf.Rot2D(2*np.pi*(muy[ii+1] - muy[ii]))
|
|
1656
|
+
RRe_ii = WW2 @ Rot_e_ii @ WW1_inv
|
|
1657
|
+
|
|
1658
|
+
# Blocks of the R matrix of the element
|
|
1659
|
+
AA = RRe_ii[:2, :2]
|
|
1660
|
+
BB = RRe_ii[:2, 2:4]
|
|
1661
|
+
CC = RRe_ii[2:4, :2]
|
|
1662
|
+
DD = RRe_ii[2:4, 2:4]
|
|
1663
|
+
|
|
1664
|
+
# Propagate EE, FF and RR_ET through the element
|
|
1665
|
+
# Bases on MAD-X implementation (see madx/src/twiss.f90, subroutine twcptk)
|
|
1666
|
+
|
|
1667
|
+
if np.allclose(BB, 0, atol=1e-12) and np.allclose(CC, 0, atol=1e-12):
|
|
1668
|
+
# Case in which the matrix is block diagonal (no coupling in the element)
|
|
1669
|
+
EE = AA
|
|
1670
|
+
FF = DD
|
|
1671
|
+
EEBAR = SS2D @ EE.T @ SS2D.T
|
|
1672
|
+
edet = EE[0,0]*EE[1,1] - EE[0,1]*EE[1,0]
|
|
1673
|
+
CCDD = -FF @ RR_ET
|
|
1674
|
+
RR_ET = -CCDD @ EEBAR / edet
|
|
1675
|
+
else:
|
|
1676
|
+
RR_ET_BAR = SS2D @ RR_ET.T @ SS2D.T
|
|
1677
|
+
EE = AA - BB @ RR_ET
|
|
1678
|
+
edet = EE[0,0]*EE[1,1] - EE[0,1]*EE[1,0]
|
|
1679
|
+
EEBAR = SS2D @ EE.T @ SS2D.T
|
|
1680
|
+
CCDD = CC - DD @ RR_ET
|
|
1681
|
+
FF = DD + CC @ RR_ET_BAR
|
|
1682
|
+
RR_ET = -CCDD @ EEBAR / edet
|
|
1683
|
+
|
|
1684
|
+
# Propagate Edwards-Teng Twiss parameters through the element
|
|
1685
|
+
# Based on MAD-X implementation (see madx/src/twiss.f90, subroutine twcptk_twiss)
|
|
1686
|
+
|
|
1687
|
+
betx1 = betx[ii]
|
|
1688
|
+
alfx1 = alfx[ii]
|
|
1689
|
+
bety1 = bety[ii]
|
|
1690
|
+
alfy1 = alfy[ii]
|
|
1691
|
+
|
|
1692
|
+
Rx11 = EE[0,0]
|
|
1693
|
+
Rx12 = EE[0,1]
|
|
1694
|
+
Rx21 = EE[1,0]
|
|
1695
|
+
Rx22 = EE[1,1]
|
|
1696
|
+
detx = Rx11 * Rx22 - Rx12 * Rx21
|
|
1697
|
+
tempb = Rx11 * betx1 - Rx12 * alfx1
|
|
1698
|
+
tempa = Rx21 * betx1 - Rx22 * alfx1
|
|
1699
|
+
alfx2 = - (tempa * tempb + Rx12 * Rx22) / (detx*betx1)
|
|
1700
|
+
betx2 = (tempb * tempb + Rx12 * Rx12) / (detx*betx1)
|
|
1701
|
+
|
|
1702
|
+
Ry11 = FF[0,0]
|
|
1703
|
+
Ry12 = FF[0,1]
|
|
1704
|
+
Ry21 = FF[1,0]
|
|
1705
|
+
Ry22 = FF[1,1]
|
|
1706
|
+
dety = Ry11 * Ry22 - Ry12 * Ry21
|
|
1707
|
+
tempb = Ry11 * bety1 - Ry12 * alfy1
|
|
1708
|
+
tempa = Ry21 * bety1 - Ry22 * alfy1
|
|
1709
|
+
alfy2 = - (tempa * tempb + Ry12 * Ry22) / (dety*bety1)
|
|
1710
|
+
bety2 = (tempb * tempb + Ry12 * Ry12) / (dety*bety1)
|
|
1711
|
+
|
|
1712
|
+
betx[ii+1] = betx2
|
|
1713
|
+
alfx[ii+1] = alfx2
|
|
1714
|
+
r11[ii+1] = RR_ET[0, 0]
|
|
1715
|
+
r12[ii+1] = RR_ET[0, 1]
|
|
1716
|
+
r21[ii+1] = RR_ET[1, 0]
|
|
1717
|
+
r22[ii+1] = RR_ET[1, 1]
|
|
1718
|
+
bety[ii+1] = bety2
|
|
1719
|
+
alfy[ii+1] = alfy2
|
|
1720
|
+
|
|
1721
|
+
out_dict = {
|
|
1722
|
+
'betx': betx,
|
|
1723
|
+
'alfx': alfx,
|
|
1724
|
+
'bety': bety,
|
|
1725
|
+
'alfy': alfy,
|
|
1726
|
+
'r11': r11,
|
|
1727
|
+
'r12': r12,
|
|
1728
|
+
'r21': r21,
|
|
1729
|
+
'r22': r22
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
return out_dict
|
|
1733
|
+
|
|
1734
|
+
|
|
1567
1735
|
def _compute_global_quantities(line, twiss_res, method):
|
|
1568
1736
|
|
|
1569
1737
|
s_vect = twiss_res['s']
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.98.12'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|