xcoll 0.3.0__tar.gz → 0.3.2__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 (392) hide show
  1. {xcoll-0.3.0 → xcoll-0.3.2}/PKG-INFO +1 -1
  2. {xcoll-0.3.0 → xcoll-0.3.2}/pyproject.toml +1 -1
  3. {xcoll-0.3.0 → xcoll-0.3.2}/setup.py +1 -1
  4. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/__init__.py +4 -2
  5. xcoll-0.3.2/xcoll/beam_elements/__init__.py +11 -0
  6. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/absorber.py +1 -1
  7. xcoll-0.3.0/xcoll/beam_elements/base_collimator.py → xcoll-0.3.2/xcoll/beam_elements/base.py +4 -1
  8. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_block.h +14 -14
  9. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_collimator.h +4 -4
  10. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_crystal.h +1 -2
  11. xcoll-0.3.0/xcoll/beam_elements/everest_collimator.py → xcoll-0.3.2/xcoll/beam_elements/everest.py +66 -31
  12. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/general.py +3 -1
  13. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/headers/checks.h +6 -6
  14. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/manager.py +99 -40
  15. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/everest.h +1 -0
  16. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/jaw.h +7 -6
  17. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/materials.py +13 -3
  18. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +4 -4
  19. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/scatter.h +2 -2
  20. xcoll-0.3.0/xcoll/beam_elements/__init__.py +0 -5
  21. {xcoll-0.3.0 → xcoll-0.3.2}/LICENSE +0 -0
  22. {xcoll-0.3.0 → xcoll-0.3.2}/NOTICE +0 -0
  23. {xcoll-0.3.0 → xcoll-0.3.2}/README.md +0 -0
  24. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/absorber.h +0 -0
  25. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/base_block.h +0 -0
  26. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/base_collimator.h +0 -0
  27. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/invalid_collimator.h +0 -0
  28. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/colldb.py +0 -0
  29. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/collimator_settings.py +0 -0
  30. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/headers/particle_states.h +0 -0
  31. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/__init__.py +0 -0
  32. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/impacts.py +0 -0
  33. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/impacts_src/impacts.h +0 -0
  34. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/interaction_types.py +0 -0
  35. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/install_collimators.py +0 -0
  36. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/rf_sweep.py +0 -0
  37. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/__init__.py +0 -0
  38. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/constants.h +0 -0
  39. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/crystal.h +0 -0
  40. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/everest.py +0 -0
  41. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/properties.h +0 -0
  42. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/scatter_crystal.h +0 -0
  43. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/.git +0 -0
  44. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/.gitignore +0 -0
  45. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/CMakeLists.txt +0 -0
  46. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/ComponentMakefile +0 -0
  47. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/Makefile +0 -0
  48. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/README +0 -0
  49. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/Doxyfile +0 -0
  50. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.asciidoc +0 -0
  51. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.epub +0 -0
  52. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.html +0 -0
  53. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.pdf +0 -0
  54. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__1.png +0 -0
  55. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__2.png +0 -0
  56. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__3.png +0 -0
  57. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__4.png +0 -0
  58. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__5.png +0 -0
  59. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__6.png +0 -0
  60. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__7.png +0 -0
  61. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/Makefile +0 -0
  62. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/docbook.xsl +0 -0
  63. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/Connection.h +0 -0
  64. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIO.h +0 -0
  65. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIOServer.h +0 -0
  66. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FortranFlukaIO.h +0 -0
  67. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/Message.h +0 -0
  68. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/ParticleInfo.h +0 -0
  69. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
  70. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.so +0 -0
  71. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/ClientTest.c +0 -0
  72. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/ServerTest.c +0 -0
  73. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/fclient.f +0 -0
  74. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/fserver.f +0 -0
  75. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.c +0 -0
  76. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.d +0 -0
  77. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.o +0 -0
  78. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.c +0 -0
  79. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.d +0 -0
  80. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.o +0 -0
  81. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.c +0 -0
  82. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.d +0 -0
  83. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.h +0 -0
  84. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.o +0 -0
  85. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.c +0 -0
  86. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.d +0 -0
  87. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.o +0 -0
  88. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer_private.h +0 -0
  89. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO_private.h +0 -0
  90. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.c +0 -0
  91. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.d +0 -0
  92. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.o +0 -0
  93. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.c +0 -0
  94. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.d +0 -0
  95. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.h +0 -0
  96. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.o +0 -0
  97. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/tags +0 -0
  98. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/AllTests.cpp +0 -0
  99. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/CommonTest.h +0 -0
  100. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/ConnectionTest.cpp +0 -0
  101. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOServerTest.cpp +0 -0
  102. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOTest.cpp +0 -0
  103. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FortranFlukaIOTest.cpp +0 -0
  104. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.c +0 -0
  105. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.h +0 -0
  106. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.c +0 -0
  107. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.h +0 -0
  108. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.c +0 -0
  109. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.h +0 -0
  110. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.c +0 -0
  111. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.h +0 -0
  112. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFortranFlukaIO.h +0 -0
  113. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.c +0 -0
  114. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.h +0 -0
  115. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.git +0 -0
  116. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -0
  117. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -0
  118. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -0
  119. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/README.md +0 -0
  120. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -0
  121. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -0
  122. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -0
  123. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -0
  124. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -0
  125. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -0
  126. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -0
  127. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -0
  128. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -0
  129. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -0
  130. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -0
  131. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -0
  132. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  133. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -0
  134. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -0
  135. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -0
  136. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -0
  137. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -0
  138. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -0
  139. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -0
  140. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -0
  141. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -0
  142. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -0
  143. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -0
  144. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -0
  145. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -0
  146. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -0
  147. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -0
  148. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -0
  149. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -0
  150. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -0
  151. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -0
  152. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -0
  153. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -0
  154. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -0
  155. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -0
  156. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -0
  157. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -0
  158. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -0
  159. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -0
  160. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -0
  161. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -0
  162. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -0
  163. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -0
  164. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -0
  165. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -0
  166. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -0
  167. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -0
  168. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -0
  169. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -0
  170. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -0
  171. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -0
  172. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -0
  173. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -0
  174. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -0
  175. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -0
  176. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -0
  177. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -0
  178. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -0
  179. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -0
  180. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -0
  181. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -0
  182. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -0
  183. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
  184. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  185. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -0
  186. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  187. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -0
  188. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -0
  189. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -0
  190. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -0
  191. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -0
  192. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -0
  193. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -0
  194. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -0
  195. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -0
  196. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -0
  197. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -0
  198. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -0
  199. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -0
  200. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -0
  201. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -0
  202. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -0
  203. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
  204. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -0
  205. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -0
  206. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -0
  207. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -0
  208. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -0
  209. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -0
  210. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -0
  211. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -0
  212. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -0
  213. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -0
  214. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -0
  215. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -0
  216. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -0
  217. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -0
  218. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -0
  219. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -0
  220. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -0
  221. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -0
  222. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -0
  223. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -0
  224. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -0
  225. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
  226. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -0
  227. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -0
  228. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -0
  229. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -0
  230. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -0
  231. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -0
  232. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -0
  233. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -0
  234. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -0
  235. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -0
  236. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
  237. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -0
  238. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  239. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -0
  240. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -0
  241. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -0
  242. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -0
  243. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -0
  244. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -0
  245. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -0
  246. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -0
  247. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -0
  248. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -0
  249. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -0
  250. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -0
  251. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -0
  252. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -0
  253. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -0
  254. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -0
  255. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -0
  256. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -0
  257. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -0
  258. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -0
  259. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -0
  260. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -0
  261. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -0
  262. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -0
  263. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -0
  264. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -0
  265. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -0
  266. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -0
  267. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -0
  268. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -0
  269. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -0
  270. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -0
  271. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -0
  272. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -0
  273. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -0
  274. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -0
  275. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -0
  276. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -0
  277. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -0
  278. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -0
  279. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -0
  280. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -0
  281. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -0
  282. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -0
  283. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -0
  284. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -0
  285. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -0
  286. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -0
  287. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -0
  288. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -0
  289. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -0
  290. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -0
  291. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -0
  292. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -0
  293. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -0
  294. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -0
  295. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -0
  296. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -0
  297. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -0
  298. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -0
  299. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -0
  300. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -0
  301. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -0
  302. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -0
  303. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -0
  304. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -0
  305. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -0
  306. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -0
  307. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -0
  308. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -0
  309. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -0
  310. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -0
  311. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -0
  312. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -0
  313. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -0
  314. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -0
  315. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -0
  316. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -0
  317. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -0
  318. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -0
  319. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -0
  320. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -0
  321. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -0
  322. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -0
  323. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -0
  324. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -0
  325. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -0
  326. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -0
  327. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -0
  328. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -0
  329. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -0
  330. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -0
  331. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -0
  332. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -0
  333. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -0
  334. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -0
  335. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -0
  336. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -0
  337. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -0
  338. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -0
  339. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -0
  340. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -0
  341. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -0
  342. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -0
  343. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -0
  344. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -0
  345. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -0
  346. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -0
  347. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -0
  348. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -0
  349. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -0
  350. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -0
  351. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -0
  352. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -0
  353. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -0
  354. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -0
  355. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -0
  356. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -0
  357. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -0
  358. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -0
  359. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/setup.py +0 -0
  360. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -0
  361. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -0
  362. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -0
  363. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -0
  364. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -0
  365. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -0
  366. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -0
  367. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -0
  368. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -0
  369. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -0
  370. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -0
  371. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -0
  372. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -0
  373. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -0
  374. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -0
  375. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -0
  376. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -0
  377. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -0
  378. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -0
  379. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -0
  380. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -0
  381. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -0
  382. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -0
  383. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -0
  384. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -0
  385. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -0
  386. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -0
  387. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -0
  388. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -0
  389. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -0
  390. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -0
  391. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -0
  392. {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xcoll
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Xsuite collimation package
5
5
  Home-page: https://github.com/xsuite/xcoll
6
6
  License: Apache 2.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "xcoll"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  description = "Xsuite collimation package"
5
5
  homepage = "https://github.com/xsuite/xcoll"
6
6
  repository = "https://github.com/xsuite/xcoll"
@@ -68,7 +68,7 @@ extras_require = \
68
68
 
69
69
  setup_kwargs = {
70
70
  'name': 'xcoll',
71
- 'version': '0.3.0',
71
+ 'version': '0.3.2',
72
72
  'description': 'Xsuite collimation package',
73
73
  'long_description': '# xcoll\n\n<!---![PyPI - Python Version](https://img.shields.io/pypi/pyversions/xcoll?logo=PyPI?style=plastic) ![PyPI - Wheel](https://img.shields.io/pypi/wheel/xcoll?logo=PyPI?style=plastic)-->\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/xsuite/xcoll?style=plastic)\n![GitHub](https://img.shields.io/github/license/xsuite/xcoll?style=plastic)\n![PyPi](https://img.shields.io/pypi/dm/xcoll?logo=PyPI&style=plastic)\n![GitHub all releases](https://img.shields.io/github/downloads/xsuite/xcoll/total?logo=GitHub&style=plastic)\n\n![GitHub pull requests](https://img.shields.io/github/issues-pr/xsuite/xcoll?logo=GitHub&style=plastic)\n![GitHub issues](https://img.shields.io/github/issues/xsuite/xcoll?logo=GitHub&style=plastic)\n![GitHub repo size](https://img.shields.io/github/repo-size/xsuite/xcoll?logo=GitHub&style=plastic)\n\nCollimation in xtrack simulations\n\n## Description\n\n## Getting Started\n\n### Dependencies\n\n* python >= 3.8\n * numpy\n * pandas\n * xsuite (in particular xobjects, xdeps, xtrack, xpart)\n\n### Installing\n`xcoll` is packaged using `poetry`, and can be easily installed with `pip`:\n```bash\npip install xcoll\n```\nFor a local installation, clone and install in editable mode (need to have `pip` >22):\n```bash\ngit clone git@github.com:xsuite/xcoll.git\npip install -e xcoll\n```\n\n### Example\n\n## Features\n\n## Authors\n\n* [Frederik Van der Veken](https://github.com/freddieknets) (frederik@cern.ch)\n* [Despina Demetriadou](https://github.com/ddemetriadou)\n* [Andrey Abramov](https://github.com/anabramo)\n* [Giovanni Iadarola](https://github.com/giadarol)\n\n\n## Version History\n\n* 0.1\n * Initial Release\n\n## License\n\nThis project is [Apache 2.0 licensed](./LICENSE).\n',
74
74
  'author': 'Frederik F. Van der Veken',
@@ -3,11 +3,13 @@
3
3
  # Copyright (c) CERN, 2023. #
4
4
  # ######################################### #
5
5
 
6
- from .general import _pkg_root, __version__
6
+ from .general import _pkg_root, __version__, citation
7
7
 
8
- from .beam_elements import BlackAbsorber, EverestBlock, EverestCollimator, EverestCrystal
8
+ from .beam_elements import BlackAbsorber, EverestBlock, EverestCollimator, EverestCrystal, element_classes
9
9
  from .scattering_routines.everest import materials, Material, CrystalMaterial
10
10
  from .manager import CollimatorManager
11
11
  from .colldb import CollimatorDatabase, load_SixTrack_colldb
12
12
  from .rf_sweep import RFSweep
13
13
 
14
+ # print("If you use Xcoll in your simulations, please cite us :-)")
15
+ # print(citation)
@@ -0,0 +1,11 @@
1
+ from .base import BaseBlock, BaseCollimator
2
+ from .absorber import BlackAbsorber
3
+ from .everest import EverestBlock, EverestCollimator, EverestCrystal
4
+
5
+ _all_collimator_types = {BlackAbsorber, EverestCollimator, EverestCrystal}
6
+
7
+ block_classes = tuple(v for v in globals().values()
8
+ if isinstance(v, type) and issubclass(v, BaseBlock) and v != BaseBlock)
9
+ collimator_classes = tuple(v for v in globals().values()
10
+ if isinstance(v, type) and issubclass(v, BaseCollimator) and v != BaseCollimator)
11
+ element_classes = block_classes + collimator_classes
@@ -5,7 +5,7 @@
5
5
 
6
6
  import xtrack as xt
7
7
  import xobjects as xo
8
- from .base_collimator import BaseCollimator, InvalidXcoll
8
+ from .base import BaseCollimator, InvalidXcoll
9
9
  from ..general import _pkg_root
10
10
 
11
11
 
@@ -1,5 +1,5 @@
1
1
  # copyright ############################### #
2
- # This file is part of the Xcoll Package. #
2
+ # This file is part of the Xcoll Package. #
3
3
  # Copyright (c) CERN, 2023. #
4
4
  # ######################################### #
5
5
 
@@ -20,6 +20,7 @@ class InvalidXcoll(xt.BeamElement):
20
20
 
21
21
  isthick = True
22
22
  behaves_like_drift = True
23
+ # allow_track = False # Need to wait for xtrack release to implement
23
24
  skip_in_loss_location_refinement = True
24
25
  allow_backtrack = True
25
26
 
@@ -47,6 +48,7 @@ class BaseBlock(xt.BeamElement):
47
48
 
48
49
  isthick = True
49
50
  behaves_like_drift = True
51
+ # allow_track = False # Need to wait for xtrack release to implement
50
52
  skip_in_loss_location_refinement = True
51
53
 
52
54
  _extra_c_sources = [
@@ -88,6 +90,7 @@ class BaseCollimator(xt.BeamElement):
88
90
 
89
91
  isthick = True
90
92
  behaves_like_drift = True
93
+ # allow_track = False # Need to wait for xtrack release to implement
91
94
  skip_in_loss_location_refinement = True
92
95
 
93
96
  _skip_in_to_dict = ['jaw_L', 'jaw_R', 'ref_x', 'ref_y',
@@ -10,12 +10,13 @@
10
10
 
11
11
 
12
12
  /*gpufun*/
13
- void EverestBlock_set_material(EverestBlockData el, LocalParticle* part0){
13
+ void EverestBlock_set_material(EverestBlockData el){
14
14
  MaterialData material = EverestBlockData_getp__material(el);
15
15
  RandomRutherfordData rng = EverestBlockData_getp_rutherford_rng(el);
16
16
  RandomRutherford_set_by_xcoll_material(rng, (GeneralMaterialData) material);
17
17
  }
18
18
 
19
+
19
20
  /*gpufun*/
20
21
  EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int8_t active){
21
22
  EverestCollData coll = (EverestCollData) malloc(sizeof(EverestCollData_));
@@ -32,6 +33,7 @@ EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int
32
33
  coll->csref[0] = MaterialData_get_cross_section(material, 0);
33
34
  coll->csref[1] = MaterialData_get_cross_section(material, 1);
34
35
  coll->csref[5] = MaterialData_get_cross_section(material, 5);
36
+ coll->only_mcs = MaterialData_get__only_mcs(material);
35
37
 
36
38
  // Impact table
37
39
  coll->record = EverestBlockData_getp_internal_record(el, part0);
@@ -46,29 +48,27 @@ EverestCollData EverestBlock_init(EverestBlockData el, LocalParticle* part0, int
46
48
 
47
49
 
48
50
  /*gpufun*/
49
- EverestData EverestBlock_init_data(LocalParticle* part, EverestCollData coll, int8_t only_mcs){
51
+ EverestData EverestBlock_init_data(LocalParticle* part, EverestCollData coll){
50
52
  EverestData everest = (EverestData) malloc(sizeof(EverestData_));
51
53
  everest->coll = coll;
52
54
  everest->rescale_scattering = 1;
53
55
  #ifndef XCOLL_REFINE_ENERGY
54
- if (!only_mcs){
55
- // Preinitialise scattering parameters
56
- double charge_ratio = LocalParticle_get_charge_ratio(part);
57
- double mass_ratio = charge_ratio / LocalParticle_get_chi(part);
58
- double energy = ( LocalParticle_get_ptau(part) + 1 / LocalParticle_get_beta0(part)
59
- ) * mass_ratio * LocalParticle_get_p0c(part) / 1e9; // energy in GeV
60
- calculate_scattering(everest, energy);
61
- calculate_ionisation_properties(everest, energy);
62
- }
56
+ // Preinitialise scattering parameters
57
+ double charge_ratio = LocalParticle_get_charge_ratio(part);
58
+ double mass_ratio = charge_ratio / LocalParticle_get_chi(part);
59
+ double energy = ( LocalParticle_get_ptau(part) + 1 / LocalParticle_get_beta0(part)
60
+ ) * mass_ratio * LocalParticle_get_p0c(part) / 1e9; // energy in GeV
61
+ calculate_scattering(everest, energy);
62
+ calculate_ionisation_properties(everest, energy);
63
63
  #endif
64
64
  return everest;
65
65
  }
66
66
 
67
+
67
68
  /*gpufun*/
68
69
  void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0) {
69
70
  int8_t active = EverestBlockData_get__tracking(el);
70
71
  double const length = EverestBlockData_get_length(el);
71
- int8_t const only_mcs = EverestBlockData_get__only_mcs(el);
72
72
 
73
73
  // Initialise collimator data
74
74
  // TODO: we want this to happen before tracking (instead of every turn), as a separate kernel
@@ -84,7 +84,7 @@ void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0
84
84
  int8_t is_valid = xcoll_check_particle_init(coll->rng, part);
85
85
 
86
86
  if (is_valid) {
87
- EverestData everest = EverestBlock_init_data(part, coll, only_mcs);
87
+ EverestData everest = EverestBlock_init_data(part, coll);
88
88
  double const e0 = LocalParticle_get_energy0(part) / 1.e9; // Reference energy in GeV
89
89
  double const p0 = LocalParticle_get_p0c(part) / 1e9; // Reference momentum in GeV
90
90
  double const mass_ratio = LocalParticle_get_charge_ratio(part) / LocalParticle_get_chi(part); // m/m0
@@ -95,7 +95,7 @@ void EverestBlock_track_local_particle(EverestBlockData el, LocalParticle* part0
95
95
  double const px_in = LocalParticle_get_px(part);
96
96
  double const py_in = LocalParticle_get_py(part);
97
97
 
98
- double* result = jaw(everest, part, energy, length, only_mcs, 0);
98
+ double* result = jaw(everest, part, energy, length, 0);
99
99
  energy = result[0];
100
100
  if (result[1] == 1){ is_abs = 1; }
101
101
  double s_out = result[2];
@@ -9,8 +9,7 @@
9
9
  #include <stdio.h>
10
10
 
11
11
 
12
- /*gpufun*/
13
- void EverestCollimator_set_material(EverestCollimatorData el, LocalParticle* part0){
12
+ void EverestCollimator_set_material(EverestCollimatorData el){
14
13
  MaterialData material = EverestCollimatorData_getp__material(el);
15
14
  RandomRutherfordData rng = EverestCollimatorData_getp_rutherford_rng(el);
16
15
  RandomRutherford_set_by_xcoll_material(rng, (GeneralMaterialData) material);
@@ -36,6 +35,7 @@ EverestCollData EverestCollimator_init(EverestCollimatorData el, LocalParticle*
36
35
  coll->csref[0] = MaterialData_get_cross_section(material, 0);
37
36
  coll->csref[1] = MaterialData_get_cross_section(material, 1);
38
37
  coll->csref[5] = MaterialData_get_cross_section(material, 5);
38
+ coll->only_mcs = MaterialData_get__only_mcs(material);
39
39
 
40
40
  // Impact table
41
41
  coll->record = EverestCollimatorData_getp_internal_record(el, part0);
@@ -93,8 +93,8 @@ void EverestCollimator_track_local_particle(EverestCollimatorData el, LocalParti
93
93
  double const sin_zR = EverestCollimatorData_get_sin_zR(el);
94
94
  double const cos_zR = EverestCollimatorData_get_cos_zR(el);
95
95
  if (fabs(sin_zL-sin_zR) > 1.e-10 || fabs(cos_zL-cos_zR) > 1.e-10 ){
96
- printf("Jaws with different angles not yet implemented!");
97
- fflush(stdout);
96
+ printf("Jaws with different angles not yet implemented!"); //only_for_context cpu_serial
97
+ fflush(stdout); //only_for_context cpu_serial
98
98
  kill_all_particles(part0, XC_ERR_NOT_IMPLEMENTED);
99
99
  };
100
100
 
@@ -9,9 +9,8 @@
9
9
  #include <stdio.h>
10
10
 
11
11
 
12
-
13
12
  /*gpufun*/
14
- void EverestCrystal_set_material(EverestCrystalData el, LocalParticle* part0){
13
+ void EverestCrystal_set_material(EverestCrystalData el){
15
14
  CrystalMaterialData material = EverestCrystalData_getp__material(el);
16
15
  RandomRutherfordData rng = EverestCrystalData_getp_rutherford_rng(el);
17
16
  RandomRutherford_set_by_xcoll_material(rng, (GeneralMaterialData) material);
@@ -9,12 +9,11 @@ import xobjects as xo
9
9
  import xpart as xp
10
10
  import xtrack as xt
11
11
 
12
- from .base_collimator import BaseBlock, BaseCollimator, InvalidXcoll
12
+ from .base import BaseBlock, BaseCollimator, InvalidXcoll
13
13
  from ..scattering_routines.everest import GeneralMaterial, Material, CrystalMaterial, EverestEngine
14
14
  from ..general import _pkg_root
15
15
 
16
16
 
17
-
18
17
  # TODO:
19
18
  # We want these elements to behave as if 'iscollective = True' when doing twiss etc (because they would ruin the CO),
20
19
  # but as if 'iscollective = False' for normal tracking as it is natively in C...
@@ -28,8 +27,7 @@ class EverestBlock(BaseBlock):
28
27
  _xofields = { **BaseBlock._xofields,
29
28
  '_material': Material,
30
29
  'rutherford_rng': xt.RandomRutherford,
31
- '_tracking': xo.Int8,
32
- '_only_mcs': xo.Int8
30
+ '_tracking': xo.Int8
33
31
  }
34
32
 
35
33
  isthick = True
@@ -46,10 +44,10 @@ class EverestBlock(BaseBlock):
46
44
  _pkg_root.joinpath('beam_elements','collimators_src','everest_block.h')
47
45
  ]
48
46
 
49
- _per_particle_kernels = {
50
- '_EverestBlock_set_material': xo.Kernel(
47
+ _kernels = {
48
+ 'EverestBlock_set_material': xo.Kernel(
51
49
  c_name='EverestBlock_set_material',
52
- args=[]
50
+ args=[xo.Arg(xo.ThisClass, name='el')]
53
51
  )
54
52
  }
55
53
 
@@ -64,20 +62,20 @@ class EverestBlock(BaseBlock):
64
62
  or mat['__class__'] != "Material":
65
63
  raise ValueError("Invalid material!")
66
64
  kwargs['_material'] = mat
67
- # TODO: this should be better
68
- if np.allclose(mat.Z, 0.) or np.allclose(mat.A, 0.) \
69
- or np.allclose(mat.density, 0.) \
70
- or np.allclose(mat.excitation_energy, 0.) \
71
- or np.allclose(mat.nuclear_radius, 0.) \
72
- or np.allclose(mat.nuclear_elastic_slope, 0.):
73
- kwargs['_only_mcs'] = True
74
- else:
75
- kwargs['_only_mcs'] = False
76
65
  kwargs.setdefault('rutherford_rng', xt.RandomRutherford())
77
66
  kwargs.setdefault('_tracking', True)
67
+ use_prebuilt_kernels = kwargs.pop('use_prebuilt_kernels', True)
78
68
  super().__init__(**kwargs)
79
69
  if '_xobject' not in kwargs:
80
- self._EverestBlock_set_material(xp.Particles())
70
+ try: # TODO: small workaround until PR
71
+ self.compile_kernels(use_prebuilt_kernels=use_prebuilt_kernels,
72
+ particles_class=xp.Particles,
73
+ only_if_needed=True)
74
+ except TypeError:
75
+ self.compile_kernels(particles_class=xp.Particles,
76
+ only_if_needed=True)
77
+ self._context.kernels.EverestBlock_set_material(el=self)
78
+
81
79
 
82
80
  @property
83
81
  def material(self):
@@ -88,8 +86,10 @@ class EverestBlock(BaseBlock):
88
86
  if not isinstance(material, Material):
89
87
  if not isinstance('material', dict) or material['__class__'] != "Material":
90
88
  raise ValueError("Invalid material!")
91
- self._material = material
92
- self._EverestBlock_set_material(xp.Particles())
89
+ if not xt.line._dicts_equal(self.material.to_dict(), material.to_dict()):
90
+ self._material = material
91
+ self.compile_kernels(particles_class=xp.Particles, only_if_needed=True)
92
+ self._context.kernels.EverestBlock_set_material(el=self)
93
93
 
94
94
  def get_backtrack_element(self, _context=None, _buffer=None, _offset=None):
95
95
  return InvalidXcoll(length=-self.length, _context=_context,
@@ -117,10 +117,10 @@ class EverestCollimator(BaseCollimator):
117
117
  _pkg_root.joinpath('beam_elements','collimators_src','everest_collimator.h')
118
118
  ]
119
119
 
120
- _per_particle_kernels = {
121
- '_EverestCollimator_set_material': xo.Kernel(
120
+ _kernels = {
121
+ 'EverestCollimator_set_material': xo.Kernel(
122
122
  c_name='EverestCollimator_set_material',
123
- args=[]
123
+ args=[xo.Arg(xo.ThisClass, name='el')]
124
124
  )
125
125
  }
126
126
 
@@ -136,9 +136,17 @@ class EverestCollimator(BaseCollimator):
136
136
  kwargs['_material'] = kwargs.pop('material')
137
137
  kwargs.setdefault('rutherford_rng', xt.RandomRutherford())
138
138
  kwargs.setdefault('_tracking', True)
139
+ use_prebuilt_kernels = kwargs.pop('use_prebuilt_kernels', True)
139
140
  super().__init__(**kwargs)
140
141
  if '_xobject' not in kwargs:
141
- self._EverestCollimator_set_material(xp.Particles())
142
+ try: # TODO: small workaround until PR
143
+ self.compile_kernels(use_prebuilt_kernels=use_prebuilt_kernels,
144
+ particles_class=xp.Particles,
145
+ only_if_needed=True)
146
+ except TypeError:
147
+ self.compile_kernels(particles_class=xp.Particles,
148
+ only_if_needed=True)
149
+ self._context.kernels.EverestCollimator_set_material(el=self)
142
150
 
143
151
  @property
144
152
  def material(self):
@@ -149,8 +157,10 @@ class EverestCollimator(BaseCollimator):
149
157
  if not isinstance(material, Material):
150
158
  if not isinstance('material', dict) or material['__class__'] != "Material":
151
159
  raise ValueError("Invalid material!")
152
- self._material = material
153
- self._EverestCollimator_set_material(xp.Particles())
160
+ if not xt.line._dicts_equal(self.material.to_dict(), material.to_dict()):
161
+ self._material = material
162
+ self.compile_kernels(particles_class=xp.Particles, only_if_needed=True)
163
+ self._context.kernels.EverestCollimator_set_material(el=self)
154
164
 
155
165
  def get_backtrack_element(self, _context=None, _buffer=None, _offset=None):
156
166
  return InvalidXcoll(length=-self.length, _context=_context,
@@ -189,10 +199,10 @@ class EverestCrystal(BaseCollimator):
189
199
  _pkg_root.joinpath('beam_elements','collimators_src','everest_crystal.h')
190
200
  ]
191
201
 
192
- _per_particle_kernels = {
193
- '_EverestCrystal_set_material': xo.Kernel(
202
+ _kernels = {
203
+ 'EverestCrystal_set_material': xo.Kernel(
194
204
  c_name='EverestCrystal_set_material',
195
- args=[]
205
+ args=[xo.Arg(xo.ThisClass, name='el')]
196
206
  )
197
207
  }
198
208
 
@@ -223,13 +233,22 @@ class EverestCrystal(BaseCollimator):
223
233
  kwargs['_orient'] = _lattice_setter(kwargs.pop('lattice', 'strip'))
224
234
  kwargs.setdefault('rutherford_rng', xt.RandomRutherford())
225
235
  kwargs.setdefault('_tracking', True)
236
+ use_prebuilt_kernels = kwargs.pop('use_prebuilt_kernels', True)
226
237
  super().__init__(**kwargs)
227
238
  if '_xobject' not in kwargs:
228
239
  if bending_radius:
229
240
  self._bending_angle = np.arcsin(self.active_length/bending_radius)
230
241
  if bending_angle:
231
242
  self._bending_radius = self.active_length / np.sin(bending_angle)
232
- self._EverestCrystal_set_material(xp.Particles())
243
+ try: # TODO: small workaround until PR
244
+ self.compile_kernels(use_prebuilt_kernels=use_prebuilt_kernels,
245
+ particles_class=xp.Particles,
246
+ only_if_needed=True)
247
+ except TypeError:
248
+ self.compile_kernels(particles_class=xp.Particles,
249
+ only_if_needed=True)
250
+ self._context.kernels.EverestCrystal_set_material(el=self)
251
+
233
252
 
234
253
  @property
235
254
  def critical_angle(self):
@@ -275,8 +294,10 @@ class EverestCrystal(BaseCollimator):
275
294
  if not isinstance(material, CrystalMaterial):
276
295
  if not isinstance(material, dict) or material['__class__'] != "CrystalMaterial":
277
296
  raise ValueError("Invalid material!")
278
- self._material = material
279
- self._EverestCrystal_set_material(xp.Particles())
297
+ if not xt.line._dicts_equal(self.material.to_dict(), material.to_dict()):
298
+ self._material = material
299
+ self.compile_kernels(particles_class=xp.Particles, only_if_needed=True)
300
+ self._context.kernels.EverestCrystal_set_material(el=self)
280
301
 
281
302
 
282
303
  def get_backtrack_element(self, _context=None, _buffer=None, _offset=None):
@@ -293,3 +314,17 @@ def _lattice_setter(lattice):
293
314
  raise ValueError(f"Illegal value {lattice} for 'lattice'! "
294
315
  + "Only use 'strip' (110) or 'quasi-mosaic' (111).")
295
316
 
317
+
318
+ # TODO: We want this in the HybridClass to get Kernels attached automatically,
319
+ # like the PerParticlePyMethod in BeamElement
320
+ # def _exec_kernel(el, kernel_name, **kwargs):
321
+ # # context = el._context
322
+ # # desired_classes = tuple(a.atype for a in el._kernels[kernel_name].args)
323
+ # # if (kernel_name, desired_classes) not in context.kernels:
324
+ # # el.compile_kernels(particles_class=xp.Particles)
325
+ # # kern = context.kernels[(kernel_name, desired_classes)]
326
+ # # return kern(el=el._xobject, **kwargs)
327
+ # el.compile_kernels(particles_class=xp.Particles, only_if_needed=True)
328
+ # return getattr(el._context.kernels, kernel_name)(el=el, **kwargs)
329
+
330
+
@@ -7,8 +7,10 @@ from pathlib import Path
7
7
 
8
8
  _pkg_root = Path(__file__).parent.absolute()
9
9
 
10
+ citation = "F.F. Van der Veken, et al.: Recent Developments with the New Tools for Collimation Simulations in Xsuite, Proceedings of HB2023, Geneva, Switzerland."
11
+
10
12
  # ===================
11
13
  # Do not change
12
14
  # ===================
13
- __version__ = '0.3.0'
15
+ __version__ = '0.3.2'
14
16
  # ===================
@@ -10,18 +10,18 @@
10
10
  int8_t xcoll_check_particle_init(RandomRutherfordData rng, LocalParticle* part) {
11
11
  int8_t is_tracking = assert_tracking(part, XC_ERR_INVALID_TRACK);
12
12
  if (!is_tracking){
13
- printf("Collimator tracking code is called, but we are not supposed to be tracking!");
14
- fflush(stdout);
13
+ printf("Collimator tracking code is called, but we are not supposed to be tracking!"); //only_for_context cpu_serial
14
+ fflush(stdout); //only_for_context cpu_serial
15
15
  }
16
16
  int8_t rng_is_set = assert_rng_set(part, RNG_ERR_SEEDS_NOT_SET);
17
17
  if (!rng_is_set){
18
- printf("Random generator seeds in particles object are not set!");
19
- fflush(stdout);
18
+ printf("Random generator seeds in particles object are not set!"); //only_for_context cpu_serial
19
+ fflush(stdout); //only_for_context cpu_serial
20
20
  }
21
21
  int8_t ruth_is_set = assert_rutherford_set(rng, part, RNG_ERR_RUTH_NOT_SET);
22
22
  if (!ruth_is_set){
23
- printf("Rutherford random generator not initialised!");
24
- fflush(stdout);
23
+ printf("Rutherford random generator not initialised!"); //only_for_context cpu_serial
24
+ fflush(stdout); //only_for_context cpu_serial
25
25
  }
26
26
  return is_tracking*rng_is_set*ruth_is_set;
27
27
  }
@@ -332,22 +332,19 @@ class CollimatorManager:
332
332
  elif name not in self.collimator_names:
333
333
  raise Exception(f"Warning: Collimator {name} not found in CollimatorDatabase!...")
334
334
  if self.tracker_ready:
335
- raise Exception("Tracker already built!\nPlease install collimators before building tracker!")
336
-
337
- # Get collimator centers
338
- positions = dict(zip(names,line.get_s_position(names)))
335
+ raise Exception("Tracker already built!\nPlease install collimators before building "
336
+ + "tracker!")
339
337
 
340
338
  # Loop over collimators to install
341
339
  for name in names:
342
-
343
- # Get the settings from the CollimatorDatabase
344
- thiscoll = df.loc[name]
345
- # Create the collimator element
346
- newcoll = install_func(thiscoll, name)
347
- collimator_class = newcoll.__class__
340
+
341
+ # Get s positions
342
+ # This cannot go outside the loop as the indices will change!
343
+ ss = line.get_s_position()
348
344
 
349
345
  # Get the settings from the CollimatorDatabase
350
346
  thiscoll = df.loc[name]
347
+ idx = line.element_names.index(name)
351
348
  # Create the collimator element
352
349
  newcoll = install_func(thiscoll, name)
353
350
  collimator_class = newcoll.__class__
@@ -356,15 +353,16 @@ class CollimatorManager:
356
353
  # TODO: automatically replace collimator type and print warning
357
354
  if isinstance(line[name], tuple(_all_collimator_types - {collimator_class})):
358
355
  raise ValueError(f"Trying to install {name} as {collimator_class.__name__},"
359
- + f" but it is already installed as {type(line[name]).__name__}!\n"
360
- + "Please reconstruct the line.")
356
+ + f" but it is already installed as {type(line[name]).__name__}!\n"
357
+ + f"Please reconstruct the line.")
361
358
 
362
359
  # Check that collimator is not installed previously
363
360
  elif isinstance(line[name], collimator_class):
364
361
  if df.loc[name,'collimator_type'] != collimator_class.__name__:
365
- raise Exception(f"Something is wrong: Collimator {name} already installed in line "
366
- + f"as {collimator_class.__name__} element, but registered in CollimatorDatabase "
367
- + f"as {df.loc[name, 'collimator_type']}. Please reconstruct the line.")
362
+ raise Exception(f"Something is wrong: Collimator {name} already installed in "
363
+ + f"line as {collimator_class.__name__} element, but registered "
364
+ + f"in CollimatorDatabase as {df.loc[name, 'collimator_type']}. "
365
+ + f"Please reconstruct the line.")
368
366
  if verbose: print(f"Collimator {name} already installed. Skipping...")
369
367
  continue
370
368
 
@@ -372,37 +370,98 @@ class CollimatorManager:
372
370
  # How to do this with importing a line for MAD-X or SixTrack...?
373
371
  elif not isinstance(line[name], (xt.Marker, xt.Drift)) and not support_legacy_elements:
374
372
  raise ValueError(f"Trying to install {name} as {collimator_class.__name__},"
375
- + f" but the line element to replace is not an xtrack.Marker (or xtrack.Drift)!\n"
376
- + "Please check the name, or correct the element.")
373
+ + f" but the line element to replace is not an xtrack.Marker "
374
+ + f"(or xtrack.Drift)!\nPlease check the name, or correct the "
375
+ + f"element.")
377
376
 
378
- if verbose: print(f"Installing {name:16} as {collimator_class.__name__}")
377
+ if verbose: print(f"Installing {name:20} as {collimator_class.__name__}")
379
378
  # Update the position and type in the CollimatorDatabase
380
- df.loc[name,'s_center'] = positions[name]
379
+ df.loc[name,'s_center'] = ss[idx]
381
380
  df.loc[name,'collimator_type'] = collimator_class.__name__
382
- # Do the installation
383
- s_install = df.loc[name,'s_center'] - thiscoll['active_length']/2 - thiscoll['inactive_front']
384
- has_apertures = np.unique([nn for nn in line.element_names if name + '_aper' in nn])
385
- if len(has_apertures) > 0:
386
- if len(has_apertures) > 1:
387
- # Choose the aperture closest to the element
388
- has_apertures = [aa for aa in has_apertures
389
- if line.element_names.index(aa) < line.element_names.index(name)]
390
- has_apertures.sort(key=lambda nn: line.element_names.index(nn))
391
- coll_aper = line[has_apertures[-1]]
392
- assert coll_aper.__class__.__name__.startswith('Limit')
393
- if np.any([name + '_aper_tilt_' in nn for nn in line.element_names]):
394
- raise NotImplementedError("Collimator apertures with tilt not implemented!")
395
- if np.any([name + '_aper_offset_' in nn for nn in line.element_names]):
396
- raise NotImplementedError("Collimator apertures with offset not implemented!")
397
- else:
398
- coll_aper = None
399
381
 
382
+ # Find apertures and store them
383
+ # TODO: same with cryotanks for FLUKA
384
+ # TODO: use compound info -> need full collimator info from MADX
385
+ # TODO: this is all very hacky....
386
+ aper_before = {}
387
+ aper_after = {}
388
+ if f'{name}_mken' in line.element_names\
389
+ and f'{name}_mkex'in line.element_names:
390
+ # TODO what with transformations? How to shift them in s if different?
391
+ aper_before = {nn.replace('mken', 'upstream'): line[nn].copy()
392
+ for nn in line.element_names if nn.startswith(f'{name}_mken_aper')}
393
+ aper_after = {nn.replace('mkex', 'downstream'): line[nn].copy()
394
+ for nn in line.element_names if nn.startswith(f'{name}_mkex_aper')}
395
+ if len(aper_before) == 0:
396
+ # TODO what with transformations? How to shift them in s from centre to start/end?
397
+ aper_before = {nn.replace('_aper', '_upstream_aper'): line[nn].copy()
398
+ for nn in line.element_names if nn.startswith(f'{name}_aper')}
399
+ if len(aper_after) == 0:
400
+ aper_after = {nn.replace('_aper', '_downstream_aper'): line[nn].copy()
401
+ for nn in line.element_names if nn.startswith(f'{name}_aper')}
402
+ if len(aper_before) == 0 or len(aper_after) == 0:
403
+ print(f"Warning: No aperture found for collimator {name}!")
404
+
405
+ # Remove stuff at location of collimator
406
+ l = thiscoll['active_length']
407
+ to_remove = []
408
+ i = idx - 1
409
+ # We remove everything between the beginning and end of the collimator except drifts
410
+ while ss[i] >= ss[idx] - l/2:
411
+ el = line[i]
412
+ nn = line.element_names[i]
413
+ if el.__class__.__name__ == 'Drift':
414
+ i -= 1
415
+ continue
416
+ if hasattr(el, 'length') and el.length > 0:
417
+ raise ValueError(f"Found active element {nn} with length "
418
+ + f"{el.length} at location inside collimator!")
419
+ # I don't like this class selection...
420
+ if not el.__class__.__name__ in ['Marker', 'SRotation', \
421
+ 'YRotation', 'XRotation', 'XYShift'] \
422
+ and not el.__class__.__name__.startswith('Limit'):
423
+ print(f"Warning: Removed active element {nn} "
424
+ + f"at location inside collimator!")
425
+ to_remove.append(nn)
426
+ i -= 1
427
+ i = idx + 1
428
+ while ss[i] <= ss[idx] + l/2:
429
+ el = line[i]
430
+ nn = line.element_names[i]
431
+ if el.__class__.__name__ == 'Drift':
432
+ i += 1
433
+ continue
434
+ if hasattr(el, 'length') and el.length > 0:
435
+ raise ValueError(f"Found active element {nn} with length "
436
+ + f"{el.length} at location inside collimator!")
437
+ # I don't like this class selection...
438
+ if not el.__class__.__name__ in ['Marker', 'SRotation', \
439
+ 'YRotation', 'XRotation', 'XYShift'] \
440
+ and not el.__class__.__name__.startswith('Limit'):
441
+ print(f"Warning: Removed active element {line.element_names[i]} "
442
+ + f"at location inside collimator!")
443
+ to_remove.append(nn)
444
+ i += 1
445
+ for nn in to_remove:
446
+ # TODO: need to update Compounds
447
+ line.element_names.remove(nn)
448
+ line.element_dict.pop(nn)
449
+
450
+ # Do the installation
451
+ s_install = df.loc[name,'s_center'] - thiscoll['active_length']/2 \
452
+ - thiscoll['inactive_front']
400
453
  line.insert_element(element=newcoll, name=name, at_s=s_install)
401
454
 
402
- if coll_aper is not None:
403
- line.insert_element(element=coll_aper, name=name+'_aper_front', index=name)
404
- line.insert_element(element=coll_aper, name=name+'_aper_back',
455
+ # Reinstall apertures
456
+ for aper, el in aper_before.items():
457
+ # TODO: need to update Compounds
458
+ line.insert_element(element=el, name=aper, index=name)
459
+ for aper, el in reversed(aper_after.items()):
460
+ # Reversed because of index+1
461
+ # TODO: need to update Compounds
462
+ line.insert_element(element=el, name=aper,
405
463
  index=line.element_names.index(name)+1)
464
+
406
465
  self._set_record_impacts()
407
466
 
408
467
 
@@ -854,7 +913,7 @@ class CollimatorManager:
854
913
 
855
914
  if file is not None:
856
915
  with open(Path(file), 'w') as fid:
857
- json.dump(self._lossmap, fid, indent=True)
916
+ json.dump(self._lossmap, fid, cls=xo.JEncoder, indent=True)
858
917
 
859
918
  return self._lossmap
860
919
 
@@ -43,6 +43,7 @@ typedef struct EverestCollData_ {
43
43
  double ai;
44
44
  double eum;
45
45
  double collnt;
46
+ int8_t only_mcs;
46
47
  } EverestCollData_;
47
48
  typedef EverestCollData_ *EverestCollData;
48
49