xcoll 0.5.11__tar.gz → 0.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of xcoll might be problematic. Click here for more details.

Files changed (426) hide show
  1. {xcoll-0.5.11 → xcoll-0.6.0}/PKG-INFO +5 -5
  2. {xcoll-0.5.11 → xcoll-0.6.0}/pyproject.toml +7 -7
  3. xcoll-0.6.0/xcoll/__init__.py +20 -0
  4. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/__init__.py +1 -0
  5. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/absorber.py +12 -2
  6. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/base.py +162 -62
  7. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/blowup.py +1 -0
  8. xcoll-0.6.0/xcoll/beam_elements/elements_src/black_absorber.h +135 -0
  9. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/elements_src/black_crystal.h +49 -50
  10. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/elements_src/everest_block.h +21 -11
  11. xcoll-0.6.0/xcoll/beam_elements/elements_src/everest_collimator.h +235 -0
  12. xcoll-0.6.0/xcoll/beam_elements/elements_src/everest_crystal.h +280 -0
  13. xcoll-0.6.0/xcoll/beam_elements/elements_src/transparent_collimator.h +126 -0
  14. xcoll-0.6.0/xcoll/beam_elements/elements_src/transparent_crystal.h +118 -0
  15. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/everest.py +16 -5
  16. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/monitor.py +1 -0
  17. xcoll-0.6.0/xcoll/beam_elements/transparent.py +83 -0
  18. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/colldb.py +15 -6
  19. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/general.py +1 -1
  20. xcoll-0.6.0/xcoll/headers/particle_states.py +51 -0
  21. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/initial_distribution.py +129 -103
  22. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/interaction_record/interaction_record.py +2 -1
  23. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/interaction_record/interaction_types.py +2 -2
  24. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/line_tools.py +163 -74
  25. xcoll-0.6.0/xcoll/lossmap.py +611 -0
  26. xcoll-0.6.0/xcoll/plot.py +109 -0
  27. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/rf_sweep.py +6 -0
  28. xcoll-0.6.0/xcoll/scattering_routines/engine.py +600 -0
  29. xcoll-0.6.0/xcoll/scattering_routines/environment.py +297 -0
  30. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/amorphous.h +95 -71
  31. xcoll-0.5.11/xcoll/scattering_routines/everest/channeling.h → xcoll-0.6.0/xcoll/scattering_routines/everest/channelling.h +121 -112
  32. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/constants.h +1 -1
  33. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/crystal_parameters.h +9 -9
  34. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/everest.h +8 -3
  35. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/everest.py +2 -1
  36. xcoll-0.6.0/xcoll/scattering_routines/everest/ionisation_loss.h +141 -0
  37. xcoll-0.6.0/xcoll/scattering_routines/everest/jaw.h +60 -0
  38. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/materials.py +2 -0
  39. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +2 -2
  40. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/nuclear_interaction.h +35 -19
  41. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/properties.h +4 -73
  42. xcoll-0.6.0/xcoll/xaux.py +73 -0
  43. xcoll-0.5.11/xcoll/__init__.py +0 -33
  44. xcoll-0.5.11/xcoll/_manager.py +0 -22
  45. xcoll-0.5.11/xcoll/beam_elements/elements_src/black_absorber.h +0 -136
  46. xcoll-0.5.11/xcoll/beam_elements/elements_src/everest_collimator.h +0 -226
  47. xcoll-0.5.11/xcoll/beam_elements/elements_src/everest_crystal.h +0 -275
  48. xcoll-0.5.11/xcoll/headers/particle_states.h +0 -25
  49. xcoll-0.5.11/xcoll/install.py +0 -35
  50. xcoll-0.5.11/xcoll/lossmap.py +0 -219
  51. xcoll-0.5.11/xcoll/scattering_routines/everest/jaw.h +0 -65
  52. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/.git +0 -1
  53. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -12
  54. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -3
  55. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -26
  56. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/README.md +0 -21
  57. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -20
  58. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -35
  59. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -10
  60. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -59
  61. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -26
  62. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -37
  63. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -19
  64. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -65
  65. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -73
  66. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -1
  67. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -9
  68. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -386
  69. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -45
  70. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  71. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -16
  72. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -8
  73. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -3
  74. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -19
  75. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -969
  76. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -84
  77. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -48
  78. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -16
  79. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -103
  80. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -45
  81. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -151
  82. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -3
  83. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -297
  84. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -29
  85. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -6
  86. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -180
  87. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -23
  88. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -192
  89. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -11
  90. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -81
  91. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -93
  92. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -310
  93. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -109
  94. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -43
  95. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -171
  96. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -251
  97. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -305
  98. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -1297
  99. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -262
  100. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -396
  101. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -568
  102. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -337
  103. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -13
  104. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -463
  105. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -286
  106. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  107. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  108. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -308
  109. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -91
  110. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -95
  111. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -2050
  112. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -542
  113. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -8
  114. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -648
  115. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -381
  116. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -343
  117. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -48
  118. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -105
  119. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -72
  120. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  121. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  122. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  123. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  124. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  125. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -130
  126. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -96
  127. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -8
  128. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -548
  129. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -605
  130. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -144
  131. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -1432
  132. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -213
  133. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -2
  134. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -65
  135. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -709
  136. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -1021
  137. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -104
  138. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -346
  139. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -467
  140. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -978
  141. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -55
  142. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -606
  143. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -284
  144. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -163
  145. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -121
  146. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -193
  147. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -275
  148. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -1741
  149. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -163
  150. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -65
  151. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -2497
  152. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -1879
  153. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -103
  154. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -375
  155. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -747
  156. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -88
  157. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -11
  158. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -52
  159. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -12
  160. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -6
  161. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -21
  162. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  163. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -482
  164. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -63
  165. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -41
  166. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -56
  167. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -155
  168. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -503
  169. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -208
  170. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -275
  171. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -73
  172. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -33
  173. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  174. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -279
  175. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  176. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -143
  177. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -85
  178. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -179
  179. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -151
  180. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -91
  181. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -85
  182. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -19
  183. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -12
  184. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -26
  185. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -25
  186. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -216
  187. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -163
  188. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -286
  189. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -536
  190. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -107
  191. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -248
  192. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -227
  193. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -202
  194. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -84
  195. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -210
  196. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -550
  197. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -473
  198. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -84
  199. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -21
  200. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  201. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  202. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  203. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -6
  204. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -41
  205. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -35
  206. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -41
  207. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -10
  208. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -165
  209. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -53
  210. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -238
  211. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -126
  212. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -141
  213. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -117
  214. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -41
  215. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -50
  216. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -69
  217. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -42
  218. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -348
  219. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -771
  220. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -47
  221. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -22
  222. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -23
  223. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -326
  224. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -15
  225. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -148
  226. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -272
  227. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -119
  228. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -51
  229. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -5
  230. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -285
  231. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -12
  232. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -265
  233. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -397
  234. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -520
  235. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -49
  236. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -94
  237. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -125
  238. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -331
  239. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -153
  240. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -284
  241. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -107
  242. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -257
  243. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -412
  244. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -517
  245. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -102
  246. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -92
  247. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -233
  248. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -360
  249. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -472
  250. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -593
  251. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -524
  252. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -441
  253. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -103
  254. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -267
  255. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -73
  256. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -59
  257. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -235
  258. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -146
  259. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -189
  260. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -82
  261. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -560
  262. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -651
  263. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -500
  264. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -253
  265. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -452
  266. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -318
  267. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -342
  268. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -291
  269. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -131
  270. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -318
  271. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -144
  272. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -29
  273. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -66
  274. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -44
  275. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -22
  276. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -9
  277. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -510
  278. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -408
  279. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  280. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -117
  281. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -70
  282. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -86
  283. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -257
  284. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -44
  285. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  286. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -39
  287. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -64
  288. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -402
  289. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -233
  290. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -276
  291. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -214
  292. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -3
  293. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -65
  294. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -41
  295. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -8
  296. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/setup.py +0 -144
  297. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -403
  298. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -100
  299. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -763
  300. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -118
  301. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -8
  302. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -63
  303. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -142
  304. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -556
  305. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -6
  306. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -24
  307. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -1
  308. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -1
  309. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -1
  310. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -25
  311. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_forions.dat +0 -25
  312. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -18
  313. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -68
  314. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -15
  315. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -110
  316. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -7
  317. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -3
  318. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -54
  319. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -3
  320. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -3
  321. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_ions.gmad +0 -5
  322. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -51
  323. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -65
  324. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -59
  325. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -102
  326. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -75
  327. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -74
  328. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -84
  329. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -159
  330. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction_ion.py +0 -99
  331. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_ions.py +0 -78
  332. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_lost_energy.py +0 -88
  333. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -80
  334. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -97
  335. xcoll-0.5.11/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking_ions.py +0 -96
  336. {xcoll-0.5.11 → xcoll-0.6.0}/LICENSE +0 -0
  337. {xcoll-0.5.11 → xcoll-0.6.0}/NOTICE +0 -0
  338. {xcoll-0.5.11 → xcoll-0.6.0}/README.md +0 -0
  339. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/elements_src/blowup.h +0 -0
  340. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/beam_elements/elements_src/emittance_monitor.h +0 -0
  341. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/headers/checks.h +0 -0
  342. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/interaction_record/__init__.py +0 -0
  343. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/interaction_record/interaction_record_src/interaction_record.h +0 -0
  344. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/everest/__init__.py +0 -0
  345. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/.git +0 -0
  346. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/.gitignore +0 -0
  347. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/CMakeLists.txt +0 -0
  348. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/ComponentMakefile +0 -0
  349. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/Makefile +0 -0
  350. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/README +0 -0
  351. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/Doxyfile +0 -0
  352. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.asciidoc +0 -0
  353. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.epub +0 -0
  354. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.html +0 -0
  355. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.pdf +0 -0
  356. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__1.png +0 -0
  357. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__2.png +0 -0
  358. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__3.png +0 -0
  359. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__4.png +0 -0
  360. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__5.png +0 -0
  361. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__6.png +0 -0
  362. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__7.png +0 -0
  363. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/Makefile +0 -0
  364. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/doc/docbook.xsl +0 -0
  365. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/Connection.h +0 -0
  366. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIO.h +0 -0
  367. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIOServer.h +0 -0
  368. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/FortranFlukaIO.h +0 -0
  369. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/Message.h +0 -0
  370. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/include/ParticleInfo.h +0 -0
  371. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  372. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.so +0 -0
  373. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/samples/ClientTest.c +0 -0
  374. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/samples/ServerTest.c +0 -0
  375. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/samples/fclient.f +0 -0
  376. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/samples/fserver.f +0 -0
  377. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/Connection.c +0 -0
  378. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/Connection.d +0 -0
  379. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/Connection.o +0 -0
  380. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.c +0 -0
  381. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.d +0 -0
  382. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.o +0 -0
  383. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.c +0 -0
  384. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.d +0 -0
  385. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.h +0 -0
  386. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.o +0 -0
  387. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.c +0 -0
  388. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.d +0 -0
  389. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.o +0 -0
  390. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer_private.h +0 -0
  391. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO_private.h +0 -0
  392. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.c +0 -0
  393. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.d +0 -0
  394. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.o +0 -0
  395. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.c +0 -0
  396. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.d +0 -0
  397. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.h +0 -0
  398. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.o +0 -0
  399. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/src/tags +0 -0
  400. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/AllTests.cpp +0 -0
  401. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/CommonTest.h +0 -0
  402. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/ConnectionTest.cpp +0 -0
  403. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOServerTest.cpp +0 -0
  404. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOTest.cpp +0 -0
  405. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/FortranFlukaIOTest.cpp +0 -0
  406. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.c +0 -0
  407. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.h +0 -0
  408. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.c +0 -0
  409. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.h +0 -0
  410. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.c +0 -0
  411. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.h +0 -0
  412. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.c +0 -0
  413. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.h +0 -0
  414. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFortranFlukaIO.h +0 -0
  415. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.c +0 -0
  416. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.h +0 -0
  417. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/__init__.py +0 -0
  418. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/collimator_geometry.h +0 -0
  419. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/crystal_geometry.h +0 -0
  420. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/geometry.py +0 -0
  421. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/get_s.h +0 -0
  422. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/methods.h +0 -0
  423. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/objects.h +0 -0
  424. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/rotation.h +0 -0
  425. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/segments.h +0 -0
  426. {xcoll-0.5.11 → xcoll-0.6.0}/xcoll/scattering_routines/geometry/sort.h +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xcoll
