xcoll 0.4.0__py3-none-any.whl → 0.5.1__py3-none-any.whl
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.
Potentially problematic release.
This version of xcoll might be problematic. Click here for more details.
- xcoll/__init__.py +2 -1
- xcoll/beam_elements/__init__.py +9 -2
- xcoll/beam_elements/absorber.py +2 -2
- xcoll/beam_elements/base.py +105 -67
- xcoll/beam_elements/blowup.py +198 -0
- xcoll/beam_elements/{collimators_src → elements_src}/black_absorber.h +21 -3
- xcoll/beam_elements/{collimators_src → elements_src}/black_crystal.h +20 -2
- xcoll/beam_elements/elements_src/blowup.h +42 -0
- xcoll/beam_elements/elements_src/emittance_monitor.h +109 -0
- xcoll/beam_elements/{collimators_src → elements_src}/everest_block.h +19 -2
- xcoll/beam_elements/{collimators_src → elements_src}/everest_collimator.h +19 -3
- xcoll/beam_elements/{collimators_src → elements_src}/everest_crystal.h +30 -9
- xcoll/beam_elements/everest.py +5 -6
- xcoll/beam_elements/monitor.py +428 -0
- xcoll/colldb.py +103 -74
- xcoll/general.py +4 -4
- xcoll/initial_distribution.py +18 -6
- xcoll/install.py +3 -1
- xcoll/interaction_record/interaction_record.py +127 -81
- xcoll/interaction_record/interaction_record_src/interaction_record.h +43 -43
- xcoll/line_tools.py +8 -9
- xcoll/lossmap.py +48 -38
- xcoll/scattering_routines/everest/amorphous.h +4 -11
- xcoll/scattering_routines/everest/channeling.h +3 -8
- xcoll/scattering_routines/everest/everest.h +4 -1
- xcoll/scattering_routines/everest/jaw.h +4 -3
- xcoll/scattering_routines/everest/materials.py +35 -15
- xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
- xcoll/scattering_routines/everest/nuclear_interaction.h +1 -1
- xcoll/scattering_routines/everest/properties.h +6 -1
- xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
- xcoll/scattering_routines/geant4/collimasim/.git +1 -0
- xcoll/scattering_routines/geant4/collimasim/.gitignore +12 -0
- xcoll/scattering_routines/geant4/collimasim/.gitmodules +3 -0
- xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +26 -0
- xcoll/scattering_routines/geant4/collimasim/README.md +21 -0
- xcoll/scattering_routines/geant4/collimasim/docs/Makefile +20 -0
- xcoll/scattering_routines/geant4/collimasim/docs/make.bat +35 -0
- xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +10 -0
- xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +59 -0
- xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +26 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +37 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +19 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +65 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +73 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +1 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +9 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +386 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +45 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +16 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +8 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +3 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +19 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +969 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +84 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +48 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +16 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +103 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +45 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +151 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +3 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +297 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +29 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +6 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +180 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +23 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +192 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +11 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +81 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +93 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +310 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +109 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +43 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +171 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +251 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +305 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +1297 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +262 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +396 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +568 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +337 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +13 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +463 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +286 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +174 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +308 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +91 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +95 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +2050 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +542 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +8 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +648 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +381 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +343 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +48 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +105 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +72 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +130 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +96 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +8 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +548 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +605 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +144 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +1432 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +213 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +2 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +65 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +709 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +1021 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +104 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +346 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +467 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +978 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +55 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +606 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +284 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +163 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +121 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +193 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +275 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +1741 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +163 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +65 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +2497 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +1879 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +103 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +375 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +747 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +88 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +11 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +52 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +12 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +6 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +21 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +482 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +63 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +41 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +56 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +155 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +503 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +208 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +275 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +73 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +33 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +279 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +143 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +85 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +179 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +151 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +91 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +85 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +19 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +12 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +26 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +25 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +216 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +163 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +286 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +536 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +107 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +248 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +227 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +202 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +84 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +210 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +550 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +473 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +84 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +21 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +28 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +39 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +46 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +6 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +41 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +35 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +41 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +10 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +165 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +53 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +238 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +126 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +141 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +117 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +41 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +50 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +69 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +42 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +348 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +771 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +47 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +22 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +23 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +326 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +15 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +148 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +272 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +119 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +51 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +5 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +285 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +12 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +265 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +397 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +520 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +49 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +94 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +125 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +331 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +153 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +284 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +107 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +257 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +412 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +517 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +102 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +92 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +233 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +360 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +472 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +593 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +524 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +441 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +103 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +267 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +73 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +59 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +235 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +146 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +189 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +82 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +560 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +651 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +500 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +253 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +452 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +318 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +342 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +291 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +131 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +318 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +144 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +29 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +66 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +44 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +22 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +9 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +510 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +408 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +117 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +70 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +86 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +257 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +44 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +23 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +39 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +64 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +402 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +233 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +276 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +214 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +3 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +65 -0
- xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +41 -0
- xcoll/scattering_routines/geant4/collimasim/pyproject.toml +8 -0
- xcoll/scattering_routines/geant4/collimasim/setup.py +144 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +403 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +100 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +763 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +118 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +8 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +63 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +142 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +556 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +6 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +24 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +1 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +1 -0
- xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +1 -0
- xcoll/scattering_routines/geant4/collimasim/tests/README.md +25 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +25 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +18 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +68 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +15 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +110 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +7 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +3 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +54 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +3 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +3 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +5 -0
- xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +51 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +65 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +59 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +102 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +75 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +74 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +84 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +159 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +99 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +78 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +88 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +80 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +97 -0
- xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +96 -0
- xcoll/scattering_routines/geometry/collimator_geometry.h +9 -10
- xcoll/scattering_routines/geometry/crystal_geometry.h +9 -6
- {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/METADATA +1 -1
- xcoll-0.5.1.dist-info/RECORD +413 -0
- xcoll/scattering_routines/fluka/build_fluka_input.py +0 -58
- xcoll-0.4.0.dist-info/RECORD +0 -126
- {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/LICENSE +0 -0
- {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/NOTICE +0 -0
- {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/WHEEL +0 -0
|
@@ -7,6 +7,22 @@
|
|
|
7
7
|
#define XCOLL_ABSORBER_CRY_H
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
/*gpufun*/
|
|
11
|
+
int8_t BlackCrystalData_get_record_impacts(BlackCrystalData el){
|
|
12
|
+
return BlackCrystalData_get__record_interactions(el) % 2;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/*gpufun*/
|
|
16
|
+
int8_t BlackCrystalData_get_record_exits(BlackCrystalData el){
|
|
17
|
+
return (BlackCrystalData_get__record_interactions(el) >> 1) % 2;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*gpufun*/
|
|
21
|
+
int8_t BlackCrystalData_get_record_scatterings(BlackCrystalData el){
|
|
22
|
+
return (BlackCrystalData_get__record_interactions(el) >> 2) % 2;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
10
26
|
/*gpufun*/
|
|
11
27
|
CrystalGeometry BlackCrystal_init_geometry(BlackCrystalData el, LocalParticle* part0, int8_t active){
|
|
12
28
|
CrystalGeometry cg = (CrystalGeometry) malloc(sizeof(CrystalGeometry_));
|
|
@@ -35,10 +51,12 @@ CrystalGeometry BlackCrystal_init_geometry(BlackCrystalData el, LocalParticle* p
|
|
|
35
51
|
// Impact table
|
|
36
52
|
cg->record = BlackCrystalData_getp_internal_record(el, part0);
|
|
37
53
|
cg->record_index = NULL;
|
|
38
|
-
cg->
|
|
54
|
+
cg->record_impacts = 0;
|
|
55
|
+
cg->record_exits = 0;
|
|
39
56
|
if (cg->record){
|
|
40
57
|
cg->record_index = InteractionRecordData_getp__index(cg->record);
|
|
41
|
-
cg->
|
|
58
|
+
cg->record_impacts = BlackCrystalData_get_record_impacts(el);
|
|
59
|
+
cg->record_exits = BlackCrystalData_get_record_exits(el);
|
|
42
60
|
}
|
|
43
61
|
// Not needed, set to zero
|
|
44
62
|
cg->miscut_angle = 0;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// copyright ############################### #
|
|
2
|
+
// This file is part of the Xcoll Package. #
|
|
3
|
+
// Copyright (c) CERN, 2024. #
|
|
4
|
+
// ######################################### #
|
|
5
|
+
|
|
6
|
+
#ifndef XCOLL_BLOWUP_H
|
|
7
|
+
#define XCOLL_BLOWUP_H
|
|
8
|
+
|
|
9
|
+
/*gpufun*/
|
|
10
|
+
void BlowUp_track_local_particle(BlowUpData el, LocalParticle* part0){
|
|
11
|
+
|
|
12
|
+
int8_t plane = BlowUpData_get__plane(el);
|
|
13
|
+
double max_kick = BlowUpData_get__max_kick(el);
|
|
14
|
+
int8_t active = BlowUpData_get__active(el);
|
|
15
|
+
int8_t individual = BlowUpData_get_use_individual_kicks(el);
|
|
16
|
+
int64_t start_at_turn = BlowUpData_get_start_at_turn(el);
|
|
17
|
+
int64_t stop_at_turn = BlowUpData_get_stop_at_turn(el);
|
|
18
|
+
|
|
19
|
+
//start_per_particle_block (part0->part)
|
|
20
|
+
if (active){
|
|
21
|
+
int64_t at_turn = LocalParticle_get_at_turn(part);
|
|
22
|
+
if (at_turn >= start_at_turn && at_turn < stop_at_turn){
|
|
23
|
+
double ran;
|
|
24
|
+
if (individual){
|
|
25
|
+
ran = (2*RandomUniform_generate(part) - 1);
|
|
26
|
+
} else {
|
|
27
|
+
ran = BlowUpData_get__rans(el, at_turn - start_at_turn);
|
|
28
|
+
}
|
|
29
|
+
double kick = max_kick * ran;
|
|
30
|
+
if (plane == 1){
|
|
31
|
+
LocalParticle_add_to_px(part, kick);
|
|
32
|
+
} else if (plane == -1){
|
|
33
|
+
LocalParticle_add_to_py(part, kick);
|
|
34
|
+
} else {
|
|
35
|
+
LocalParticle_kill_particle(part, XC_ERR_INVALID_XOFIELD);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//end_per_particle_block
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
#endif /* XCOLL_BLOWUP_H */
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// copyright ############################### #
|
|
2
|
+
// This file is part of the Xcoll Package. #
|
|
3
|
+
// Copyright (c) CERN, 2024. #
|
|
4
|
+
// ######################################### #
|
|
5
|
+
|
|
6
|
+
#ifndef XCOLL_EMITTANCE_MONITOR_H
|
|
7
|
+
#define XCOLL_EMITTANCE_MONITOR_H
|
|
8
|
+
|
|
9
|
+
#ifndef C_LIGHT
|
|
10
|
+
#define C_LIGHT 299792458.0
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
/*gpufun*/
|
|
14
|
+
void EmittanceMonitor_track_local_particle(EmittanceMonitorData el, LocalParticle* part0){
|
|
15
|
+
EmittanceMonitorData_set__cached(el, 0);
|
|
16
|
+
int64_t const start_at_turn = EmittanceMonitorData_get_start_at_turn(el);
|
|
17
|
+
int64_t const part_id_start = EmittanceMonitorData_get_part_id_start(el);
|
|
18
|
+
int64_t const part_id_end = EmittanceMonitorData_get_part_id_end(el);
|
|
19
|
+
double const frev = EmittanceMonitorData_get_frev(el);
|
|
20
|
+
double const sampling_frequency = EmittanceMonitorData_get_sampling_frequency(el);
|
|
21
|
+
|
|
22
|
+
EmittanceMonitorRecord record = EmittanceMonitorData_getp_data(el);
|
|
23
|
+
|
|
24
|
+
int64_t max_slot = EmittanceMonitorRecord_len_count(record);
|
|
25
|
+
|
|
26
|
+
int const plane_selector = EmittanceMonitorData_get__plane_selector(el);
|
|
27
|
+
int const monitor_horizontal = plane_selector % 2;
|
|
28
|
+
int const monitor_vertical = (plane_selector >> 1) % 2;
|
|
29
|
+
int const monitor_longitudinal = (plane_selector >> 2) % 2;
|
|
30
|
+
|
|
31
|
+
//start_per_particle_block(part0->part)
|
|
32
|
+
int64_t particle_id = LocalParticle_get_particle_id(part);
|
|
33
|
+
if (part_id_end < 0 || (part_id_start <= particle_id && particle_id < part_id_end)){
|
|
34
|
+
|
|
35
|
+
// zeta is the absolute path length deviation from the reference particle: zeta = (s - beta0*c*t)
|
|
36
|
+
// but without limits, i.e. it can exceed the circumference (for coasting beams)
|
|
37
|
+
// as the particle falls behind or overtakes the reference particle
|
|
38
|
+
double const zeta = LocalParticle_get_zeta(part);
|
|
39
|
+
double const beta0 = LocalParticle_get_beta0(part);
|
|
40
|
+
double const at_turn = LocalParticle_get_at_turn(part);
|
|
41
|
+
|
|
42
|
+
double x =0;
|
|
43
|
+
double px = 0;
|
|
44
|
+
double y = 0;
|
|
45
|
+
double py = 0;
|
|
46
|
+
double pzeta = 0;
|
|
47
|
+
|
|
48
|
+
// compute sample index
|
|
49
|
+
int64_t slot = round(sampling_frequency * ( (at_turn-start_at_turn)/frev - zeta/beta0/C_LIGHT ));
|
|
50
|
+
|
|
51
|
+
if (slot >= 0 && slot < max_slot){
|
|
52
|
+
/*gpuglmem*/ double *count = EmittanceMonitorRecord_getp1_count(record, slot); atomicAdd(count, 1);
|
|
53
|
+
|
|
54
|
+
if (monitor_horizontal){
|
|
55
|
+
x = LocalParticle_get_x(part);
|
|
56
|
+
px = LocalParticle_get_px(part);
|
|
57
|
+
/*gpuglmem*/ double *x_sum1 = EmittanceMonitorRecord_getp1_x_sum1(record, slot); atomicAdd(x_sum1, x);
|
|
58
|
+
/*gpuglmem*/ double *px_sum1 = EmittanceMonitorRecord_getp1_px_sum1(record, slot); atomicAdd(px_sum1, px);
|
|
59
|
+
/*gpuglmem*/ double *x_x_sum2 = EmittanceMonitorRecord_getp1_x_x_sum2(record, slot); atomicAdd(x_x_sum2, x*x);
|
|
60
|
+
/*gpuglmem*/ double *x_px_sum2 = EmittanceMonitorRecord_getp1_x_px_sum2(record, slot); atomicAdd(x_px_sum2, x*px);
|
|
61
|
+
/*gpuglmem*/ double *px_px_sum2 = EmittanceMonitorRecord_getp1_px_px_sum2(record, slot); atomicAdd(px_px_sum2, px*px);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (monitor_vertical){
|
|
65
|
+
y = LocalParticle_get_y(part);
|
|
66
|
+
py = LocalParticle_get_py(part);
|
|
67
|
+
/*gpuglmem*/ double *y_sum1 = EmittanceMonitorRecord_getp1_y_sum1(record, slot); atomicAdd(y_sum1, y);
|
|
68
|
+
/*gpuglmem*/ double *py_sum1 = EmittanceMonitorRecord_getp1_py_sum1(record, slot); atomicAdd(py_sum1, py);
|
|
69
|
+
/*gpuglmem*/ double *y_y_sum2 = EmittanceMonitorRecord_getp1_y_y_sum2(record, slot); atomicAdd(y_y_sum2, y*y);
|
|
70
|
+
/*gpuglmem*/ double *y_py_sum2 = EmittanceMonitorRecord_getp1_y_py_sum2(record, slot); atomicAdd(y_py_sum2, y*py);
|
|
71
|
+
/*gpuglmem*/ double *py_py_sum2 = EmittanceMonitorRecord_getp1_py_py_sum2(record, slot); atomicAdd(py_py_sum2, py*py);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (monitor_longitudinal){
|
|
75
|
+
double const ptau = LocalParticle_get_ptau(part);
|
|
76
|
+
pzeta = ptau/beta0;
|
|
77
|
+
/*gpuglmem*/ double *zeta_sum1 = EmittanceMonitorRecord_getp1_zeta_sum1(record, slot); atomicAdd(zeta_sum1, zeta);
|
|
78
|
+
/*gpuglmem*/ double *pzeta_sum1 = EmittanceMonitorRecord_getp1_pzeta_sum1(record, slot); atomicAdd(pzeta_sum1, pzeta);
|
|
79
|
+
/*gpuglmem*/ double *zeta_zeta_sum2 = EmittanceMonitorRecord_getp1_zeta_zeta_sum2(record, slot); atomicAdd(zeta_zeta_sum2, zeta*zeta);
|
|
80
|
+
/*gpuglmem*/ double *zeta_pzeta_sum2 = EmittanceMonitorRecord_getp1_zeta_pzeta_sum2(record, slot); atomicAdd(zeta_pzeta_sum2, zeta*pzeta);
|
|
81
|
+
/*gpuglmem*/ double *pzeta_pzeta_sum2 = EmittanceMonitorRecord_getp1_pzeta_pzeta_sum2(record, slot); atomicAdd(pzeta_pzeta_sum2, pzeta*pzeta);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (monitor_horizontal && monitor_vertical){
|
|
85
|
+
/*gpuglmem*/ double *x_y_sum2 = EmittanceMonitorRecord_getp1_x_y_sum2(record, slot); atomicAdd(x_y_sum2, x*y);
|
|
86
|
+
/*gpuglmem*/ double *x_py_sum2 = EmittanceMonitorRecord_getp1_x_py_sum2(record, slot); atomicAdd(x_py_sum2, x*py);
|
|
87
|
+
/*gpuglmem*/ double *px_y_sum2 = EmittanceMonitorRecord_getp1_px_y_sum2(record, slot); atomicAdd(px_y_sum2, px*y);
|
|
88
|
+
/*gpuglmem*/ double *px_py_sum2 = EmittanceMonitorRecord_getp1_px_py_sum2(record, slot); atomicAdd(px_py_sum2, px*py);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (monitor_horizontal && monitor_longitudinal){
|
|
92
|
+
/*gpuglmem*/ double *x_zeta_sum2 = EmittanceMonitorRecord_getp1_x_zeta_sum2(record, slot); atomicAdd(x_zeta_sum2, x*zeta);
|
|
93
|
+
/*gpuglmem*/ double *x_pzeta_sum2 = EmittanceMonitorRecord_getp1_x_pzeta_sum2(record, slot); atomicAdd(x_pzeta_sum2, x*pzeta);
|
|
94
|
+
/*gpuglmem*/ double *px_zeta_sum2 = EmittanceMonitorRecord_getp1_px_zeta_sum2(record, slot); atomicAdd(px_zeta_sum2, px*zeta);
|
|
95
|
+
/*gpuglmem*/ double *px_pzeta_sum2 = EmittanceMonitorRecord_getp1_px_pzeta_sum2(record, slot); atomicAdd(px_pzeta_sum2, px*pzeta);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (monitor_vertical && monitor_longitudinal){
|
|
99
|
+
/*gpuglmem*/ double *y_zeta_sum2 = EmittanceMonitorRecord_getp1_y_zeta_sum2(record, slot); atomicAdd(y_zeta_sum2, y*zeta);
|
|
100
|
+
/*gpuglmem*/ double *y_pzeta_sum2 = EmittanceMonitorRecord_getp1_y_pzeta_sum2(record, slot); atomicAdd(y_pzeta_sum2, y*pzeta);
|
|
101
|
+
/*gpuglmem*/ double *py_zeta_sum2 = EmittanceMonitorRecord_getp1_py_zeta_sum2(record, slot); atomicAdd(py_zeta_sum2, py*zeta);
|
|
102
|
+
/*gpuglmem*/ double *py_pzeta_sum2 = EmittanceMonitorRecord_getp1_py_pzeta_sum2(record, slot); atomicAdd(py_pzeta_sum2, py*pzeta);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//end_per_particle_block
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#endif /* XCOLL_EMITTANCE_MONITOR_H */
|
|
@@ -9,6 +9,21 @@
|
|
|
9
9
|
#include <stdio.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
/*gpufun*/
|
|
13
|
+
int8_t EverestBlockData_get_record_impacts(EverestBlockData el){
|
|
14
|
+
return EverestBlockData_get__record_interactions(el) % 2;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/*gpufun*/
|
|
18
|
+
int8_t EverestBlockData_get_record_exits(EverestBlockData el){
|
|
19
|
+
return (EverestBlockData_get__record_interactions(el) >> 1) % 2;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/*gpufun*/
|
|
23
|
+
int8_t EverestBlockData_get_record_scatterings(EverestBlockData el){
|
|
24
|
+
return (EverestBlockData_get__record_interactions(el) >> 2) % 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
12
27
|
/*gpufun*/
|
|
13
28
|
void EverestBlock_set_material(EverestBlockData el){
|
|
14
29
|
MaterialData material = EverestBlockData_getp__material(el);
|
|
@@ -38,8 +53,10 @@ EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int
|
|
|
38
53
|
// Impact table
|
|
39
54
|
coll->record = EverestBlockData_getp_internal_record(el, part0);
|
|
40
55
|
coll->record_index = NULL;
|
|
56
|
+
coll->record_scatterings = 0;
|
|
41
57
|
if (coll->record){
|
|
42
58
|
coll->record_index = InteractionRecordData_getp__index(coll->record);
|
|
59
|
+
coll->record_scatterings = EverestBlockData_get_record_scatterings(el);
|
|
43
60
|
}
|
|
44
61
|
}
|
|
45
62
|
|
|
@@ -68,7 +85,8 @@ EverestData EverestBlock_init_data(LocalParticle* part, EverestCollData coll){
|
|
|
68
85
|
/*gpufun*/
|
|
69
86
|
void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0) {
|
|
70
87
|
int8_t active = EverestBlockData_get__tracking(el);
|
|
71
|
-
|
|
88
|
+
active *= EverestBlockData_get_active(el);
|
|
89
|
+
double const length = EverestBlockData_get_length(el);
|
|
72
90
|
|
|
73
91
|
// Initialise collimator data
|
|
74
92
|
// TODO: we want this to happen before tracking (instead of every turn), as a separate kernel
|
|
@@ -107,7 +125,6 @@ void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0
|
|
|
107
125
|
EverestData everest = EverestBlock_init_data(part, coll);
|
|
108
126
|
energy = jaw(everest, part, energy, length, 0);
|
|
109
127
|
free(everest);
|
|
110
|
-
|
|
111
128
|
LocalParticle_add_to_s(part, s_block);
|
|
112
129
|
|
|
113
130
|
LocalParticle_set_zeta(part, zeta_in);
|
|
@@ -9,6 +9,21 @@
|
|
|
9
9
|
#include <stdio.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
/*gpufun*/
|
|
13
|
+
int8_t EverestCollimatorData_get_record_impacts(EverestCollimatorData el){
|
|
14
|
+
return EverestCollimatorData_get__record_interactions(el) % 2;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/*gpufun*/
|
|
18
|
+
int8_t EverestCollimatorData_get_record_exits(EverestCollimatorData el){
|
|
19
|
+
return (EverestCollimatorData_get__record_interactions(el) >> 1) % 2;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/*gpufun*/
|
|
23
|
+
int8_t EverestCollimatorData_get_record_scatterings(EverestCollimatorData el){
|
|
24
|
+
return (EverestCollimatorData_get__record_interactions(el) >> 2) % 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
12
27
|
void EverestCollimator_set_material(EverestCollimatorData el){
|
|
13
28
|
MaterialData material = EverestCollimatorData_getp__material(el);
|
|
14
29
|
RandomRutherfordData rng = EverestCollimatorData_getp_rutherford_rng(el);
|
|
@@ -55,10 +70,12 @@ CollimatorGeometry EverestCollimator_init_geometry(EverestCollimatorData el, Loc
|
|
|
55
70
|
// Impact table
|
|
56
71
|
cg->record = EverestCollimatorData_getp_internal_record(el, part0);
|
|
57
72
|
cg->record_index = NULL;
|
|
58
|
-
cg->
|
|
73
|
+
cg->record_impacts = 0;
|
|
74
|
+
cg->record_exits = 0;
|
|
59
75
|
if (cg->record){
|
|
60
76
|
cg->record_index = InteractionRecordData_getp__index(cg->record);
|
|
61
|
-
cg->
|
|
77
|
+
cg->record_impacts = EverestCollimatorData_get_record_impacts(el);
|
|
78
|
+
cg->record_exits = EverestCollimatorData_get_record_exits(el);
|
|
62
79
|
}
|
|
63
80
|
}
|
|
64
81
|
|
|
@@ -106,7 +123,6 @@ EverestCollData EverestCollimator_init(EverestCollimatorData el, LocalParticle*
|
|
|
106
123
|
if (coll->record){
|
|
107
124
|
coll->record_index = InteractionRecordData_getp__index(coll->record);
|
|
108
125
|
coll->record_scatterings = EverestCollimatorData_get_record_scatterings(el);
|
|
109
|
-
coll->record_touches = EverestCollimatorData_get_record_touches(el);
|
|
110
126
|
}
|
|
111
127
|
}
|
|
112
128
|
|
|
@@ -9,6 +9,22 @@
|
|
|
9
9
|
#include <stdio.h>
|
|
10
10
|
|
|
11
11
|
|
|
12
|
+
/*gpufun*/
|
|
13
|
+
int8_t EverestCrystalData_get_record_impacts(EverestCrystalData el){
|
|
14
|
+
return EverestCrystalData_get__record_interactions(el) % 2;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/*gpufun*/
|
|
18
|
+
int8_t EverestCrystalData_get_record_exits(EverestCrystalData el){
|
|
19
|
+
return (EverestCrystalData_get__record_interactions(el) >> 1) % 2;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/*gpufun*/
|
|
23
|
+
int8_t EverestCrystalData_get_record_scatterings(EverestCrystalData el){
|
|
24
|
+
return (EverestCrystalData_get__record_interactions(el) >> 2) % 2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
12
28
|
void EverestCrystal_set_material(EverestCrystalData el){
|
|
13
29
|
CrystalMaterialData material = EverestCrystalData_getp__material(el);
|
|
14
30
|
RandomRutherfordData rng = EverestCrystalData_getp_rutherford_rng(el);
|
|
@@ -53,19 +69,23 @@ CrystalGeometry EverestCrystal_init_geometry(EverestCrystalData el, LocalParticl
|
|
|
53
69
|
// Miscut centre
|
|
54
70
|
cg->s_P = -R*sin(cg->miscut_angle);
|
|
55
71
|
cg->x_P = R*cos(cg->miscut_angle);
|
|
56
|
-
|
|
72
|
+
if (cg->side == 1 && R < 0){
|
|
73
|
+
// If R<0, a left-sided crystal bends towards the beam
|
|
74
|
+
cg->x_P = cg->x_P + cg->width;
|
|
75
|
+
cg->x_B = cg->x_B + cg->width;
|
|
76
|
+
} else if (cg->side == -1 && R > 0){
|
|
77
|
+
// If R>0, a right-sided crystal bends towards the beam
|
|
78
|
+
cg->x_P = cg->x_P - cg->width;
|
|
79
|
+
cg->x_B = cg->x_B - cg->width;
|
|
80
|
+
}
|
|
57
81
|
if (cg->side == -1){
|
|
82
|
+
// Mirror the crystal geometry
|
|
58
83
|
cg->bending_radius = -cg->bending_radius;
|
|
59
84
|
cg->bending_angle = -cg->bending_angle;
|
|
60
85
|
cg->miscut_angle = -cg->miscut_angle;
|
|
61
86
|
cg->x_P = -cg->x_P;
|
|
62
87
|
cg->x_B = -cg->x_B;
|
|
63
88
|
}
|
|
64
|
-
if (R < 0){
|
|
65
|
-
// If R<0, a left-sided crystal bends towards the beam
|
|
66
|
-
cg->x_P = cg->x_P + cg->width;
|
|
67
|
-
cg->x_B = cg->x_B + cg->width;
|
|
68
|
-
}
|
|
69
89
|
// From here on, crystal geometry parameters can always be treated as left-sided.
|
|
70
90
|
// Note that the segments are not mirrored, which is fine as get_s_of_first_crossing_with_vlimit
|
|
71
91
|
// is absolute (not in the jaw reference frame). It is only after a hit is registered, that we
|
|
@@ -80,10 +100,12 @@ CrystalGeometry EverestCrystal_init_geometry(EverestCrystalData el, LocalParticl
|
|
|
80
100
|
// Impact table
|
|
81
101
|
cg->record = EverestCrystalData_getp_internal_record(el, part0);
|
|
82
102
|
cg->record_index = NULL;
|
|
83
|
-
cg->
|
|
103
|
+
cg->record_impacts = 0;
|
|
104
|
+
cg->record_exits = 0;
|
|
84
105
|
if (cg->record){
|
|
85
106
|
cg->record_index = InteractionRecordData_getp__index(cg->record);
|
|
86
|
-
cg->
|
|
107
|
+
cg->record_impacts = EverestCrystalData_get_record_impacts(el);
|
|
108
|
+
cg->record_exits = EverestCrystalData_get_record_exits(el);
|
|
87
109
|
}
|
|
88
110
|
}
|
|
89
111
|
|
|
@@ -129,7 +151,6 @@ EverestCollData EverestCrystal_init(EverestCrystalData el, LocalParticle* part0,
|
|
|
129
151
|
if (coll->record){
|
|
130
152
|
coll->record_index = InteractionRecordData_getp__index(coll->record);
|
|
131
153
|
coll->record_scatterings = EverestCrystalData_get_record_scatterings(el);
|
|
132
|
-
coll->record_touches = EverestCrystalData_get_record_touches(el);
|
|
133
154
|
}
|
|
134
155
|
}
|
|
135
156
|
return coll;
|
xcoll/beam_elements/everest.py
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
import numpy as np
|
|
7
7
|
|
|
8
8
|
import xobjects as xo
|
|
9
|
-
import xpart as xp
|
|
10
9
|
import xtrack as xt
|
|
11
10
|
|
|
12
11
|
from .base import BaseBlock, BaseCollimator, BaseCrystal, InvalidXcoll
|
|
@@ -42,7 +41,7 @@ class EverestBlock(BaseBlock):
|
|
|
42
41
|
_depends_on = [BaseBlock, EverestEngine]
|
|
43
42
|
|
|
44
43
|
_extra_c_sources = [
|
|
45
|
-
_pkg_root.joinpath('beam_elements','
|
|
44
|
+
_pkg_root.joinpath('beam_elements','elements_src','everest_block.h')
|
|
46
45
|
]
|
|
47
46
|
|
|
48
47
|
_kernels = {
|
|
@@ -106,7 +105,7 @@ class EverestCollimator(BaseCollimator):
|
|
|
106
105
|
_depends_on = [BaseCollimator, EverestEngine]
|
|
107
106
|
|
|
108
107
|
_extra_c_sources = [
|
|
109
|
-
_pkg_root.joinpath('beam_elements','
|
|
108
|
+
_pkg_root.joinpath('beam_elements','elements_src','everest_collimator.h')
|
|
110
109
|
]
|
|
111
110
|
|
|
112
111
|
_kernels = {
|
|
@@ -146,7 +145,7 @@ class EverestCollimator(BaseCollimator):
|
|
|
146
145
|
|
|
147
146
|
def get_backtrack_element(self, _context=None, _buffer=None, _offset=None):
|
|
148
147
|
return InvalidXcoll(length=-self.length, _context=_context,
|
|
149
|
-
|
|
148
|
+
_buffer=_buffer, _offset=_offset)
|
|
150
149
|
|
|
151
150
|
|
|
152
151
|
|
|
@@ -173,7 +172,7 @@ class EverestCrystal(BaseCrystal):
|
|
|
173
172
|
_depends_on = [BaseCrystal, EverestEngine]
|
|
174
173
|
|
|
175
174
|
_extra_c_sources = [
|
|
176
|
-
_pkg_root.joinpath('beam_elements','
|
|
175
|
+
_pkg_root.joinpath('beam_elements','elements_src','everest_crystal.h')
|
|
177
176
|
]
|
|
178
177
|
|
|
179
178
|
_kernels = {
|
|
@@ -240,6 +239,6 @@ class EverestCrystal(BaseCrystal):
|
|
|
240
239
|
|
|
241
240
|
def get_backtrack_element(self, _context=None, _buffer=None, _offset=None):
|
|
242
241
|
return InvalidXcoll(length=-self.length, _context=_context,
|
|
243
|
-
|
|
242
|
+
_buffer=_buffer, _offset=_offset)
|
|
244
243
|
|
|
245
244
|
|