Skip to main content

Bindings supporting NCrystal usage in Geant4.

Project description

ncrystal-geant4

This package faciliates the usage of low energy neutron scattering physics provided by NCrystal, in the Geant4 simulation framework. Specifically, it allows users of HP physics models, to initialise selected G4Materials based on NCrystal cfg-strings, and to let NCrystal take over the scattering physics of low energy (<5eV) neutrons in those volumes (other particles and physics will still be handled by the usual Geant4 physics list).

The current implementation assumes that the user is using one of Geant4's HP physics lists, and unfortunately does not yet support multi-threaded Geant4 simulations (UPDATE June 2025: The example_bias/ shows how to work with multi-threaded Geant4!!).

To use the NCrystal-Geant4 bindings, one must:

  1. Install NCrystal and Geant4. Although it is possible to build both projects manually, it should be noted that both are available on conda-forge. If not using conda, note that NCrystal is also available on PyPI, so assuming Geant4 has already been installed in another manner, it might be possible to simply complete the setup by a pip install NCrystal.

  2. Install ncrystal-geant4. This can be done by pip install ncrystal-geant4, or alternatively by cloning the repository at https://github.com/mctools/ncrystal-geant4 and setting the CMake variable NCrystalGeant4_DIR to point at the src/ncrystal_geant4/cmake subdir of the cloned repo.

  3. Edit your projects CMakeLists.txt to add a find_package(NCrystalGeant4) statement, and adding the NCrystalGeant4::NCrystalGeant4 target as a dependency of the Geant4 application you are building.

  4. Edit your C++ code and include the header file G4NCrystal/G4NCrystal.hh. Then create NCrystal materials based on NCrystal cfg-strings like "Al_sg225.ncmat;temp=80K" using code such as:

    G4Material * myMat = G4NCrystal::createMaterial("Al_sg225.ncmat;temp=80K");
    

    Finally, one must inject the NCrystal physics process into the physics list by placing a statement like:

    G4NCrystal::install();
    

    Crucially, such a statement must be placed after runManager->Initialize() and before runManager->BeamOn(..) is called.

    Alternatively, inject NCrystal physics via the Geant4 biasing framework. See the example in the example_bias/ folder next to this README file (or find it online at https://github.com/mctools/ncrystal-geant4/tree/HEAD/example_bias )

For actual examples using the recipes above, see the example/ and example_bias folders next to this README file (or find them online at https://github.com/mctools/ncrystal-geant4/tree/HEAD/example and https://github.com/mctools/ncrystal-geant4/tree/HEAD/example_bias ).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ncrystal_geant4-0.1.0.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ncrystal_geant4-0.1.0-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file ncrystal_geant4-0.1.0.tar.gz.

File metadata

  • Download URL: ncrystal_geant4-0.1.0.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for ncrystal_geant4-0.1.0.tar.gz
Algorithm Hash digest
SHA256 91c9990adcda405bbfad42144ea2a6ef02f1a560da5ac9437574850efa723b04
MD5 7bb4200f64c50a0a81b52a06663ed50f
BLAKE2b-256 6550874b6c1cabbe2fd20588dbb015330474c4d4bb425d3e082b33b82178f79d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ncrystal_geant4-0.1.0.tar.gz:

Publisher: pypi.yml on mctools/ncrystal-geant4

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ncrystal_geant4-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ncrystal_geant4-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 88d96b4233ef05708b902d16181b9b56e86549bf192c0604dc2c918af612c218
MD5 15e676b45c154c973ef5c154d6cda373
BLAKE2b-256 101b80ac86531b707cba14765fbe84f168aa5acbd57b51daa9d6c21da6327f86

See more details on using hashes here.

Provenance

The following attestation bundles were made for ncrystal_geant4-0.1.0-py3-none-any.whl:

Publisher: pypi.yml on mctools/ncrystal-geant4

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page