3
- Version: 0.5.11
3
+ Version: 0.6.0
4
4
  Summary: Xsuite collimation package
5
5
  Home-page: https://github.com/xsuite/xcoll
6
6
  License: Apache 2.0
@@ -18,10 +18,10 @@ Provides-Extra: tests
18
18
  Requires-Dist: numpy (>=1.0)
19
19
  Requires-Dist: pandas (>=1.4)
20
20
  Requires-Dist: ruamel-yaml (>=0.17.31,<0.18.0) ; extra == "tests"
21
- Requires-Dist: xdeps (>=0.8.1)
22
- Requires-Dist: xobjects (>=0.4.5)
23
- Requires-Dist: xpart (>=0.19.3)
24
- Requires-Dist: xtrack (>=0.70.3)
21
+ Requires-Dist: xdeps (>=0.10.5)
22
+ Requires-Dist: xobjects (>=0.5.0)
23
+ Requires-Dist: xpart (>=0.23.0)
24
+ Requires-Dist: xtrack (>=0.84.5)
25
25
  Project-URL: Repository, https://github.com/xsuite/xcoll
26
26
  Description-Content-Type: text/markdown
27
27
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "xcoll"
3
- version = "0.5.11"
3
+ version = "0.6.0"
4
4
  description = "Xsuite collimation package"
