Skip to main content

Module psf_scan

Module psf_scan 

Source
Expand description

Position-dependent point-spread function: the energy an electron beam deposits in a thin depth slab as its landing point is scanned across a laterally varying (voxel) target.

§What is reported

The radial profile of super::psf is the PSF of a beam on a laterally uniform stack. Over a target with a buried edge or line array the energy left in a film depends on where the beam lands, so this module runs the electron transport once per landing point (y, z) and reports, for the depth slab depth_lo <= x < depth_hi, the energy deposited per incident electron, with its standard error. Each run is a separate Transport::run_beam (parallel over histories, bit-identical at any thread count); a single run with a wide beam and spatial binning would mix the landing positions and lose the per-position response, so it is not used.

The slab energy and its error are those of the RadialAccumulator total (RadialProfile::total_ev and total_std_err_ev): per-history slab totals x_h (the primary and all its secondaries), standard error (N/(N-1) (Q - S²/N))^(1/2) of the sum S = Σ x_h, Q = Σ x_h², see super::psf. The energy per electron is S / N with error SE / N. The radial bins of that accumulator are about the origin of the target frame, not the landing point, and are not reported.

§Determinism

The landing points are looped sequentially in the order given. The seed of point i is derived from the base seed and i alone (point_seed), so it does not depend on the loop order or on the other points, and the report is bit-identical at any thread count.

The mixing function is SplitMix64 (G. L. Steele Jr., D. Lea and C. H. Flood, “Fast splittable pseudorandom number generators”, OOPSLA 2014, doi:10.1145/2660193.2660195, Fig. 15 / the mix64 finaliser).

Structs§

PsfScanConfig
What to scan: the depth slab, the landing points and the statistics.
PsfScanPoint
The slab response at one landing point.
PsfScanReport
The energy deposited in a depth slab as a function of landing point.

Enums§

PsfScanError
Errors of a landing-point scan.

Functions§

point_seed
The seed of landing point index from the base seed: SplitMix64 of seed + (index + 1) · 0x9E3779B97F4A7C15. A function of the two numbers only (see the module docs for the source).
scan_landing_points
Scan the landing point of beam over scan.landing_m: one Transport::run_beam per point, the point replacing beam.landing_m (the beam’s profile and divergence are kept). source is recorded in the report.