pub struct SummaryTally {Show 31 fields
pub histories: u64,
pub stopped: u64,
pub escaped_front: u64,
pub escaped_back: u64,
pub escaped_side: u64,
pub absorbed: u64,
pub trapped: u64,
pub event_capped: u64,
pub polaron_trapped: u64,
pub secondaries: u64,
pub secondaries_escaped: u64,
pub secondaries_event_capped: u64,
pub reflections: u64,
pub elastic_events: u64,
pub inelastic_events: u64,
pub inner_shell_events: u64,
pub interface_crossings: u64,
pub phonon_emissions: u64,
pub phonon_absorptions: u64,
pub path_m: f64,
pub inelastic_loss_ev: f64,
pub inner_shell_loss_ev: f64,
pub escaped_energy_ev: f64,
pub rest_energy_ev: f64,
pub phonon_emitted_ev: f64,
pub phonon_absorbed_ev: f64,
pub polaron_deposited_ev: f64,
pub secondary_energy_ev: f64,
pub binding_ev: f64,
pub deposited_ev: f64,
pub barrier_ev: f64,
}Expand description
A minimal summary tally: counts, path length and energy bookkeeping.
The fate counts (stopped to event_capped) are per history, by the
primary’s fate; the event counts and energies cover every electron. With
every electron ending stopped, trapped or escaped, the energies balance:
incident energy plus secondary_energy_ev equals inelastic_loss_ev + escaped_energy_ev + rest_energy_ev + barrier_ev.
Fields§
§histories: u64Histories run.
stopped: u64Histories whose primary stopped below the threshold.
escaped_front: u64Primaries that left through the front face.
escaped_back: u64Primaries that left through the back face.
escaped_side: u64Primaries that left through a lateral face of a voxel grid.
absorbed: u64Primaries absorbed at the back face.
trapped: u64Trapped primaries.
event_capped: u64Primaries cut off by the event cap.
polaron_trapped: u64Primaries trapped as polarons.
secondaries: u64Secondaries created (and transported).
secondaries_escaped: u64Secondaries that left the target through either face.
secondaries_event_capped: u64Secondaries cut off by the event cap (Fate::EventCap), one per
capped secondary track. A numerical-truncation diagnostic: zero
event_capped primaries does not mean no secondary was capped.
reflections: u64Face reflections (step barrier).
elastic_events: u64Elastic collisions.
inelastic_events: u64Inelastic collisions (valence and inner-shell).
inner_shell_events: u64Inelastic collisions in an inner-shell channel (part of
inelastic_events).
interface_crossings: u64Layer-face crossings between layers.
phonon_emissions: u64LO-phonon emissions.
phonon_absorptions: u64LO-phonon absorptions.
path_m: f64Total flight path, m.
inelastic_loss_ev: f64Total energy lost in inelastic collisions, eV.
inner_shell_loss_ev: f64Energy lost in inner-shell collisions, eV (part of
inelastic_loss_ev).
escaped_energy_ev: f64Energy carried out of the target by escaped electrons, eV.
rest_energy_ev: f64Energy of stopped electrons when they stopped, eV.
phonon_emitted_ev: f64Energy given to the lattice by phonon emission, eV.
phonon_absorbed_ev: f64Energy taken from the lattice by phonon absorption, eV.
polaron_deposited_ev: f64Energy deposited by electrons trapped as polarons, eV.
secondary_energy_ev: f64Kinetic energy of the secondaries created, eV.
binding_ev: f64Sum of SecondaryEvent::binding_ev, eV.
deposited_ev: f64Sum of SecondaryEvent::deposited_ev, eV.
barrier_ev: f64Kinetic energy taken by potential steps, the sum of -ΔU over face
transmissions, eV.
Trait Implementations§
Source§impl Clone for SummaryTally
impl Clone for SummaryTally
Source§fn clone(&self) -> SummaryTally
fn clone(&self) -> SummaryTally
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SummaryTally
impl Debug for SummaryTally
Source§impl Default for SummaryTally
impl Default for SummaryTally
Source§fn default() -> SummaryTally
fn default() -> SummaryTally
Source§impl ElectronTally for SummaryTally
impl ElectronTally for SummaryTally
Source§fn step(&mut self, _from: [f64; 3], _end: &ElectronState, length_m: f64)
fn step(&mut self, _from: [f64; 3], _end: &ElectronState, length_m: f64)
length_m ended at end.pos (at a collision, a
layer face or the target face). It started at from with energy
end.energy_ev (the energy does not change in flight).Source§fn elastic(&mut self, _after: &ElectronState, _theta: f64)
fn elastic(&mut self, _after: &ElectronState, _theta: f64)
theta rad.Source§fn inelastic(&mut self, _after: &ElectronState, w_ev: f64)
fn inelastic(&mut self, _after: &ElectronState, w_ev: f64)
w_ev from the electron. after carries
the new direction if the secondary model deflected it.Source§fn inner_shell(
&mut self,
_after: &ElectronState,
_shell: &InnerShell,
w_ev: f64,
)
fn inner_shell( &mut self, _after: &ElectronState, _shell: &InnerShell, w_ev: f64, )
ElectronTally::inelastic for every inelastic
event drawn from an inner-shell channel
(Transport::with_inner_shells), with or without a secondary
model: the shell (its element, subshell and binding energy) and the
loss w_ev (the same as passed to ElectronTally::inelastic). Not
called for valence events. Comes before ElectronTally::secondary.Source§fn secondary(
&mut self,
_p: &ElectronState,
e: &SecondaryEvent,
c: Option<&ElectronState>,
)
fn secondary( &mut self, _p: &ElectronState, e: &SecondaryEvent, c: Option<&ElectronState>, )
ElectronTally::inelastic (and
ElectronTally::inner_shell, for a shell event) for every inelastic
event when a SecondaryModel is on: the event’s energy bookkeeping,
and the secondary that was created (None if none was). The
secondary is transported later, between
ElectronTally::begin_secondary and
ElectronTally::end_secondary.Source§fn phonon(
&mut self,
_after: &ElectronState,
kind: PhononEvent,
hbar_omega_ev: f64,
_theta: f64,
)
fn phonon( &mut self, _after: &ElectronState, kind: PhononEvent, hbar_omega_ev: f64, _theta: f64, )
-ħω (emission) or
+ħω (absorption), hbar_omega_ev given, and deflected the electron by
theta rad. after is the state after the event.Source§fn polaron_trapped(&mut self, at: &ElectronState)
fn polaron_trapped(&mut self, at: &ElectronState)
at and deposits its whole
remaining energy at.energy_ev there. The history (or the secondary)
then ends with Fate::PolaronTrapped (no ElectronTally::stopped
call).Source§fn interface(&mut self, _at: &ElectronState, _from: usize, _to: usize)
fn interface(&mut self, _at: &ElectronState, _from: usize, _to: usize)
from_layer into to_layer; at is
its state on the face, inside the new layer (after refraction, with
BoundaryModel::StepBarrier).Source§fn barrier(&mut self, _at: &ElectronState, _b: Boundary, delta_u_ev: f64)
fn barrier(&mut self, _at: &ElectronState, _b: Boundary, delta_u_ev: f64)
BoundaryModel::StepBarrier: the electron got through the face
boundary, and its kinetic energy changed by delta_u_ev (the step
U' - U). at is its state just past the face (in vacuum, for a
surface). Comes before ElectronTally::interface or
ElectronTally::escaped.Source§fn reflected(&mut self, _at: &ElectronState, _b: Boundary)
fn reflected(&mut self, _at: &ElectronState, _b: Boundary)
BoundaryModel::StepBarrier: the electron was reflected at the
face boundary; at is its state after the reflection. At the
primary’s entry this is followed by ElectronTally::escaped.Source§fn end_secondary(&mut self, fate: Fate)
fn end_secondary(&mut self, fate: Fate)
fate.Source§fn stopped(&mut self, at: &ElectronState)
fn stopped(&mut self, at: &ElectronState)
at. A stop has at.energy_ev below the threshold of at.layer, a
trapped electron at least that energy
(Transport::stopping_thresholds_ev).Source§fn escaped(&mut self, at: &ElectronState, _face: Face)
fn escaped(&mut self, at: &ElectronState, _face: Face)
face; at.energy_ev is the
energy it leaves with (its vacuum energy, with the step barrier).Source§fn end_history(&mut self, _index: u64, fate: Fate)
fn end_history(&mut self, _index: u64, fate: Fate)
fate is the
primary’s.Source§fn begin_history(&mut self, _index: u64, _start: &ElectronState)
fn begin_history(&mut self, _index: u64, _start: &ElectronState)
BoundaryModel::StepBarrier, start
is the primary in vacuum, before it meets the front face.Source§fn table_lookup(
&mut self,
_at: &ElectronState,
_channel: TableChannel,
_coverage: GridCoverage,
)
fn table_lookup( &mut self, _at: &ElectronState, _channel: TableChannel, _coverage: GridCoverage, )
channel’s table in layer at.layer was evaluated at
at.energy_ev, which lies coverage against that table’s grid. Read moreSource§fn begin_secondary(&mut self, _start: &ElectronState, _generation: u32)
fn begin_secondary(&mut self, _start: &ElectronState, _generation: u32)
generation (1 for a secondary of the
primary, 2 for one of a secondary, …) starts at start.Source§fn absorbed(&mut self, _at: &ElectronState)
fn absorbed(&mut self, _at: &ElectronState)
EscapeRule::FrontOnly).Source§impl PartialEq for SummaryTally
impl PartialEq for SummaryTally
impl StructuralPartialEq for SummaryTally
Auto Trait Implementations§
impl Freeze for SummaryTally
impl RefUnwindSafe for SummaryTally
impl Send for SummaryTally
impl Sync for SummaryTally
impl Unpin for SummaryTally
impl UnsafeUnpin for SummaryTally
impl UnwindSafe for SummaryTally
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