5
5
  homepage = "https://github.com/xsuite/xcoll"
6
6
  repository = "https://github.com/xsuite/xcoll"
@@ -25,14 +25,14 @@ python = ">=3.8"
25
25
  ruamel-yaml = { version = "^0.17.31", optional = true }
26
26
  numpy = ">=1.0"
27
27
  pandas = ">=1.4"
28
- xobjects = ">=0.4.5"
29
- xdeps = ">=0.8.1"
30
- xpart = ">=0.19.3"
31
- xtrack = ">=0.70.3"
28
+ xobjects = ">=0.5.0"
29
+ xdeps = ">=0.10.5"
30
+ xpart = ">=0.23.0"
31
+ xtrack = ">=0.84.5"
32
32
 
33
- [tool.poetry.dev-dependencies]
33
+ [poetry.group.dev.dependencies]
34
34
  pytest = ">=7.3"
35
- xaux = ">=0.2.1"
35
+ xaux = ">=0.3.5"
36
36
 
37
37
  [tool.poetry.extras]
38
38
  tests = ["pytest", "ruamel-yaml", "pytest-html", "pytest-xdist"]
@@ -0,0 +1,20 @@
1
+ # copyright ############################### #
2
+ # This file is part of the Xcoll package. #
3
+ # Copyright (c) CERN, 2025. #
4
+ # ######################################### #
5
+
6
+ from .general import _pkg_root, __version__, citation
7
+
8
+ from .beam_elements import BlackAbsorber, BlackCrystal, TransparentCollimator, TransparentCrystal, \
9
+ EverestBlock, EverestCollimator, EverestCrystal, BlowUp, EmittanceMonitor, \
10
+ collimator_classes, crystal_classes, element_classes
11
+ from .scattering_routines.everest import materials, Material, CrystalMaterial
12
+ from .colldb import CollimatorDatabase
13
+ from .interaction_record import InteractionRecord
14
+ from .rf_sweep import RFSweep
15
+ from .lossmap import LossMap, MultiLossMap
16
+
17
+
18
+ # print("If you use Xcoll in your simulations, please cite us :-)")
19
+ # print(citation)
20
+
@@ -5,6 +5,7 @@
5
5
 
6
6
  from .base import BaseBlock, BaseCollimator, BaseCrystal
7
7
  from .absorber import BlackAbsorber, BlackCrystal
8
+ from .transparent import TransparentCollimator, TransparentCrystal
8
9
  from .everest import EverestBlock, EverestCollimator, EverestCrystal
9
10
  from .blowup import BlowUp
10
11
  from .monitor import EmittanceMonitor
@@ -16,11 +16,16 @@ class BlackAbsorber(BaseCollimator):
16
16
  }
