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.

Files changed (324) hide show
  1. xcoll/__init__.py +2 -1
  2. xcoll/beam_elements/__init__.py +9 -2
  3. xcoll/beam_elements/absorber.py +2 -2
  4. xcoll/beam_elements/base.py +105 -67
  5. xcoll/beam_elements/blowup.py +198 -0
  6. xcoll/beam_elements/{collimators_src → elements_src}/black_absorber.h +21 -3
  7. xcoll/beam_elements/{collimators_src → elements_src}/black_crystal.h +20 -2
  8. xcoll/beam_elements/elements_src/blowup.h +42 -0
  9. xcoll/beam_elements/elements_src/emittance_monitor.h +109 -0
  10. xcoll/beam_elements/{collimators_src → elements_src}/everest_block.h +19 -2
  11. xcoll/beam_elements/{collimators_src → elements_src}/everest_collimator.h +19 -3
  12. xcoll/beam_elements/{collimators_src → elements_src}/everest_crystal.h +30 -9
  13. xcoll/beam_elements/everest.py +5 -6
  14. xcoll/beam_elements/monitor.py +428 -0
  15. xcoll/colldb.py +103 -74
  16. xcoll/general.py +4 -4
  17. xcoll/initial_distribution.py +18 -6
  18. xcoll/install.py +3 -1
  19. xcoll/interaction_record/interaction_record.py +127 -81
  20. xcoll/interaction_record/interaction_record_src/interaction_record.h +43 -43
  21. xcoll/line_tools.py +8 -9
  22. xcoll/lossmap.py +48 -38
  23. xcoll/scattering_routines/everest/amorphous.h +4 -11
  24. xcoll/scattering_routines/everest/channeling.h +3 -8
  25. xcoll/scattering_routines/everest/everest.h +4 -1
  26. xcoll/scattering_routines/everest/jaw.h +4 -3
  27. xcoll/scattering_routines/everest/materials.py +35 -15
  28. xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  29. xcoll/scattering_routines/everest/nuclear_interaction.h +1 -1
  30. xcoll/scattering_routines/everest/properties.h +6 -1
  31. xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  32. xcoll/scattering_routines/geant4/collimasim/.git +1 -0
  33. xcoll/scattering_routines/geant4/collimasim/.gitignore +12 -0
  34. xcoll/scattering_routines/geant4/collimasim/.gitmodules +3 -0
  35. xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +26 -0
  36. xcoll/scattering_routines/geant4/collimasim/README.md +21 -0
  37. xcoll/scattering_routines/geant4/collimasim/docs/Makefile +20 -0
  38. xcoll/scattering_routines/geant4/collimasim/docs/make.bat +35 -0
  39. xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +10 -0
  40. xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +59 -0
  41. xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +26 -0
  42. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +37 -0
  43. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +19 -0
  44. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +65 -0
  45. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +73 -0
  46. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +1 -0
  47. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +9 -0
  48. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +386 -0
  49. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +45 -0
  50. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +8 -0
  51. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +16 -0
  52. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +8 -0
  53. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +3 -0
  54. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +19 -0
  55. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +969 -0
  56. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +84 -0
  57. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +48 -0
  58. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +16 -0
  59. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +103 -0
  60. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +45 -0
  61. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +151 -0
  62. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +3 -0
  63. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +297 -0
  64. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +29 -0
  65. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +6 -0
  66. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +180 -0
  67. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +23 -0
  68. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +192 -0
  69. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +11 -0
  70. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +81 -0
  71. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +93 -0
  72. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +310 -0
  73. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +109 -0
  74. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +43 -0
  75. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +171 -0
  76. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +251 -0
  77. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +305 -0
  78. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +1297 -0
  79. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +262 -0
  80. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +396 -0
  81. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +568 -0
  82. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +337 -0
  83. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +13 -0
  84. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +463 -0
  85. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +286 -0
  86. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +155 -0
  87. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +174 -0
  88. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +308 -0
  89. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +91 -0
  90. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +95 -0
  91. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +2050 -0
  92. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +542 -0
  93. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +8 -0
  94. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +648 -0
  95. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +381 -0
  96. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +343 -0
  97. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +48 -0
  98. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +105 -0
  99. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +72 -0
  100. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  101. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  102. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +427 -0
  103. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  104. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +427 -0
  105. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +130 -0
  106. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +96 -0
  107. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +8 -0
  108. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +548 -0
  109. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +605 -0
  110. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +144 -0
  111. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +1432 -0
  112. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +213 -0
  113. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +2 -0
  114. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +65 -0
  115. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +709 -0
  116. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +1021 -0
  117. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +104 -0
  118. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +346 -0
  119. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +467 -0
  120. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +978 -0
  121. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +55 -0
  122. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +606 -0
  123. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +284 -0
  124. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +163 -0
  125. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +121 -0
  126. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +193 -0
  127. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +275 -0
  128. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +1741 -0
  129. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +163 -0
  130. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +65 -0
  131. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +2497 -0
  132. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +1879 -0
  133. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +103 -0
  134. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +375 -0
  135. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +747 -0
  136. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +88 -0
  137. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +11 -0
  138. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +52 -0
  139. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +12 -0
  140. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +6 -0
  141. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +21 -0
  142. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  143. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +482 -0
  144. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +63 -0
  145. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +41 -0
  146. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +56 -0
  147. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +155 -0
  148. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +503 -0
  149. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +208 -0
  150. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +275 -0
  151. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +73 -0
  152. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +33 -0
  153. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  154. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +279 -0
  155. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  156. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +143 -0
  157. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +85 -0
  158. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +179 -0
  159. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +151 -0
  160. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +91 -0
  161. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +85 -0
  162. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +19 -0
  163. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +12 -0
  164. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +26 -0
  165. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +25 -0
  166. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +216 -0
  167. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +163 -0
  168. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +286 -0
  169. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +536 -0
  170. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +107 -0
  171. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +248 -0
  172. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +227 -0
  173. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +202 -0
  174. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +84 -0
  175. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +210 -0
  176. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +550 -0
  177. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +473 -0
  178. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +84 -0
  179. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +21 -0
  180. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +28 -0
  181. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +39 -0
  182. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +46 -0
  183. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +6 -0
  184. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +41 -0
  185. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +35 -0
  186. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +41 -0
  187. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +10 -0
  188. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +165 -0
  189. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +53 -0
  190. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +238 -0
  191. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +126 -0
  192. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +141 -0
  193. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +117 -0
  194. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +41 -0
  195. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +50 -0
  196. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +69 -0
  197. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +42 -0
  198. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +348 -0
  199. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +771 -0
  200. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +47 -0
  201. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +22 -0
  202. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +23 -0
  203. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +326 -0
  204. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +15 -0
  205. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +148 -0
  206. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +272 -0
  207. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +119 -0
  208. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +51 -0
  209. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +5 -0
  210. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +285 -0
  211. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +12 -0
  212. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +265 -0
  213. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +397 -0
  214. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +520 -0
  215. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +49 -0
  216. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +94 -0
  217. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +125 -0
  218. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +331 -0
  219. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +153 -0
  220. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +284 -0
  221. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +107 -0
  222. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +257 -0
  223. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +412 -0
  224. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +517 -0
  225. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +102 -0
  226. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +92 -0
  227. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +233 -0
  228. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +360 -0
  229. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +472 -0
  230. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +593 -0
  231. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +524 -0
  232. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +441 -0
  233. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +103 -0
  234. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +267 -0
  235. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +73 -0
  236. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +59 -0
  237. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +235 -0
  238. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +146 -0
  239. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +189 -0
  240. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +82 -0
  241. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +560 -0
  242. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +651 -0
  243. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +500 -0
  244. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +253 -0
  245. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +452 -0
  246. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +318 -0
  247. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +342 -0
  248. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +291 -0
  249. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +131 -0
  250. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +318 -0
  251. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +144 -0
  252. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +29 -0
  253. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +66 -0
  254. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +44 -0
  255. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +22 -0
  256. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +9 -0
  257. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +510 -0
  258. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +408 -0
  259. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +140 -0
  260. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +117 -0
  261. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +70 -0
  262. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +86 -0
  263. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +257 -0
  264. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +44 -0
  265. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +23 -0
  266. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +39 -0
  267. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +64 -0
  268. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +402 -0
  269. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +233 -0
  270. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +276 -0
  271. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +214 -0
  272. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +3 -0
  273. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +65 -0
  274. xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +41 -0
  275. xcoll/scattering_routines/geant4/collimasim/pyproject.toml +8 -0
  276. xcoll/scattering_routines/geant4/collimasim/setup.py +144 -0
  277. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +403 -0
  278. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +100 -0
  279. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +763 -0
  280. xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +118 -0
  281. xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +8 -0
  282. xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +63 -0
  283. xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +142 -0
  284. xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +556 -0
  285. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +6 -0
  286. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +24 -0
  287. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +1 -0
  288. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +1 -0
  289. xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +1 -0
  290. xcoll/scattering_routines/geant4/collimasim/tests/README.md +25 -0
  291. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +25 -0
  292. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +18 -0
  293. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +68 -0
  294. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +15 -0
  295. xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +110 -0
  296. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +7 -0
  297. xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +3 -0
  298. xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +54 -0
  299. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +3 -0
  300. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +3 -0
  301. xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +5 -0
  302. xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +51 -0
  303. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +65 -0
  304. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +59 -0
  305. xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +102 -0
  306. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +75 -0
  307. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +74 -0
  308. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +84 -0
  309. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +159 -0
  310. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +99 -0
  311. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +78 -0
  312. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +88 -0
  313. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +80 -0
  314. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +97 -0
  315. xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +96 -0
  316. xcoll/scattering_routines/geometry/collimator_geometry.h +9 -10
  317. xcoll/scattering_routines/geometry/crystal_geometry.h +9 -6
  318. {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/METADATA +1 -1
  319. xcoll-0.5.1.dist-info/RECORD +413 -0
  320. xcoll/scattering_routines/fluka/build_fluka_input.py +0 -58
  321. xcoll-0.4.0.dist-info/RECORD +0 -126
  322. {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/LICENSE +0 -0
  323. {xcoll-0.4.0.dist-info → xcoll-0.5.1.dist-info}/NOTICE +0 -0
  324. {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->record_touches = 0;
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->record_touches = BlackCrystalData_get_record_touches(el);
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
- double const length = EverestBlockData_get_length(el);
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->record_touches = 0;
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->record_touches = EverestCollimatorData_get_record_touches(el);
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
- // Mirror the crystal geometry
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->record_touches = 0;
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->record_touches = EverestCrystalData_get_record_touches(el);
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;
@@ -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','collimators_src','everest_block.h')
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','collimators_src','everest_collimator.h')
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
- _buffer=_buffer, _offset=_offset)
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','collimators_src','everest_crystal.h')
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
- _buffer=_buffer, _offset=_offset)
242
+ _buffer=_buffer, _offset=_offset)
244
243
 
245
244