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.
- {xcoll-0.3.0 → xcoll-0.3.2}/PKG-INFO +1 -1
- {xcoll-0.3.0 → xcoll-0.3.2}/pyproject.toml +1 -1
- {xcoll-0.3.0 → xcoll-0.3.2}/setup.py +1 -1
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/__init__.py +4 -2
- xcoll-0.3.2/xcoll/beam_elements/__init__.py +11 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/absorber.py +1 -1
- xcoll-0.3.0/xcoll/beam_elements/base_collimator.py → xcoll-0.3.2/xcoll/beam_elements/base.py +4 -1
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_block.h +14 -14
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_collimator.h +4 -4
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/everest_crystal.h +1 -2
- xcoll-0.3.0/xcoll/beam_elements/everest_collimator.py → xcoll-0.3.2/xcoll/beam_elements/everest.py +66 -31
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/general.py +3 -1
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/headers/checks.h +6 -6
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/manager.py +99 -40
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/everest.h +1 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/jaw.h +7 -6
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/materials.py +13 -3
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/multiple_coulomb_scattering.h +4 -4
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/scatter.h +2 -2
- xcoll-0.3.0/xcoll/beam_elements/__init__.py +0 -5
- {xcoll-0.3.0 → xcoll-0.3.2}/LICENSE +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/NOTICE +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/README.md +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/absorber.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/base_block.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/base_collimator.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/beam_elements/collimators_src/invalid_collimator.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/colldb.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/collimator_settings.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/headers/particle_states.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/__init__.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/impacts.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/impacts_src/impacts.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/impacts/interaction_types.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/install_collimators.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/rf_sweep.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/__init__.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/constants.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/crystal.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/everest.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/properties.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/everest/scatter_crystal.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/.git +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/.gitignore +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/ComponentMakefile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/Makefile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/README +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/Doxyfile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.asciidoc +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.epub +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.html +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO.pdf +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__1.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__2.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__3.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__4.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__5.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__6.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/FlukaIO__7.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/Makefile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/doc/docbook.xsl +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/Connection.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FlukaIOServer.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/FortranFlukaIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/Message.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/include/ParticleInfo.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.a +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/lib/libFlukaIO64.so +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/ClientTest.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/ServerTest.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/fclient.f +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/samples/fserver.f +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/Connection.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOHandshake.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIOServer_private.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FlukaIO_private.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/FortranFlukaIO.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.d +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/NetIO.o +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/src/tags +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/AllTests.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/CommonTest.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/ConnectionTest.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOServerTest.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FlukaIOTest.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/FortranFlukaIOTest.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeConnection.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOHandshake.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFlukaIOServer.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeFortranFlukaIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.c +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/fluka/flukaio/tests/fakes/FakeNetIO.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.git +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.gitignore +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/.gitmodules +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/README.md +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/Makefile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/make.bat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/collimasim.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/conf.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/docs/source/index.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.appveyor.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-format +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.clang-tidy +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.cmake-format.yaml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.git +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CODEOWNERS +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/CONTRIBUTING.md +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/dependabot.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/labeler_merged.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/pull_request_template.md +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/ci.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/configure.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/format.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/labeler.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.github/workflows/pip.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.gitignore +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.pre-commit-config.yaml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/.readthedocs.yml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/LICENSE +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/MANIFEST.in +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/README.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Doxyfile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/Makefile +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/_static/theme_overrides.css +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/chrono.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/custom.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/eigen.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/functional.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/index.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/overview.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/stl.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/cast/strings.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/classes.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/embedding.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/exceptions.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/functions.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/misc.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/index.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/numpy.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/object.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/pycpp/utilities.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/advanced/smart_ptrs.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/basics.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/benchmark.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/changelog.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/classes.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/cmake/index.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/compiling.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/conf.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/faq.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/index.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/installing.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/limitations.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11-logo.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python1.svg +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/pybind11_vs_boost_python2.svg +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/reference.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/release.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/requirements.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/docs/upgrade.rst +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/attr.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/buffer_info.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/cast.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/chrono.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/common.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/complex.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/class.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/common.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/descr.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/init.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/internals.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/type_caster_base.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/detail/typeid.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eigen.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/embed.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/eval.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/functional.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/gil.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/iostream.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/numpy.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/operators.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/options.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pybind11.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/pytypes.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl/filesystem.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/include/pybind11/stl_bind.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/noxfile.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__init__.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/__main__.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/_version.pyi +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/commands.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/py.typed +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pybind11/setup_helpers.pyi +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/pyproject.toml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.cfg +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/setup.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/conftest.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/constructor_stats.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/cross_module_gil_utils.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/env.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/pytest.ini +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_python_package/test_files.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/pytest.ini +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/local_bindings.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/object.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_cross_module_tests.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pybind11_tests.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/pytest.ini +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/requirements.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_async.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_buffers.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_builtin_casters.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_call_policies.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_callbacks.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_chrono.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_class.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/embed.cpp +0 -0
- {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
- {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
- {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
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/main.cpp +0 -0
- {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
- {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
- {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
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_cmake_build/test.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_constants_and_functions.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_copy_move.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_casters.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_custom_type_setup.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_docstring_options.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eigen.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/CMakeLists.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/catch.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/external_module.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_embed/test_interpreter.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_enum.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_eval_call.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.h +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_exceptions.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_factory_constructors.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_gil_scoped.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_iostream.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_kwargs_and_defaults.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_local_bindings.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_methods_and_attributes.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_modules.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_multiple_inheritance.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_array.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_dtypes.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_numpy_vectorize.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_opaque_types.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_operator_overloading.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pickling.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_pytypes.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_sequences_and_iterators.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_smart_ptr.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_stl_binders.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_tagbased_polymorphic.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_thread.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_union.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/test_virtual_functions.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-numpy-scipy.supp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tests/valgrind-python.supp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindCatch.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindEigen3.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/FindPythonLibsNew.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/check-style.sh +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/cmake_uninstall.cmake.in +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/libsize.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/make_changelog.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Common.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Config.cmake.in +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11NewTools.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pybind11Tools.cmake +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/pyproject.toml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_global.py.in +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/lib/pybind11/tools/setup_main.py.in +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/pyproject.toml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/setup.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSPyATInterface.hh +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/BDSXtrackInterface.hh +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/__init__.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/bindings.cpp +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/pyCollimatorPass.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim/xtrack_collimator.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/PKG-INFO +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/SOURCES.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/dependency_links.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/not-zip-safe +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/src/collimasim.egg-info/top_level.txt +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/README.md +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_new_example.dat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_old_example.dat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_testing.dat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/CollDB_yaml_example.yaml +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps.dat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collgaps_pyat_test.dat +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/collonly_twiss_file_example.tfs +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings.gmad +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/settings_black_absorber.gmad +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/resources/twiss_file_testing.tfs +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_passmethod.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_pyat_tracking.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_angle.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_colldb_load.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_interaction.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tilt.py +0 -0
- {xcoll-0.3.0 → xcoll-0.3.2}/xcoll/scattering_routines/geant4/collimasim/tests/test_xtrack_tracking.py +0 -0
|
@@ -68,7 +68,7 @@ extras_require = \
|
|
|
68
68
|
|
|
69
69
|
setup_kwargs = {
|
|
70
70
|
'name': 'xcoll',
|
|
71
|
-
'version': '0.3.
|
|
71
|
+
'version': '0.3.2',
|
|
72
72
|
'description': 'Xsuite collimation package',
|
|
73
73
|
'long_description': '# xcoll\n\n<!--- -->\n\n\n\n\n\n\n\n\n\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
|
xcoll-0.3.0/xcoll/beam_elements/base_collimator.py → xcoll-0.3.2/xcoll/beam_elements/base.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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,
|
|
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
|
-
|
|
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
|
|
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);
|
xcoll-0.3.0/xcoll/beam_elements/everest_collimator.py → xcoll-0.3.2/xcoll/beam_elements/everest.py
RENAMED
|
@@ -9,12 +9,11 @@ import xobjects as xo
|
|
|
9
9
|
import xpart as xp
|
|
10
10
|
import xtrack as xt
|
|
11
11
|
|
|
12
|
-
from .
|
|
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
|
-
|
|
50
|
-
'
|
|
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
|
-
|
|
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.
|
|
92
|
-
|
|
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
|
-
|
|
121
|
-
'
|
|
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
|
-
|
|
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.
|
|
153
|
-
|
|
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
|
-
|
|
193
|
-
'
|
|
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
|
-
|
|
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.
|
|
279
|
-
|
|
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.
|
|
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
|
|
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
|
|
344
|
-
|
|
345
|
-
|
|
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
|
-
|
|
360
|
-
|
|
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
|
|
366
|
-
|
|
367
|
-
|
|
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
|
-
|
|
376
|
-
|
|
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:
|
|
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'] =
|
|
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
|
-
|
|
403
|
-
|
|
404
|
-
|
|
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
|
|