17
17
 
18
18
  isthick = True
19
+ needs_rng = False
19
20
  allow_track = True
21
+ allow_double_sided = True
20
22
  behaves_like_drift = True
23
+ allow_rot_and_shift = False
24
+ allow_loss_refinement = True
21
25
  skip_in_loss_location_refinement = True
22
26
 
23
- _depends_on = [BaseCollimator, XcollGeometry]
27
+ _noexpr_fields = BaseCollimator._noexpr_fields
28
+ _depends_on = [BaseCollimator, XcollGeometry]
24
29
 
25
30
  _extra_c_sources = [
26
31
  _pkg_root.joinpath('beam_elements','elements_src','black_absorber.h')
@@ -47,11 +52,16 @@ class BlackCrystal(BaseCrystal):
47
52
  }
48
53
 
49
54
  isthick = True
55
+ needs_rng = False
50
56
  allow_track = True
57
+ allow_double_sided = False
51
58
  behaves_like_drift = True
59
+ allow_rot_and_shift = False
60
+ allow_loss_refinement = True
52
61
  skip_in_loss_location_refinement = True
53
62
 
54
- _depends_on = [BaseCrystal, XcollGeometry]
63
+ _noexpr_fields = BaseCrystal._noexpr_fields
64
+ _depends_on = [BaseCrystal, XcollGeometry]
55
65
 
56
66
  _extra_c_sources = [
57
67
  _pkg_root.joinpath('beam_elements','elements_src','black_crystal.h')
@@ -10,6 +10,7 @@ import xtrack as xt
10
10
 
11
11
  from ..interaction_record import InteractionRecord
12
12
  from ..general import _pkg_root
13
+ from ..headers.particle_states import particle_states_src
13
14
 
14
15
 
15
16
  OPEN_JAW = 3
@@ -22,14 +23,16 @@ class InvalidXcoll(xt.BeamElement):
22
23
  }
23
24
 
24
25
  isthick = True
25
- behaves_like_drift = True
26
+ needs_rng = False
26
27
  allow_track = False
27
- skip_in_loss_location_refinement = True
28
+ behaves_like_drift = True
29
+ allow_rot_and_shift = False
28
30
  allow_loss_refinement = True
31
+ skip_in_loss_location_refinement = True
29
32
 
30
33
  # InvalidXcoll catches unallowed cases, like backtracking through a collimator
31
34
  _extra_c_sources = [
32
- _pkg_root.joinpath('headers','particle_states.h'),
35
+ particle_states_src,
33
36
  _pkg_root.joinpath('headers','checks.h')
34
37
  ]
35
38
 
@@ -51,12 +54,16 @@ class BaseBlock(xt.BeamElement):
51
54
  }
52
55
 
53
56
  isthick = True
57
+ needs_rng = False
54
58
  allow_track = False
59
+ allow_double_sided = True
55
60
  behaves_like_drift = True
61
+ allow_rot_and_shift = False
62
+ allow_loss_refinement = True
56
63
  skip_in_loss_location_refinement = True
57
64
 
58
65
  _skip_in_to_dict = ['_record_interactions']
59
- _store_in_to_dict = ['record_impacts', 'record_exits', 'record_scatterings']
66
+ _store_in_to_dict = ['name', 'record_impacts', 'record_exits', 'record_scatterings']
60
67
 
61
68
  _depends_on = [InvalidXcoll]
62
69
 
@@ -64,15 +71,42 @@ class BaseBlock(xt.BeamElement):
64
71
 
65
72
  # This is an abstract class and cannot be instantiated
66
73
  def __new__(cls, *args, **kwargs):
67
- if cls == BaseBlock:
74
+ if cls is BaseBlock:
68
75
  raise Exception("Abstract class `BaseBlock` cannot be instantiated!")
69
76
  instance = super().__new__(cls)
70
77
  return instance
71
78
 
72
79
  def __init__(self, **kwargs):
80
+ to_assign = {}
73
81
  if '_xobject' not in kwargs:
82
+ # Set name (useful for bookkeeping like in FLUKA)
83
+ to_assign['name'] = kwargs.pop('name', None)
84
+ # Set active
74
85
  kwargs.setdefault('active', True)
86
+ to_assign['record_impacts'] = kwargs.pop('record_impacts', False)
87
+ to_assign['record_exits'] = kwargs.pop('record_exits', False)
88
+ to_assign['record_scatterings'] = kwargs.pop('record_scatterings', False)
75
89
  super().__init__(**kwargs)
90
+ # Careful: non-xofields are not passed correctly between copy's / to_dict. This messes with flags etc..
91
+ # We also have to manually initialise them for xobject generation
92
+ for key, val in to_assign.items():
93
+ setattr(self, key, val)
94
+ BaseBlock._verify_consistency(self)
95
+
96
+ def copy(self, **kwargs):
97
+ obj = super().copy(**kwargs)
98
+ obj.name = self.name
99
+ return obj
100
+
101
+ @property
102
+ def name(self):
103
+ if not hasattr(self, '_name'):
104
+ self._name = None
105
+ return self._name
106
+
107
+ @name.setter
108
+ def name(self, val):
109
+ self._name = val
76
110
 
77
111
  def enable_scattering(self):
78
112
  if hasattr(self, '_tracking'):
@@ -93,6 +127,8 @@ class BaseBlock(xt.BeamElement):
93
127
 
94
128
  @record_impacts.setter
95
129
  def record_impacts(self, val):
130
+ if not isinstance(val, bool):
131
+ raise ValueError("`record_impacts` must be a boolean value.")
96
132
  if val and not self.record_impacts:
