nyx_space/od/position/
mod.rs1pub mod sensitivity;
2pub mod trk_device;
3
4use crate::io::ConfigRepr;
5use crate::od::msr::MeasurementType;
6use crate::od::noise::StochasticNoise;
7use indexmap::IndexMap;
8use indexmap::IndexSet;
9use serde::{Deserialize, Serialize};
10use std::fmt::Display;
11
12#[derive(Clone, Debug, Serialize, Deserialize)]
14pub struct PositionDevice {
15 pub name: String,
16 pub stochastic_noises: Option<IndexMap<MeasurementType, StochasticNoise>>,
17 pub measurement_types: IndexSet<MeasurementType>,
18}
19
20impl PositionDevice {
21 pub fn new(name: String) -> Self {
22 Self {
23 name,
24 stochastic_noises: None,
25 measurement_types: IndexSet::new(),
26 }
27 }
28
29 pub fn with_noise(mut self, msr_type: MeasurementType, noise: StochasticNoise) -> Self {
30 if self.stochastic_noises.is_none() {
31 self.stochastic_noises = Some(IndexMap::new());
32 }
33 self.stochastic_noises
34 .as_mut()
35 .unwrap()
36 .insert(msr_type, noise);
37 self.measurement_types.insert(msr_type);
38 self
39 }
40}
41
42impl ConfigRepr for PositionDevice {}
43
44impl Display for PositionDevice {
45 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
46 write!(f, "PositionDevice({})", self.name)
47 }
48}