Skip to content

Concepts

NeoMC is a C++ Monte Carlo particle transport core library.

For a user, the important questions are direct: what particles are transported, what geometry and materials define the problem, what source is sampled, what physics data is used, what processes are active, and what result is scored.

Library Boundary

Benchmarks are example consumers and evidence producers. They are not the product API. Production integrations should use the public headers under include/neomc/:

  • core/: scalar types, IDs, random-number utilities, units, and vectors
  • geometry/: geometry query contracts and concrete geometry backends
  • materials/: material definitions, densities, material IDs, and catalog data
  • data/: runtime physics tables, stopping power, range, and cross-section data
  • importers/: conversion from upstream reference data into NeoMC runtime data
  • physics/: process and material-process builders
  • source/: independent sources, general sources, decay sources, and inventory evolution
  • transport/: package drivers and package routing
  • tally/: edep, dose, hits, track-length, and filtered scoring
  • simulation/ and application/: higher-level model and run assembly

Transport Packages

The current package registry exposes four implemented packages:

PackageStatusScope
coupled_emapproximatephoton, electron, and positron coupled EM transport
protonapproximateproton CSDA electronic stopping
alphaapproximatealpha CSDA electronic stopping in water-table scope
neutronexperimentaldata-driven free flight with total / elastic / capture data

TransportPackageId, transport_package_registry, and owning_transport_package make package ownership explicit. Mixed runs partition source particles by package before transport starts and combine tally and energy accounting afterwards.

Sources

Sources can be simple particle sources or decay-driven source batches.

The main source surfaces are:

  • IndependentSourceDefinition
  • GeneralSourceDefinition
  • StaticDecayInventorySource
  • DecayInventoryWindowSourceDefinition

Common controls include:

  • spatial distribution: point, box, sphere, cylinder
  • angular distribution: fixed direction or isotropic
  • energy distribution: monoenergetic or discrete
  • particle type and source weight
  • decay inventory items with nuclide, activity or atoms, and optional region / material hints

Physics Data

Physics data is central to NeoMC. The user-facing contract is not just a list of processes; users must be able to see where tables came from, how they are imported, and which transport package consumes them.

Current data surfaces include:

  • photon / electron runtime tables
  • decay runtime data
  • neutron microscopic cross sections
  • NIST PSTAR / ASTAR stopping and range data

See Physics Data And Cross Sections.

Scoring And Accounting

The current tally surface covers:

  • deposited energy
  • dose
  • hits
  • track length
  • energy-filtered and spatial-axis-filtered tallies

Transport results also report source, deposited, escaped, accounted energy, and energy-balance residuals. These accounting fields are part of the user-facing debugging surface.

NeoMC user documentation.