xtrack 0.97.0__tar.gz → 0.97.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {xtrack-0.97.0/xtrack.egg-info → xtrack-0.97.1}/PKG-INFO +1 -1
- xtrack-0.97.1/ducktrack/be_beamfields/BB6D.py +160 -0
- xtrack-0.97.1/ducktrack/be_beamfields/BB6Ddata.py +309 -0
- xtrack-0.97.1/ducktrack/be_beamfields/__init__.py +7 -0
- xtrack-0.97.1/ducktrack/be_beamfields/beambeam.py +441 -0
- xtrack-0.97.1/ducktrack/be_beamfields/boost.py +125 -0
- xtrack-0.97.1/ducktrack/be_beamfields/gaussian_fields.py +216 -0
- xtrack-0.97.1/ducktrack/be_beamfields/propagate_sigma_matrix.py +304 -0
- xtrack-0.97.1/ducktrack/be_beamfields/qgauss.py +80 -0
- xtrack-0.97.1/ducktrack/be_beamfields/slicing.py +61 -0
- xtrack-0.97.1/ducktrack/be_beamfields/spacecharge.py +182 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/pyproject.toml +1 -1
- xtrack-0.97.1/xtrack/_temp/__init__.py +0 -0
- xtrack-0.97.1/xtrack/_temp/boris_and_solenoid_map/__init__.py +0 -0
- xtrack-0.97.1/xtrack/_temp/boris_and_solenoid_map/solenoid_field.py +96 -0
- xtrack-0.97.1/xtrack/_temp/lhc_match/__init__.py +3 -0
- xtrack-0.97.1/xtrack/_temp/lhc_match/gen_madx_optics_file.py +57 -0
- xtrack-0.97.1/xtrack/_temp/lhc_match/lhc_match.py +1149 -0
- xtrack-0.97.1/xtrack/_temp/lhc_match/var_limits.py +337 -0
- xtrack-0.97.1/xtrack/_temp/python_lattice_writer/__init__.py +0 -0
- xtrack-0.97.1/xtrack/_temp/python_lattice_writer/lattice_py_generation.py +318 -0
- xtrack-0.97.1/xtrack/_version.py +1 -0
- xtrack-0.97.1/xtrack/beam_elements/__init__.py +37 -0
- xtrack-0.97.1/xtrack/beam_elements/acdipole.py +224 -0
- xtrack-0.97.1/xtrack/beam_elements/apertures.py +555 -0
- xtrack-0.97.1/xtrack/beam_elements/beam_interaction.py +97 -0
- xtrack-0.97.1/xtrack/beam_elements/elements.py +4401 -0
- xtrack-0.97.1/xtrack/beam_elements/elements_src/_generate_slice_elements_c_code.py +310 -0
- xtrack-0.97.1/xtrack/beam_elements/elements_src/_include_integrator.py +144 -0
- xtrack-0.97.1/xtrack/beam_elements/exciter.py +159 -0
- xtrack-0.97.1/xtrack/beam_elements/rft_element.py +80 -0
- xtrack-0.97.1/xtrack/beam_elements/slice_base.py +41 -0
- xtrack-0.97.1/xtrack/beam_elements/slice_elements_drift.py +170 -0
- xtrack-0.97.1/xtrack/beam_elements/slice_elements_edge.py +414 -0
- xtrack-0.97.1/xtrack/beam_elements/slice_elements_thick.py +127 -0
- xtrack-0.97.1/xtrack/beam_elements/slice_elements_thin.py +256 -0
- xtrack-0.97.1/xtrack/loss_location_refinement/__init__.py +6 -0
- xtrack-0.97.1/xtrack/loss_location_refinement/loss_location_refinement.py +631 -0
- xtrack-0.97.1/xtrack/mad_parser/__init__.py +2 -0
- xtrack-0.97.1/xtrack/mad_parser/loader.py +745 -0
- xtrack-0.97.1/xtrack/mad_parser/parse.py +322 -0
- xtrack-0.97.1/xtrack/monitors/__init__.py +8 -0
- xtrack-0.97.1/xtrack/monitors/beam_position_monitor.py +136 -0
- xtrack-0.97.1/xtrack/monitors/beam_profile_monitor.py +207 -0
- xtrack-0.97.1/xtrack/monitors/beam_size_monitor.py +149 -0
- xtrack-0.97.1/xtrack/monitors/last_turns_monitor.py +122 -0
- xtrack-0.97.1/xtrack/monitors/particles_monitor.py +184 -0
- xtrack-0.97.1/xtrack/multiline_legacy/__init__.py +2 -0
- xtrack-0.97.1/xtrack/multiline_legacy/multiline_legacy.py +684 -0
- xtrack-0.97.1/xtrack/multiline_legacy/shared_knobs.py +71 -0
- xtrack-0.97.1/xtrack/multisetter/__init__.py +1 -0
- xtrack-0.97.1/xtrack/multisetter/multisetter.py +197 -0
- xtrack-0.97.1/xtrack/particles/__init__.py +23 -0
- xtrack-0.97.1/xtrack/particles/constants.py +7 -0
- xtrack-0.97.1/xtrack/particles/masses.py +181 -0
- xtrack-0.97.1/xtrack/particles/particles.py +2119 -0
- xtrack-0.97.1/xtrack/particles/pdg.py +549 -0
- xtrack-0.97.1/xtrack/pipeline/__init__.py +3 -0
- xtrack-0.97.1/xtrack/pipeline/core.py +40 -0
- xtrack-0.97.1/xtrack/pipeline/manager.py +87 -0
- xtrack-0.97.1/xtrack/pipeline/multitracker.py +72 -0
- xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/__init__.py +7 -0
- xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/element_inits.py +38 -0
- xtrack-0.97.1/xtrack/prebuilt_kernel_definitions/element_types.py +114 -0
- xtrack-0.97.1/xtrack/random/__init__.py +5 -0
- xtrack-0.97.1/xtrack/random/random_generators.py +201 -0
- xtrack-0.97.1/xtrack/svgutils/__init__.py +1 -0
- xtrack-0.97.1/xtrack/svgutils/parser.py +327 -0
- xtrack-0.97.1/xtrack/svgutils/path.py +985 -0
- xtrack-0.97.1/xtrack/svgutils/svgutils.py +45 -0
- {xtrack-0.97.0 → xtrack-0.97.1/xtrack.egg-info}/PKG-INFO +1 -1
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/SOURCES.txt +67 -0
- xtrack-0.97.0/xtrack/_version.py +0 -1
- {xtrack-0.97.0 → xtrack-0.97.1}/LICENSE +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/MANIFEST.in +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/README.md +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/__init__.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/base_classes.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/elements.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/line.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/mathlibs.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/particles.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/ducktrack/temp_pyparticles.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/setup.cfg +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/setup.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acceleration.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acdipole.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_acdipole_twiss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_amplitude_detuning.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_polygon.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_table.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_aperture_turn_ele_and_monitor.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_apertures.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_attr_replicas_and_slices.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_boris_spatial.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_bucket_with_ref_energy_change.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_cavity_absolute_time.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_chromatic_functions_vs_madx.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_coasting.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_collective_tracker.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_collimation.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_coupling_edwards_teng.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_electron_cooler.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_element_characterization_functions.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_element_internal_record.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements_classflags.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_elements_thick.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_environment.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_fcc_ee_solenoid_correction_new_optimize_api.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_footprint.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_freeze_longitudinal.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_full_rings.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_h6_sps_beamline.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_hvkick.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ions.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_json.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_legacy_multiline_to_env.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lhc_env.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lhc_match_phase_15.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_line.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_load.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_load_vars.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_lumi.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_mad_writer.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_madloader.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_madnginterface.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_magnet.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_and_track_from_element.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_coupling_knob.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_nested.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_optics_and_ip_knob_new_optimize_api.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_orbit_bump.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_match_tune_chroma_cminus.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_misalign.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_monitor.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multi_bunch_gauss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multiline.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multisetter.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_multispecies.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_lhc.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_lhc_thin.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_ps.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_sps.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_native_madloader_ti2.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_optimize_for_tracking.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles_basics.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_particles_pdg.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_pipeline.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_prebuild_kernels.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ps_against_ptc.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_ps_multiturn_twiss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_psb_chicane.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_pyht_interface.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_quadrupole_fringe_ptc.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_quadrupole_wedge.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radial_steering.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_equilibrium_emittances_thick.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_radiation_integrals.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_exp.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_gauss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_random_gen_ruth.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rbend_straight_body.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rf_track.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_rotation_signs.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_second_order_taylor_map.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_seeds.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slice_and_insert_with_replicas.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slice_elements.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_slicing.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_solenoid_bz_map_vs_boris_legacy.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_spacecharge_in_ring.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_spin.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_sps_thick_cpymad_loader.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_sps_thick_native_loader.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_survey.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tapering.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_thick_kickers_rf_crab.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_thick_lhc.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tilt_shifts.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_tracker.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_trajectory_correcton.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss_to_file.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_twiss_vs_madx_psb.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_vs_madx.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/tests/test_xmask_orbit_correction.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/__init__.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/_temp/boris_and_solenoid_map/boris.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/aperture_meas.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/base_element.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitellipse.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitpolygon.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitracetrack.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrect.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/limitrectellipse.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/apertures_src/longitudinallimitrect.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/acdipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/bend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/crab_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/default_magnet_config.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipole_fringe.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/dipoleedge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_exact_slice.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_bend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_crab_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_multipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_octupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_quadrupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_rbend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_sextupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/drift_slice_uniform_solenoid.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/electroncooler.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/elens.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/exciter.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/firstordertaylormap.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/legacy_solenoid.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/linesegmentmap.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_drift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_edge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/magnet_kick.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/marker.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/misalignment.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/multipoleedge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/nonlinearlens.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/octupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/quadrupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rbend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/referenceenergyincrease.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/rfmultipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/second_order_taylor_map.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/sextupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinbend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/simplethinquadrupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/slnd.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/srotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/temprf.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_bend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_crab_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_multipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_octupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_quadrupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_rbend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_sextupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thick_slice_uniform_solenoid.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_bend_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_crab_cavity.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_multipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_octupole_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_quadrupole_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_rbend_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_sextupole_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_entry.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/thin_slice_uniform_solenoid_exit.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_acdipole.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_linear.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_edge_nonlinear.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_dipole_fringe.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_drift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_multipolar_components.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_legacy_solenoid_radiation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet.template.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_configure.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_drift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_edge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_kick.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_magnet_radiation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_misalignments.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_mult_fringe.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_rf.template.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_srotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_bend.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_thick_cfd.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_wedge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xrotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_xyshift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/track_yrotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/variable_solenoid.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wedge.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/wire.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xrotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/xyshift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/yrotation.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/beam_elements/elements_src/zetashift.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/boris.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/builder.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/environment.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/footprint.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/functions.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/general.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/atomicadd.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/checks.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/constants.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/particle_states.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/synrad_spectrum.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/track.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/headers/track_local_particle_with_transformations.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/internal_record.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/json.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/line.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/linear_normal_form.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/load.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/lumi.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_loader.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_parser/madx.lark +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/mad_writer.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/madng_interface.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/match.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_position_monitor.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_profile_monitor.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/beam_size_monitor.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/last_turns_monitor.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/monitors/particles_monitor.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/multiline.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/multisetter/multisetter.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/local_particle_custom_api.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/rng_src/base_rng.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/particles/rng_src/particles_rng.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/progress_indicator.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/exponential.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/exponential_integral_Ei.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/normal.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/rutherford.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/uniform.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/random/random_src/uniform_accurate.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/slicing.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/survey.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/synctime.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/table.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tapering.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/targets.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/track_flags.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker_data.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/tracker_src/tracker.h +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/trajectory_correction.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/twiss.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/twissplot.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack/view.py +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/dependency_links.txt +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/entry_points.txt +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/requires.txt +0 -0
- {xtrack-0.97.0 → xtrack-0.97.1}/xtrack.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# copyright ############################### #
|
|
2
|
+
# This file is part of the Xtrack Package. #
|
|
3
|
+
# Copyright (c) CERN, 2021. #
|
|
4
|
+
# ######################################### #
|
|
5
|
+
|
|
6
|
+
from . import propagate_sigma_matrix as psm
|
|
7
|
+
from . import boost as boost
|
|
8
|
+
|
|
9
|
+
# import transverse_efields as tef
|
|
10
|
+
|
|
11
|
+
from . import gaussian_fields as gf
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
import numpy as np
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from scipy.constants import c as c_light
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def BB6D_track(x, px, y, py, sigma, delta, q0, p0, bb6ddata, mathlib):
|
|
21
|
+
|
|
22
|
+
# print('Input px',px)
|
|
23
|
+
|
|
24
|
+
q_part = bb6ddata.q_part
|
|
25
|
+
parboost = bb6ddata.parboost
|
|
26
|
+
Sigmas_0_star = bb6ddata.Sigmas_0_star
|
|
27
|
+
N_slices = bb6ddata.N_slices
|
|
28
|
+
N_part_per_slice = bb6ddata.N_part_per_slice
|
|
29
|
+
x_slices_star = bb6ddata.x_slices_star
|
|
30
|
+
y_slices_star = bb6ddata.y_slices_star
|
|
31
|
+
sigma_slices_star = bb6ddata.sigma_slices_star
|
|
32
|
+
min_sigma_diff = bb6ddata.min_sigma_diff
|
|
33
|
+
threshold_singular = bb6ddata.threshold_singular
|
|
34
|
+
|
|
35
|
+
# Change reference frame
|
|
36
|
+
x_subCO = x - bb6ddata.x_CO - bb6ddata.delta_x
|
|
37
|
+
px_subCO = px - bb6ddata.px_CO
|
|
38
|
+
y_subCO = y - bb6ddata.y_CO - bb6ddata.delta_y
|
|
39
|
+
py_subCO = py - bb6ddata.py_CO
|
|
40
|
+
sigma_subCO = sigma - bb6ddata.sigma_CO
|
|
41
|
+
delta_subCO = delta - bb6ddata.delta_CO
|
|
42
|
+
|
|
43
|
+
# Boost coordinates of the weak beam
|
|
44
|
+
x_star, px_star, y_star, py_star, sigma_star, delta_star = boost.boost(
|
|
45
|
+
x_subCO,
|
|
46
|
+
px_subCO,
|
|
47
|
+
y_subCO,
|
|
48
|
+
py_subCO,
|
|
49
|
+
sigma_subCO,
|
|
50
|
+
delta_subCO,
|
|
51
|
+
parboost,
|
|
52
|
+
)
|
|
53
|
+
# ~ x_star, px_star, y_star, py_star, sigma_star, delta_star =
|
|
54
|
+
# (x, px, y, py, sigma, delta)
|
|
55
|
+
for i_slice in range(N_slices):
|
|
56
|
+
sigma_slice_star = sigma_slices_star[i_slice]
|
|
57
|
+
x_slice_star = x_slices_star[i_slice]
|
|
58
|
+
y_slice_star = y_slices_star[i_slice]
|
|
59
|
+
|
|
60
|
+
# Compute force scaling factor
|
|
61
|
+
Ksl = N_part_per_slice[i_slice] * q_part * q0 / (p0 * c_light)
|
|
62
|
+
|
|
63
|
+
# Identify the Collision Point (CP)
|
|
64
|
+
S = 0.5 * (sigma_star - sigma_slice_star)
|
|
65
|
+
|
|
66
|
+
# Get strong beam shape at the CP
|
|
67
|
+
(
|
|
68
|
+
Sig_11_hat_star,
|
|
69
|
+
Sig_33_hat_star,
|
|
70
|
+
costheta,
|
|
71
|
+
sintheta,
|
|
72
|
+
dS_Sig_11_hat_star,
|
|
73
|
+
dS_Sig_33_hat_star,
|
|
74
|
+
dS_costheta,
|
|
75
|
+
dS_sintheta,
|
|
76
|
+
extra_data,
|
|
77
|
+
) = psm.propagate_Sigma_matrix(
|
|
78
|
+
Sigmas_0_star, S, threshold_singular=threshold_singular
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Evaluate transverse coordinates of the weake baem w.r.t.
|
|
82
|
+
# the strong beam centroid
|
|
83
|
+
x_bar_star = x_star + px_star * S - x_slice_star
|
|
84
|
+
y_bar_star = y_star + py_star * S - y_slice_star
|
|
85
|
+
|
|
86
|
+
# Move to the uncoupled reference frame
|
|
87
|
+
x_bar_hat_star = x_bar_star * costheta + y_bar_star * sintheta
|
|
88
|
+
y_bar_hat_star = -x_bar_star * sintheta + y_bar_star * costheta
|
|
89
|
+
|
|
90
|
+
# Compute derivatives of the transformation
|
|
91
|
+
dS_x_bar_hat_star = x_bar_star * dS_costheta + y_bar_star * dS_sintheta
|
|
92
|
+
dS_y_bar_hat_star = (
|
|
93
|
+
-x_bar_star * dS_sintheta + y_bar_star * dS_costheta
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
# Compute normalized field
|
|
97
|
+
# Ex, Ey, Gx, Gy = tef.get_Ex_Ey_Gx_Gy_gauss(
|
|
98
|
+
# x=x_bar_hat_star, y=y_bar_hat_star,
|
|
99
|
+
# sigma_x=np.sqrt(Sig_11_hat_star),
|
|
100
|
+
# sigma_y=np.sqrt(Sig_33_hat_star),
|
|
101
|
+
# min_sigma_diff = min_sigma_diff)
|
|
102
|
+
|
|
103
|
+
Ex, Ey, Gx, Gy = gf.get_Ex_Ey_Gx_Gy_gauss(
|
|
104
|
+
x=x_bar_hat_star,
|
|
105
|
+
y=y_bar_hat_star,
|
|
106
|
+
sigma_x=np.sqrt(Sig_11_hat_star),
|
|
107
|
+
sigma_y=np.sqrt(Sig_33_hat_star),
|
|
108
|
+
min_sigma_diff=min_sigma_diff,
|
|
109
|
+
skip_Gs=False,
|
|
110
|
+
mathlib=mathlib,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
# Compute kicks
|
|
114
|
+
Fx_hat_star = Ksl * Ex
|
|
115
|
+
Fy_hat_star = Ksl * Ey
|
|
116
|
+
Gx_hat_star = Ksl * Gx
|
|
117
|
+
Gy_hat_star = Ksl * Gy
|
|
118
|
+
|
|
119
|
+
# Move kisks to coupled reference frame
|
|
120
|
+
Fx_star = Fx_hat_star * costheta - Fy_hat_star * sintheta
|
|
121
|
+
Fy_star = Fx_hat_star * sintheta + Fy_hat_star * costheta
|
|
122
|
+
|
|
123
|
+
# Compute longitudinal kick
|
|
124
|
+
Fz_star = 0.5 * (
|
|
125
|
+
Fx_hat_star * dS_x_bar_hat_star
|
|
126
|
+
+ Fy_hat_star * dS_y_bar_hat_star
|
|
127
|
+
+ Gx_hat_star * dS_Sig_11_hat_star
|
|
128
|
+
+ Gy_hat_star * dS_Sig_33_hat_star
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
# Apply the kicks (Hirata's synchro-beam)
|
|
132
|
+
delta_star = (
|
|
133
|
+
delta_star
|
|
134
|
+
+ Fz_star
|
|
135
|
+
+ 0.5
|
|
136
|
+
* (
|
|
137
|
+
Fx_star * (px_star + 0.5 * Fx_star)
|
|
138
|
+
+ Fy_star * (py_star + 0.5 * Fy_star)
|
|
139
|
+
)
|
|
140
|
+
)
|
|
141
|
+
x_star = x_star - S * Fx_star
|
|
142
|
+
px_star = px_star + Fx_star
|
|
143
|
+
y_star = y_star - S * Fy_star
|
|
144
|
+
py_star = py_star + Fy_star
|
|
145
|
+
|
|
146
|
+
# Inverse boost on the coordinates of the weak beam
|
|
147
|
+
x_ret, px_ret, y_ret, py_ret, sigma_ret, delta_ret = boost.inv_boost(
|
|
148
|
+
x_star, px_star, y_star, py_star, sigma_star, delta_star, parboost
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
# Go back to original reference frame and remove dipolar effect
|
|
152
|
+
x_out = x_ret + bb6ddata.x_CO + bb6ddata.delta_x - bb6ddata.Dx_sub
|
|
153
|
+
px_out = px_ret + bb6ddata.px_CO - bb6ddata.Dpx_sub
|
|
154
|
+
y_out = y_ret + bb6ddata.y_CO + bb6ddata.delta_y - bb6ddata.Dy_sub
|
|
155
|
+
py_out = py_ret + bb6ddata.py_CO - bb6ddata.Dpy_sub
|
|
156
|
+
sigma_out = sigma_ret + bb6ddata.sigma_CO - bb6ddata.Dsigma_sub
|
|
157
|
+
delta_out = delta_ret + bb6ddata.delta_CO - bb6ddata.Ddelta_sub
|
|
158
|
+
|
|
159
|
+
# print(x_ret, px_ret, y_ret, py_ret, sigma_ret, delta_ret)
|
|
160
|
+
return x_out, px_out, y_out, py_out, sigma_out, delta_out
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# copyright ############################### #
|
|
2
|
+
# This file is part of the Xtrack Package. #
|
|
3
|
+
# Copyright (c) CERN, 2021. #
|
|
4
|
+
# ######################################### #
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
from . import boost
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ParBoost(object):
|
|
12
|
+
# it is practically a struct
|
|
13
|
+
def __init__(self, phi, alpha):
|
|
14
|
+
self.sphi = np.sin(phi)
|
|
15
|
+
self.cphi = np.cos(phi)
|
|
16
|
+
self.tphi = np.tan(phi)
|
|
17
|
+
self.salpha = np.sin(alpha)
|
|
18
|
+
self.calpha = np.cos(alpha)
|
|
19
|
+
|
|
20
|
+
def tobuffer(self):
|
|
21
|
+
buf = [self.sphi, self.cphi, self.tphi, self.salpha, self.calpha]
|
|
22
|
+
return np.array(buf, dtype=np.float64)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Sigmas(object):
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
Sig_11_0,
|
|
29
|
+
Sig_12_0,
|
|
30
|
+
Sig_13_0,
|
|
31
|
+
Sig_14_0,
|
|
32
|
+
Sig_22_0,
|
|
33
|
+
Sig_23_0,
|
|
34
|
+
Sig_24_0,
|
|
35
|
+
Sig_33_0,
|
|
36
|
+
Sig_34_0,
|
|
37
|
+
Sig_44_0,
|
|
38
|
+
):
|
|
39
|
+
|
|
40
|
+
self.Sig_11_0 = Sig_11_0
|
|
41
|
+
self.Sig_12_0 = Sig_12_0
|
|
42
|
+
self.Sig_13_0 = Sig_13_0
|
|
43
|
+
self.Sig_14_0 = Sig_14_0
|
|
44
|
+
self.Sig_22_0 = Sig_22_0
|
|
45
|
+
self.Sig_23_0 = Sig_23_0
|
|
46
|
+
self.Sig_24_0 = Sig_24_0
|
|
47
|
+
self.Sig_33_0 = Sig_33_0
|
|
48
|
+
self.Sig_34_0 = Sig_34_0
|
|
49
|
+
self.Sig_44_0 = Sig_44_0
|
|
50
|
+
|
|
51
|
+
def tobuffer(self):
|
|
52
|
+
buf = [
|
|
53
|
+
self.Sig_11_0,
|
|
54
|
+
self.Sig_12_0,
|
|
55
|
+
self.Sig_13_0,
|
|
56
|
+
self.Sig_14_0,
|
|
57
|
+
self.Sig_22_0,
|
|
58
|
+
self.Sig_23_0,
|
|
59
|
+
self.Sig_24_0,
|
|
60
|
+
self.Sig_33_0,
|
|
61
|
+
self.Sig_34_0,
|
|
62
|
+
self.Sig_44_0,
|
|
63
|
+
]
|
|
64
|
+
return np.array(buf, dtype=np.float64)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def boost_sigmas(Sigma_0, cphi):
|
|
68
|
+
Sigma_0_boosted = Sigmas(
|
|
69
|
+
Sigma_0.Sig_11_0,
|
|
70
|
+
Sigma_0.Sig_12_0 / cphi,
|
|
71
|
+
Sigma_0.Sig_13_0,
|
|
72
|
+
Sigma_0.Sig_14_0 / cphi,
|
|
73
|
+
Sigma_0.Sig_22_0 / cphi / cphi,
|
|
74
|
+
Sigma_0.Sig_23_0 / cphi,
|
|
75
|
+
Sigma_0.Sig_24_0 / cphi / cphi,
|
|
76
|
+
Sigma_0.Sig_33_0,
|
|
77
|
+
Sigma_0.Sig_34_0 / cphi,
|
|
78
|
+
Sigma_0.Sig_44_0 / cphi / cphi,
|
|
79
|
+
)
|
|
80
|
+
return Sigma_0_boosted
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def int_to_float64arr(val):
|
|
84
|
+
temp = np.zeros(1, (np.float64, {"i64": ("i8", 0)}))
|
|
85
|
+
temp["i64"][0] = val
|
|
86
|
+
return temp
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class BB6D_Data(object):
|
|
90
|
+
def __init__(
|
|
91
|
+
self,
|
|
92
|
+
q_part,
|
|
93
|
+
parboost,
|
|
94
|
+
Sigmas_0_star,
|
|
95
|
+
N_slices,
|
|
96
|
+
N_part_per_slice,
|
|
97
|
+
x_slices_star,
|
|
98
|
+
y_slices_star,
|
|
99
|
+
sigma_slices_star,
|
|
100
|
+
min_sigma_diff,
|
|
101
|
+
threshold_singular,
|
|
102
|
+
delta_x,
|
|
103
|
+
delta_y,
|
|
104
|
+
x_CO,
|
|
105
|
+
px_CO,
|
|
106
|
+
y_CO,
|
|
107
|
+
py_CO,
|
|
108
|
+
sigma_CO,
|
|
109
|
+
delta_CO,
|
|
110
|
+
Dx_sub,
|
|
111
|
+
Dpx_sub,
|
|
112
|
+
Dy_sub,
|
|
113
|
+
Dpy_sub,
|
|
114
|
+
Dsigma_sub,
|
|
115
|
+
Ddelta_sub,
|
|
116
|
+
enabled,
|
|
117
|
+
):
|
|
118
|
+
|
|
119
|
+
self.q_part = q_part
|
|
120
|
+
self.parboost = parboost
|
|
121
|
+
self.Sigmas_0_star = Sigmas_0_star
|
|
122
|
+
self.min_sigma_diff = min_sigma_diff
|
|
123
|
+
self.threshold_singular = threshold_singular
|
|
124
|
+
self.N_slices = N_slices
|
|
125
|
+
self.N_part_per_slice = N_part_per_slice
|
|
126
|
+
self.x_slices_star = x_slices_star
|
|
127
|
+
self.y_slices_star = y_slices_star
|
|
128
|
+
self.sigma_slices_star = sigma_slices_star
|
|
129
|
+
|
|
130
|
+
self.delta_x = delta_x
|
|
131
|
+
self.delta_y = delta_y
|
|
132
|
+
self.x_CO = x_CO
|
|
133
|
+
self.px_CO = px_CO
|
|
134
|
+
self.y_CO = y_CO
|
|
135
|
+
self.py_CO = py_CO
|
|
136
|
+
self.sigma_CO = sigma_CO
|
|
137
|
+
self.delta_CO = delta_CO
|
|
138
|
+
self.Dx_sub = Dx_sub
|
|
139
|
+
self.Dpx_sub = Dpx_sub
|
|
140
|
+
self.Dy_sub = Dy_sub
|
|
141
|
+
self.Dpy_sub = Dpy_sub
|
|
142
|
+
self.Dsigma_sub = Dsigma_sub
|
|
143
|
+
self.Ddelta_sub = Ddelta_sub
|
|
144
|
+
|
|
145
|
+
self.enabled = enabled
|
|
146
|
+
|
|
147
|
+
def tobuffer(self):
|
|
148
|
+
|
|
149
|
+
buffer_list = []
|
|
150
|
+
# Buffers corresponding to BB6D struct
|
|
151
|
+
buffer_list.append(np.array([self.q_part], dtype=np.float64))
|
|
152
|
+
buffer_list.append(self.parboost.tobuffer())
|
|
153
|
+
buffer_list.append(self.Sigmas_0_star.tobuffer())
|
|
154
|
+
buffer_list.append(np.array([self.min_sigma_diff], dtype=np.float64))
|
|
155
|
+
buffer_list.append(
|
|
156
|
+
np.array([self.threshold_singular], dtype=np.float64)
|
|
157
|
+
)
|
|
158
|
+
buffer_list.append(int_to_float64arr(self.N_slices))
|
|
159
|
+
|
|
160
|
+
buffer_list.append(np.array([self.delta_x], dtype=np.float64))
|
|
161
|
+
buffer_list.append(np.array([self.delta_y], dtype=np.float64))
|
|
162
|
+
buffer_list.append(np.array([self.x_CO], dtype=np.float64))
|
|
163
|
+
buffer_list.append(np.array([self.px_CO], dtype=np.float64))
|
|
164
|
+
buffer_list.append(np.array([self.y_CO], dtype=np.float64))
|
|
165
|
+
buffer_list.append(np.array([self.py_CO], dtype=np.float64))
|
|
166
|
+
buffer_list.append(np.array([self.sigma_CO], dtype=np.float64))
|
|
167
|
+
buffer_list.append(np.array([self.delta_CO], dtype=np.float64))
|
|
168
|
+
buffer_list.append(np.array([self.Dx_sub], dtype=np.float64))
|
|
169
|
+
buffer_list.append(np.array([self.Dpx_sub], dtype=np.float64))
|
|
170
|
+
buffer_list.append(np.array([self.Dy_sub], dtype=np.float64))
|
|
171
|
+
buffer_list.append(np.array([self.Dpy_sub], dtype=np.float64))
|
|
172
|
+
buffer_list.append(np.array([self.Dsigma_sub], dtype=np.float64))
|
|
173
|
+
buffer_list.append(np.array([self.Ddelta_sub], dtype=np.float64))
|
|
174
|
+
buffer_list.append(
|
|
175
|
+
int_to_float64arr({True: 1, False: 0}[self.enabled])
|
|
176
|
+
)
|
|
177
|
+
|
|
178
|
+
buffer_list.append(int_to_float64arr(3)) # offset to N_part_per_slice
|
|
179
|
+
# offset to x_slices_star
|
|
180
|
+
buffer_list.append(int_to_float64arr(2 + self.N_slices))
|
|
181
|
+
# offset to y_slices_star
|
|
182
|
+
buffer_list.append(int_to_float64arr(1 + 2 * self.N_slices))
|
|
183
|
+
# offset to sigma_slices_star
|
|
184
|
+
buffer_list.append(int_to_float64arr(0 + 3 * self.N_slices))
|
|
185
|
+
|
|
186
|
+
# Buffers corresponding to arrays
|
|
187
|
+
buffer_list.append(np.array(self.N_part_per_slice, dtype=np.float64))
|
|
188
|
+
buffer_list.append(np.array(self.x_slices_star, dtype=np.float64))
|
|
189
|
+
buffer_list.append(np.array(self.y_slices_star, dtype=np.float64))
|
|
190
|
+
buffer_list.append(np.array(self.sigma_slices_star, dtype=np.float64))
|
|
191
|
+
|
|
192
|
+
buf = np.concatenate(buffer_list)
|
|
193
|
+
|
|
194
|
+
return buf
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
def BB6D_init(
|
|
198
|
+
q_part,
|
|
199
|
+
phi,
|
|
200
|
+
alpha,
|
|
201
|
+
delta_x,
|
|
202
|
+
delta_y,
|
|
203
|
+
N_part_per_slice,
|
|
204
|
+
z_slices,
|
|
205
|
+
Sig_11_0,
|
|
206
|
+
Sig_12_0,
|
|
207
|
+
Sig_13_0,
|
|
208
|
+
Sig_14_0,
|
|
209
|
+
Sig_22_0,
|
|
210
|
+
Sig_23_0,
|
|
211
|
+
Sig_24_0,
|
|
212
|
+
Sig_33_0,
|
|
213
|
+
Sig_34_0,
|
|
214
|
+
Sig_44_0,
|
|
215
|
+
x_CO,
|
|
216
|
+
px_CO,
|
|
217
|
+
y_CO,
|
|
218
|
+
py_CO,
|
|
219
|
+
sigma_CO,
|
|
220
|
+
delta_CO,
|
|
221
|
+
min_sigma_diff,
|
|
222
|
+
threshold_singular,
|
|
223
|
+
Dx_sub,
|
|
224
|
+
Dpx_sub,
|
|
225
|
+
Dy_sub,
|
|
226
|
+
Dpy_sub,
|
|
227
|
+
Dsigma_sub,
|
|
228
|
+
Ddelta_sub,
|
|
229
|
+
enabled,
|
|
230
|
+
):
|
|
231
|
+
|
|
232
|
+
assert len(N_part_per_slice) == len(z_slices)
|
|
233
|
+
|
|
234
|
+
# Prepare data for Lorentz transformation
|
|
235
|
+
parboost = ParBoost(phi=phi, alpha=alpha)
|
|
236
|
+
|
|
237
|
+
# Prepare data with strong beam shape
|
|
238
|
+
Sigmas_0 = Sigmas(
|
|
239
|
+
Sig_11_0,
|
|
240
|
+
Sig_12_0,
|
|
241
|
+
Sig_13_0,
|
|
242
|
+
Sig_14_0,
|
|
243
|
+
Sig_22_0,
|
|
244
|
+
Sig_23_0,
|
|
245
|
+
Sig_24_0,
|
|
246
|
+
Sig_33_0,
|
|
247
|
+
Sig_34_0,
|
|
248
|
+
Sig_44_0,
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
# Boost strong beam shape
|
|
252
|
+
Sigmas_0_star = boost_sigmas(Sigmas_0, parboost.cphi)
|
|
253
|
+
|
|
254
|
+
# Sort according to z, head at the first position in the arrays
|
|
255
|
+
ind_sorted = np.argsort(z_slices)[::-1]
|
|
256
|
+
z_slices = np.take(z_slices, ind_sorted)
|
|
257
|
+
N_part_per_slice = np.take(N_part_per_slice, ind_sorted)
|
|
258
|
+
|
|
259
|
+
# By boosting the strong z and all zeros, I get the transverse coordinates
|
|
260
|
+
# of the strong beam in the ref system of the weak
|
|
261
|
+
boost_vect = np.vectorize(boost.boost, excluded="parboost")
|
|
262
|
+
(
|
|
263
|
+
x_slices_star,
|
|
264
|
+
px_slices_star,
|
|
265
|
+
y_slices_star,
|
|
266
|
+
py_slices_star,
|
|
267
|
+
sigma_slices_star,
|
|
268
|
+
delta_slices_star,
|
|
269
|
+
) = boost_vect(
|
|
270
|
+
x=0 * z_slices,
|
|
271
|
+
px=0 * z_slices,
|
|
272
|
+
y=0 * z_slices,
|
|
273
|
+
py=0 * z_slices,
|
|
274
|
+
sigma=z_slices,
|
|
275
|
+
delta=0 * z_slices,
|
|
276
|
+
parboost=parboost,
|
|
277
|
+
)
|
|
278
|
+
|
|
279
|
+
N_slices = len(z_slices)
|
|
280
|
+
|
|
281
|
+
bb6d_data = BB6D_Data(
|
|
282
|
+
q_part,
|
|
283
|
+
parboost,
|
|
284
|
+
Sigmas_0_star,
|
|
285
|
+
N_slices,
|
|
286
|
+
N_part_per_slice,
|
|
287
|
+
x_slices_star,
|
|
288
|
+
y_slices_star,
|
|
289
|
+
sigma_slices_star,
|
|
290
|
+
min_sigma_diff,
|
|
291
|
+
threshold_singular,
|
|
292
|
+
delta_x,
|
|
293
|
+
delta_y,
|
|
294
|
+
x_CO,
|
|
295
|
+
px_CO,
|
|
296
|
+
y_CO,
|
|
297
|
+
py_CO,
|
|
298
|
+
sigma_CO,
|
|
299
|
+
delta_CO,
|
|
300
|
+
Dx_sub,
|
|
301
|
+
Dpx_sub,
|
|
302
|
+
Dy_sub,
|
|
303
|
+
Dpy_sub,
|
|
304
|
+
Dsigma_sub,
|
|
305
|
+
Ddelta_sub,
|
|
306
|
+
enabled,
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
return bb6d_data
|