97
133
  self._record_interactions += 1
98
134
  elif not val and self.record_impacts:
@@ -104,6 +140,8 @@ class BaseBlock(xt.BeamElement):
104
140
 
105
141
  @record_exits.setter
106
142
  def record_exits(self, val):
143
+ if not isinstance(val, bool):
144
+ raise ValueError("`record_exits` must be a boolean value.")
107
145
  if val and not self.record_exits:
108
146
  self._record_interactions += 2
109
147
  elif not val and self.record_exits:
@@ -115,6 +153,8 @@ class BaseBlock(xt.BeamElement):
115
153
 
116
154
  @record_scatterings.setter
117
155
  def record_scatterings(self, val):
156
+ if not isinstance(val, bool):
157
+ raise ValueError("`record_scatterings` must be a boolean value.")
118
158
  if val and not self.record_scatterings:
119
159
  self._record_interactions += 4
120
160
  elif not val and self.record_scatterings:
@@ -161,14 +201,20 @@ class BaseCollimator(BaseBlock):
161
201
  '_nemitt_y': xo.Float64
162
202
  }
163
203
 
164
- isthick = BaseBlock.isthick
165
- allow_track = BaseBlock.allow_track
166
- behaves_like_drift = BaseBlock.behaves_like_drift
167
- skip_in_loss_location_refinement = BaseBlock.skip_in_loss_location_refinement
204
+ isthick = True
205
+ needs_rng = False
206
+ allow_track = False
168
207
  allow_double_sided = True
208
+ behaves_like_drift = True
209
+ allow_rot_and_shift = False
210
+ allow_loss_refinement = True
211
+ skip_in_loss_location_refinement = True
169
212
 
170
- _skip_in_to_dict = [*BaseBlock._skip_in_to_dict, *[f for f in _xofields if f.startswith('_')]]
171
- _store_in_to_dict = [*BaseBlock._store_in_to_dict, 'angle', 'jaw', 'tilt', 'gap', 'side', 'align', 'emittance']
213
+ _noexpr_fields = {'align', 'side', 'name'}
214
+ _skip_in_to_dict = [*BaseBlock._skip_in_to_dict,
215
+ *[f for f in _xofields if f.startswith('_')]]
216
+ _store_in_to_dict = [*BaseBlock._store_in_to_dict, 'angle', 'jaw', 'tilt', 'gap',
217
+ 'side', 'align', 'emittance']
172
218
 
173
219
  _depends_on = [BaseBlock]
174
220
 
@@ -177,7 +223,7 @@ class BaseCollimator(BaseBlock):
177
223
 
178
224
  # This is an abstract class and cannot be instantiated
179
225
  def __new__(cls, *args, **kwargs):
180
- if cls == BaseCollimator:
226
+ if cls is BaseCollimator:
181
227
  raise Exception("Abstract class `BaseCollimator` cannot be instantiated!")
182
228
  instance = super().__new__(cls)
183
229
  return instance
@@ -207,6 +253,10 @@ class BaseCollimator(BaseBlock):
207
253
  for key in ['jaw_L', 'jaw_R', 'jaw_LU', 'jaw_LD', 'jaw_RU', 'jaw_RD', 'gap', 'gap_L', 'gap_R']:
208
254
  if key in kwargs:
209
255
  raise ValueError(f"Cannot use both `jaw` and `{key}`!")
256
+ if hasattr(kwargs['jaw'], '__iter__') and hasattr(kwargs['jaw'][0], '__iter__'):
257
+ for key in ['tilt', 'tilt_L', 'tilt_R']:
258
+ if key in kwargs:
259
+ raise ValueError(f"Cannot specify jaw corners and `{key}`!")
210
260
  to_assign['jaw'] = kwargs.pop('jaw')
211
261
  elif 'jaw_L' in kwargs or 'jaw_R' in kwargs:
212
262
  for key in ['jaw_LU', 'jaw_LD', 'jaw_RU', 'jaw_RD', 'gap', 'gap_L', 'gap_R']:
@@ -233,20 +283,21 @@ class BaseCollimator(BaseBlock):
233
283
  if key in kwargs:
234
284
  raise ValueError(f"Cannot use both `tilt` and `{key}`!")
235
285
  to_assign['tilt'] = kwargs.pop('tilt')
236
- else:
237
- to_assign['tilt_L'] = kwargs.pop('tilt_L', 0)
238
- to_assign['tilt_R'] = kwargs.pop('tilt_R', 0)
286
+ elif 'tilt_L' in kwargs or 'tilt_R' in kwargs:
287
+ to_assign['tilt_L'] = kwargs.pop('tilt_L', None)
288
+ to_assign['tilt_R'] = kwargs.pop('tilt_R', None)
289
+ kwargs.setdefault('_sin_yL', 0)
290
+ kwargs.setdefault('_cos_yL', 1)
291
+ kwargs.setdefault('_sin_yR', 0)
292
+ kwargs.setdefault('_cos_yR', 1)
239
293
 
240
294
  # Set gap
241
295
  if 'gap' in kwargs:
242
- for key in ['jaw', 'jaw_L', 'jaw_R', 'jaw_LU', 'jaw_LD', 'jaw_RU', 'jaw_RD', 'gap_L', 'gap_R']:
296
+ for key in ['gap_L', 'gap_R']:
243
297
  if key in kwargs:
244
298
  raise ValueError(f"Cannot use both `gap` and `{key}`!")
245
299
  to_assign['gap'] = kwargs.pop('gap')
246
300
  elif 'gap_L' in kwargs or 'gap_R' in kwargs:
