Skip to content

Transport And Models

This page summarizes the public transport and model assembly surface reflected by the current headers.

Package Registry

Transport-package ownership is explicit. The registry currently exposes:

PackageImplementedStatusSupported scope
coupled_emyesapproximatephoton_electron_positron_coupled_em_transport
protonyesapproximateproton_csda_em_stopping_only
alphayesapproximatealpha_csda_electronic_stopping_only
neutronyesexperimentalneutron_data_driven_free_flight_total_elastic_capture

Important helpers:

  • transport_package_registry
  • find_transport_package_descriptor
  • implemented_transport_packages
  • owning_transport_package
  • transport_package_accepts
  • require_transport_package_particle
  • partition_source_sites
  • partition_secondary_bank_items

These helpers are used by mixed-package source batches, secondary-bank partitioning, and simulation sessions.

Coupled EM Transport

CoupledEmTransportDriver owns photon, electron, and positron transport. Its model layer is CoupledEmModel.

The main configuration surface is CoupledEmTransportConfig, which includes:

  • runtime backend: currently cpu_reference
  • run controls: seed, max steps, boundary push, collision-distance floor
  • tracking-kill and active-transport floor energies
  • production cuts for electrons, positrons, and photons
  • secondary transport thresholds
  • charged stepping controls, continuous loss, loss fluctuations, and MSC
  • physics policies for ionization, bremsstrahlung, positron handling, and annihilation
  • cut-energy policy

The result surface reports detailed counters for photon, electron, and positron collisions, charged continuous loss, MSC, production cuts, escape, kill, secondary production, relaxation, and energy accounting.

Proton Transport

ProtonTransportDriver implements a CSDA-style charged-particle path with explicit policy fields.

ProtonTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • max_step_cm
  • max_energy_loss_fraction
  • active_transport_floor_energy
  • nuclear_reaction_policy
  • stopping_model
  • energy_straggling_model
  • multiple_scattering_model

Supported stopping-model choices include:

  • bethe_bloch_approximation
  • nist_pstar_water
  • nist_pstar_water_bethe_high_energy

The current supported interpretation is proton electronic stopping and range transport. Nuclear reactions are not implemented; they must fail closed or be explicitly ignored for CSDA-only runs.

Alpha Transport

AlphaTransportDriver implements the current alpha CSDA path.

AlphaTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • max_step_cm
  • max_energy_loss_fraction
  • active_transport_floor_energy
  • nuclear_reaction_policy
  • stopping_model

The current stopping model is nist_astar_water. The package should be read as electronic-stopping / range transport in the current ASTAR-water scope. It does not validate straggling, multiple scattering, charge-state evolution, or alpha nuclear reactions.

Neutron Transport

NeutronTransportDriver implements an experimental data-driven neutron free-flight path.

The required physics data is:

  • NeutronTransportPhysicsData
  • one or more NeutronMicroscopicCrossSectionTable records

NeutronTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • unsupported_reaction_tolerance_barn
  • elastic_policy
  • unsupported_reaction_policy

Current capabilities are deliberately narrow:

  • MF3 total / elastic / capture microscopic XS interpolation
  • macroscopic XS sampling for neutral free flight
  • capture sink accounting
  • approximate elastic final states using forward or isotropic no-energy-loss policies

Unsupported areas include isotope-level material treatment, inelastic reactions, fission, thermal scattering, temperature treatment, and capture-gamma final states.

Mixed Transport

MixedTransportDriver and MixedTransportModel route source batches across enabled transport packages and return one combined result.

The current model definition can hold:

  • one geometry
  • one material set
  • one tally set
  • coupled-EM physics data and transport configuration
  • proton transport configuration
  • alpha transport configuration
  • neutron physics data and transport configuration
  • an explicit enabled package list

MixedTransportResult reports:

  • per-package summaries for coupled EM, proton, alpha, and neutron
  • unified tally results
  • unified source, deposited, escaped, and accounted energy
  • unified energy-balance residual

Use mixed_transport_source_from_static_decay when a static decay source should carry source-rate metadata into mixed transport.

Simulation Transport Session

simulation/transport_session.hh adds the higher-level model / runtime-bundle surface:

  • SimulationModel
  • SimulationPackageSet
  • SimulationTransportSessionDefinition
  • SimulationRuntimeBundle
  • SimulationTransportSession
  • compile_simulation_model
  • run_simulation_model

SimulationTransportMode can be:

  • coupled_em
  • proton
  • alpha
  • neutron
  • mixed

This is the current path closest to the intended product model:

text
SimulationModel -> validate/compile -> SimulationRuntimeBundle -> result

Application Layer

application/ provides reusable run assembly above simulation/.

The main public surfaces are:

  • RunManager
  • DetectorConstruction
  • PhysicsList
  • PhysicsListBuilder
  • CoupledEmPhysicsPackage
  • ProtonPhysicsPackage
  • AlphaPhysicsPackage
  • NeutronPhysicsPackage
  • PhysicsDataRegistry
  • PrimaryGenerator
  • PrimaryBatchGenerator
  • ScoringSetup
  • ActionInitialization
  • execute_application_macro

This layer is useful when a user wants package-based physics setup, source / scoring configuration, macro execution, and summary output without wiring every transport driver directly.

NeoMC user documentation.