Skip to main content

fpm_rs/simulation/
illumination_acquisition_errors.rs

1use serde::{Deserialize, Serialize};
2
3/// Non-geometric illumination errors introduced during acquisition.
4///
5/// Physical source geometry belongs on the concrete illumination source used
6/// to compile the true and reconstruction models.
7#[derive(Clone, Debug, Default, Serialize, Deserialize)]
8pub struct IlluminationAcquisitionErrors {
9    /// Relative one-sigma frame-gain variation.
10    pub frame_gain_relative_std: f64,
11    /// Acquisition-frame indices for which illumination fails.
12    pub missing_frames: Vec<usize>,
13    /// Source index assigned to each compiled source slot.
14    pub source_permutation: Option<Vec<usize>>,
15}
16
17impl IlluminationAcquisitionErrors {
18    pub fn new() -> Self {
19        Self::default()
20    }
21
22    pub fn frame_gain_relative_std(mut self, relative_standard_deviation: f64) -> Self {
23        self.frame_gain_relative_std = relative_standard_deviation;
24        self
25    }
26
27    pub fn missing_frames(mut self, indices: Vec<usize>) -> Self {
28        self.missing_frames = indices;
29        self
30    }
31
32    pub fn source_permutation(mut self, permutation: Vec<usize>) -> Self {
33        self.source_permutation = Some(permutation);
34        self
35    }
36}