247
- for key in ['jaw', 'jaw_L', 'jaw_R', 'jaw_LU', 'jaw_LD', 'jaw_RU', 'jaw_RD', 'gap']:
248
- if key in kwargs:
249
- raise ValueError(f"Cannot use both `gap` and `{key}`!")
250
301
  to_assign['gap_L'] = kwargs.pop('gap_L', None)
251
302
  to_assign['gap_R'] = kwargs.pop('gap_R', None)
252
303
  kwargs.setdefault('_gap_L', OPEN_GAP)
@@ -263,7 +314,8 @@ class BaseCollimator(BaseBlock):
263
314
  self._optics = None
264
315
  for key, val in to_assign.items():
265
316
  setattr(self, key, val)
266
- self._verify_consistency()
317
+ self._update_tilts()
318
+ BaseCollimator._verify_consistency(self)
267
319
 
268
320
 
269
321
  # Main collimator angle
@@ -366,7 +418,7 @@ class BaseCollimator(BaseBlock):
366
418
  return
367
419
  # If we got here, val is incompatible
368
420
  raise ValueError(f"The attribute `jaw` should be of the form [L, R] or "
369
- + f"[[LU, RU], [LD, RD], but got {val}.")
421
+ + f"[[LU, LD], [RU, RD], but got {val}.")
370
422
 
371
423
  @property
372
424
  def jaw_L(self):
@@ -408,7 +460,8 @@ class BaseCollimator(BaseBlock):
408
460
 
409
461
  @property
410
462
  def jaw_LU(self):
411
- if not self.jaw_L is None:
463
+ if not np.isclose((self._jaw_LU + self._jaw_LD) / 2,
464
+ OPEN_JAW, atol=1.e-10): # open position
412
465
  return self._jaw_LU
413
466
 
414
467
  @jaw_LU.setter # This assumes jaw_LD remains fixed, hence both jaw_L and the tilt change
@@ -425,7 +478,8 @@ class BaseCollimator(BaseBlock):
425
478
 
426
479
  @property
427
480
  def jaw_LD(self):
428
- if not self.jaw_L is None:
481
+ if not np.isclose((self._jaw_LU + self._jaw_LD) / 2,
482
+ OPEN_JAW, atol=1.e-10): # open position
429
483
  return self._jaw_LD
430
484
 
431
485
  @jaw_LD.setter # This assumes jaw_LU remains fixed, hence both jaw_L and the tilt change
@@ -442,7 +496,8 @@ class BaseCollimator(BaseBlock):
442
496
 
443
497
  @property
444
498
  def jaw_RU(self):
445
- if not self.jaw_R is None:
499
+ if not np.isclose((self._jaw_RU + self._jaw_RD) / 2,
500
+ -OPEN_JAW, atol=1.e-10): # open position
446
501
  return self._jaw_RU
447
502
 
448
503
  @jaw_RU.setter # This assumes jaw_RD remains fixed, hence both jaw_R and the tilt change
@@ -459,7 +514,8 @@ class BaseCollimator(BaseBlock):
459
514
 
460
515
  @property
461
516
  def jaw_RD(self):
462
- if not self.jaw_R is None:
517
+ if not np.isclose((self._jaw_RU + self._jaw_RD) / 2,
518
+ -OPEN_JAW, atol=1.e-10): # open position
463
519
  return self._jaw_RD
464
520
 
465
521
  @jaw_RD.setter # This assumes jaw_RU remains fixed, hence both jaw_R and the tilt change
@@ -498,13 +554,23 @@ class BaseCollimator(BaseBlock):
498
554
 
499
555
  def _update_tilts(self):
500
556
  if self.side != 'right':
501
- self._sin_yL = (self.jaw_LD - self.jaw_LU) / self.length
502
- self._cos_yL = np.sqrt(1 - self._sin_yL**2)
503
- self._tan_yL = self._sin_yL / self._cos_yL
557
+ if self.length > 0:
558
+ self._sin_yL = (self._jaw_LD - self._jaw_LU) / self.length
559
+ self._cos_yL = np.sqrt(1 - self._sin_yL**2)
560
+ self._tan_yL = self._sin_yL / self._cos_yL
561
+ else:
562
+ self._sin_yL = 0.
563
+ self._cos_yL = 1.
564
+ self._tan_yL = 0.
504
565
  if self.side != 'left':
505
- self._sin_yR = (self.jaw_RD - self.jaw_RU) / self.length
506
- self._cos_yR = np.sqrt(1 - self._sin_yR**2)
507
- self._tan_yR = self._sin_yR / self._cos_yR
566
+ if self.length > 0:
567
+ self._sin_yR = (self._jaw_RD - self._jaw_RU) / self.length
568
+ self._cos_yR = np.sqrt(1 - self._sin_yR**2)
569
+ self._tan_yR = self._sin_yR / self._cos_yR
570
+ else:
571
+ self._sin_yR = 0.
572
+ self._cos_yR = 1.
573
+ self._tan_yR = 0.
508
574
 
509
575
  def _update_gaps(self, only_L=False, only_R=False):
510
576
  # If we had set a value for the gap manually, this needs to be updated
@@ -544,7 +610,7 @@ class BaseCollimator(BaseBlock):
544
610
  self.tilt_L = val[0]
545
611
  self.tilt_R = val[1]
546
612
  else:
547
- raise ValueError
613
+ raise ValueError(f"The attribute `tilt` should be of the form LR or [L, R] ")
548
614
 
549
615
  @property
550
616
  def tilt_L(self):
