pub struct BeamSpread {
pub landing_m: [f64; 2],
pub profile: BeamProfile,
pub divergence: Divergence,
}Expand description
Where a run’s primaries land and how they diverge: a finite lateral
profile about a landing point on the front face, and an angular spread
about the nominal Primary::direction. The default is a point beam
without divergence, which draws no random numbers, so a run with it is
bit-identical to one made before this type existed.
Per history the position is sampled first, then the direction, both from
that history’s own stream, so a run is identical at any thread count. The
divergence is the ion beam’s
(Divergence: Gaussian per-plane
angles, or uniform in solid angle within a cone). Where the nominal
direction points into the target (x > 0), deflections that would send
the primary out of it are rejected and redrawn (the inward conditioning of
the ion side), so the draw count is then variable but still a function of
the history’s stream alone.
Fields§
§landing_m: [f64; 2]Landing point (y, z) on the front face, m.
profile: BeamProfileLateral profile about the landing point.
divergence: DivergenceAngular spread about the nominal direction.
Implementations§
Trait Implementations§
Source§impl Clone for BeamSpread
impl Clone for BeamSpread
Source§fn clone(&self) -> BeamSpread
fn clone(&self) -> BeamSpread
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BeamSpread
Source§impl Debug for BeamSpread
impl Debug for BeamSpread
Source§impl Default for BeamSpread
impl Default for BeamSpread
Source§impl PartialEq for BeamSpread
impl PartialEq for BeamSpread
Source§impl Serialize for BeamSpread
impl Serialize for BeamSpread
impl StructuralPartialEq for BeamSpread
Auto Trait Implementations§
impl Freeze for BeamSpread
impl RefUnwindSafe for BeamSpread
impl Send for BeamSpread
impl Sync for BeamSpread
impl Unpin for BeamSpread
impl UnsafeUnpin for BeamSpread
impl UnwindSafe for BeamSpread
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more