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§
- PsfScan
Config - What to scan: the depth slab, the landing points and the statistics.
- PsfScan
Point - The slab response at one landing point.
- PsfScan
Report - The energy deposited in a depth slab as a function of landing point.
Enums§
- PsfScan
Error - Errors of a landing-point scan.
Functions§
- point_
seed - The seed of landing point
indexfrom the baseseed: SplitMix64 ofseed + (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
beamoverscan.landing_m: oneTransport::run_beamper point, the point replacingbeam.landing_m(the beam’s profile and divergence are kept).sourceis recorded in the report.