@@ -820,9 +886,7 @@ class BaseCollimator(BaseBlock):
820
886
  if self.side != 'right':
821
887
  if self.optics_ready() and self.jaw_L is not None:
822
888
  return round((self.jaw_L - self.co[0][0])/self.sigma[0][0], 6)
823
- elif not self._gap_L_set_manually():
824
- return None
825
- else:
889
+ elif self._gap_L_set_manually():
826
890
  return self._gap_L
827
891
 
828
892
  @gap_L.setter
@@ -840,9 +904,7 @@ class BaseCollimator(BaseBlock):
840
904
  if self.side != 'left':
841
905
  if self.optics_ready() and self.jaw_R is not None:
842
906
  return round((self.jaw_R - self.co[0][1])/self.sigma[0][1], 6)
843
- elif not self._gap_R_set_manually():
844
- return None
845
- else:
907
+ elif self._gap_R_set_manually():
846
908
  return self._gap_R
847
909
 
848
910
  @gap_R.setter
@@ -995,7 +1057,8 @@ class BaseCollimator(BaseBlock):
995
1057
  assert np.isclose(self._sin_yR/self._cos_yR, self._tan_yR)
996
1058
 
997
1059
  # Verify bools
998
- assert self._side in [-1, 1, 0]
1060
+ if '_side' in self._xofields: # Not the case e.g. for FlukaCollimator
1061
+ assert self._side in [-1, 1, 0]
999
1062
  assert isinstance(self._jaws_parallel, bool) or self._jaws_parallel in [0, 1]
1000
1063
 
1001
1064
  def jaw_func(self, pos):
@@ -1039,20 +1102,25 @@ class BaseCrystal(BaseBlock):
1039
1102
  # Crystal specific
1040
1103
  '_bending_radius': xo.Float64,
1041
1104
  '_bending_angle': xo.Float64,
1042
- 'width': xo.Float64,
1043
- 'height': xo.Float64
1105
+ '_width': xo.Float64,
1106
+ '_height': xo.Float64
1044
1107
  # 'thick': xo.Float64
1045
1108
  }
1046
1109
 
1047
- isthick = BaseBlock.isthick
1048
- allow_track = BaseBlock.allow_track
1049
- behaves_like_drift = BaseBlock.behaves_like_drift
1050
- skip_in_loss_location_refinement = BaseBlock.skip_in_loss_location_refinement
1110
+
1111
+ isthick = True
1112
+ needs_rng = False
1113
+ allow_track = False
1051
1114
  allow_double_sided = False
1115
+ behaves_like_drift = True
1116
+ allow_rot_and_shift = False
1117
+ allow_loss_refinement = True
1118
+ skip_in_loss_location_refinement = True
1052
1119
 
1120
+ _noexpr_fields = {'align', 'side', 'name'}
1053
1121
  _skip_in_to_dict = [*BaseBlock._skip_in_to_dict, *[f for f in _xofields if f.startswith('_')]]
1054
- _store_in_to_dict = [*BaseBlock._store_in_to_dict, 'angle', 'jaw', 'tilt', 'gap', 'side', 'align', 'emittance',
1055
- 'bending_radius', 'bending_angle']
1122
+ _store_in_to_dict = [*BaseBlock._store_in_to_dict, 'angle', 'jaw', 'tilt', 'gap', 'side', 'align',
1123
+ 'emittance', 'width', 'height', 'bending_radius', 'bending_angle']
1056
1124
 
1057
1125
  _depends_on = [BaseCollimator]
1058
1126
 
@@ -1060,7 +1128,7 @@ class BaseCrystal(BaseBlock):
1060
1128
 
1061
1129
  # This is an abstract class and cannot be instantiated
1062
1130
  def __new__(cls, *args, **kwargs):
1063
- if cls == BaseCrystal:
1131
+ if cls is BaseCrystal:
1064
1132
  raise Exception("Abstract class `BaseCrystal` cannot be instantiated!")
1065
1133
  instance = super().__new__(cls)
1066
1134
  return instance
@@ -1110,13 +1178,15 @@ class BaseCrystal(BaseBlock):
1110
1178
  kwargs.setdefault('_gap', OPEN_GAP)
1111
1179
 
1112
1180
  # Set tilt
1113
- if 'jaw_D' not in kwargs:
1114
- to_assign['tilt'] = kwargs.pop('tilt', 0)
1181
+ if 'tilt' in kwargs:
1182
+ to_assign['tilt'] = kwargs.pop('tilt')
1115
1183
 
1116
1184
  # Set others
1117
1185
  to_assign['align'] = kwargs.pop('align', 'upstream')
1118
1186
  to_assign['emittance'] = kwargs.pop('emittance', None)
1119
1187
  kwargs.setdefault('active', True)
1188
+ kwargs.setdefault('_sin_y', 0)
1189
+ kwargs.setdefault('_cos_y', 1)
1120
1190
 
1121
1191
  # Set crystal specific
1122
1192
  if 'bending_angle' in kwargs:
@@ -1125,10 +1195,10 @@ class BaseCrystal(BaseBlock):
1125
1195
  to_assign['bending_angle'] = kwargs.pop('bending_angle')
1126
1196
  else:
1127
1197
  to_assign['bending_radius'] = kwargs.pop('bending_radius', 1)
1128
- kwargs.setdefault('width', 0)
1129
- kwargs.setdefault('height', 0)
1198
+ to_assign['width'] = kwargs.pop('width', 1)
1199
+ to_assign['height'] = kwargs.pop('height', 1)
1130
1200
 
1131
- xt.BeamElement.__init__(self, **kwargs)
1201
+ super().__init__(**kwargs)
1132
1202
  # Careful: non-xofields are not passed correctly between copy's / to_dict. This messes with flags etc..
1133
1203
  # We also have to manually initialise them for xobject generation
1134
1204
  if not hasattr(self, '_optics'):
@@ -1140,7 +1210,7 @@ class BaseCrystal(BaseBlock):
1140
1210
  self._jaw_U *= -1
1141
1211
  if np.isclose(self._gap, OPEN_GAP):
1142
1212
  self._gap *= -1
1143
- self._verify_consistency()
1213
+ BaseCrystal._verify_consistency(self)
1144
1214
 
1145
1215
 
1146
1216
  # Main crystal angle
@@ -1167,15 +1237,20 @@ class BaseCrystal(BaseBlock):
1167
1237
  @jaw.setter
1168
1238
  def jaw(self, val):
1169
1239
  if val is None:
1170
- val = self._side*OPEN_JAW
1240
+ if self.side == 'left':
1241
+ val = OPEN_JAW
1242
+ elif self.side == 'right':
1243
+ val = -OPEN_JAW
1244
+ else:
1245
+ raise ValueError("Cannot determine side. Something is wrong with the collimator!")
1171
1246
  self.jaw_U = val
1172
1247
 
1173
1248
  @property
1174
1249
  def jaw_U(self):
1175
- if not np.isclose(self._jaw_U, self._side*OPEN_JAW, atol=1.e-10): # open position
1250
+ if not np.isclose(abs(self._jaw_U), OPEN_JAW, atol=1.e-10): # open position
1176
1251
  return self._jaw_U
1177
1252
 
1178
- @jaw_U.setter # This moves both jaw_LU and jaw_LD in parallel
1253
+ @jaw_U.setter
1179
1254
  def jaw_U(self, val):
1180
1255
  if val is None:
1181
1256
  raise ValueError("Cannot set corner to None! Use open_jaws() or set jaw to None.")
@@ -1184,15 +1259,16 @@ class BaseCrystal(BaseBlock):
1184
1259
 
1185
1260
  @property
1186
1261
  def jaw_D(self):
1187
- if not np.isclose(self._jaw_U, self._side*OPEN_JAW, atol=1.e-10): # open position
1262
+ if not np.isclose(abs(self._jaw_U), OPEN_JAW, atol=1.e-10): # open position
1188
1263
  length = self.length
1189
- if self._side*self.bending_radius < 0:
1264
+ if (self.side == 'left' and self.bending_radius < 0) \
1265
+ or (self.side == 'right' and self.bending_radius > 0):
1190
1266
  # Correction for inner corner point
1191
1267
  length -= self.width*np.sin(abs(self._bending_angle))
1192
1268
  shift = np.tan(self._bending_angle/2)*self._cos_y + self._sin_y
1193
1269
  return self._jaw_U + length*shift
1194
1270
 
1195
- @jaw_D.setter # This moves both jaw_LU and jaw_LD in parallel
1271
+ @jaw_D.setter
1196
1272
  def jaw_D(self, val):
1197
1273
  if val is None:
1198
1274
  self.tilt = 0
@@ -1381,6 +1457,26 @@ class BaseCrystal(BaseBlock):
1381
1457
  self._bending_angle = bending_angle
1382
1458
  self._bending_radius = self.length / np.sin(bending_angle)
1383
1459
 
1460
+ @property
1461
+ def width(self):
1462
+ return self._width
1463
+
1464
+ @width.setter
1465
+ def width(self, val):
1466
+ if val <= 0:
1467
+ raise ValueError(f"The field `width` should be positive, but got {val}.")
1468
+ self._width = val
1469
+
1470
+ @property
1471
+ def height(self):
1472
+ return self._height
1473
+
1474
+ @height.setter
1475
+ def height(self, val):
1476
+ if val <= 0:
1477
+ raise ValueError(f"The field `height` should be positive, but got {val}.")
1478
+ self._height = val
1479
+
1384
1480
  @property
1385
1481
  def side(self):
1386
1482
  return BaseCollimator.side.fget(self)
@@ -1412,7 +1508,11 @@ class BaseCrystal(BaseBlock):
1412
1508
  assert np.isclose(ang, abs(np.arcsin(self._sin_y)))
1413
1509
  assert np.isclose(self._sin_y/self._cos_y, self._tan_y)
1414
1510
  # Verify bools
1415
- assert self._side in [-1, 1]
1511
+ if '_side' in self._xofields:
1512
+ assert self._side in [-1, 0, 1]
1416
1513
  # Crystal specific
1417
- assert np.isclose(self._bending_angle, np.arcsin(self.length/self._bending_radius))
1514
+ if '_bending_radius' in self._xofields and '_bending_angle' in self._xofields:
1515
+ assert isinstance(self._bending_radius, float) and not np.isclose(self._bending_radius, 0)
1516
+ assert isinstance(self._bending_angle, float) and abs(self._bending_angle) <= np.pi/2
1517
+ assert np.isclose(self._bending_angle, np.arcsin(self.length/self._bending_radius))
1418
1518
 
@@ -31,6 +31,7 @@ class BlowUp(InvalidXcoll):
31
31
  skip_in_loss_location_refinement = True
32
32
  allow_loss_refinement = False
33
33
 
34
+ _noexpr_fields = {'plane', 'name', 'line'}
34
35
  _skip_in_to_dict = ['_max_kick', '_plane', '_calibration', '_active']
35
36
  _store_in_to_dict = ['amplitude', 'plane', 'calibration']
36
37