Skip to content
Snippets Groups Projects
Commit 6c5bfe2c authored by Udo Eisenbarth's avatar Udo Eisenbarth :speech_balloon:
Browse files

Implement Debug trait for Sepctrometer.

This is only a preliminary solution until we have a general reporting.
parent 2ee9a9df
No related branches found
No related tags found
1 merge request!4Resolve "Add detector node "spectrometer""
Pipeline #7337 passed
......@@ -5,7 +5,7 @@ use opossum::{
analyzer::AnalyzerEnergy,
error::OpossumError,
lightdata::{DataEnergy, LightData},
nodes::{BeamSplitter, Detector, FilterType, IdealFilter, Source, EnergyMeter},
nodes::{BeamSplitter, Detector, FilterType, IdealFilter, Source, EnergyMeter, Spectrometer},
spectrum::{create_he_ne_spectrum, Spectrum},
OpticScenery,
};
......@@ -27,7 +27,7 @@ fn main() -> Result<(), OpossumError> {
IdealFilter::new(FilterType::Spectrum(filter_spectrum))?,
);
let i_d1 = scenery.add_element("Detector 1", Detector::default());
let i_d2 = scenery.add_element("Detector 2", Detector::default());
let i_d2 = scenery.add_element("Detector 2", Spectrometer::default());
let i_d3 = scenery.add_element("Detector 3", EnergyMeter::default());
scenery.connect_nodes(i_s, "out1", i_bs, "input1")?;
......
use uom::si::length::nanometer;
use crate::lightdata::LightData;
use crate::{
error::OpossumError,
......@@ -88,20 +90,32 @@ impl Optical for Spectrometer {
impl Debug for Spectrometer {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match &self.light_data {
Some(data) => write!(f, "{} (Type: {:?})", data, self.spectrometer_type),
Some(data) => match data {
LightData::Energy(data_energy) => {
let spectrum_range = data_energy.spectrum.range();
write!(
f,
"Spectrum {:.3} - {:.3} nm (Type: {:?})",
spectrum_range.start.get::<nanometer>(),
spectrum_range.end.get::<nanometer>(),
self.spectrometer_type
)
}
_ => write!(f, "no spectrum data to display"),
},
None => write!(f, "no data"),
}
}
}
impl Dottable for Spectrometer {
fn node_color(&self) -> &str {
"lightblue"
"lightseagreen"
}
}
#[cfg(test)]
mod test {
use crate::{lightdata::DataEnergy, spectrum::create_he_ne_spectrum, analyzer::AnalyzerType};
use crate::{analyzer::AnalyzerType, lightdata::DataEnergy, spectrum::create_he_ne_spectrum};
use super::*;
#[test]
......@@ -117,12 +131,15 @@ mod test {
assert_eq!(meter.spectrometer_type, SpectrometerType::IdealSpectrometer);
assert_eq!(meter.node_type(), "spectrometer");
assert_eq!(meter.is_detector(), true);
assert_eq!(meter.node_color(), "XXX");
assert_eq!(meter.node_color(), "lightseagreen");
}
#[test]
fn meter_type() {
let meter = Spectrometer::new(SpectrometerType::IdealSpectrometer);
assert_eq!(meter.spectrometer_type(), SpectrometerType::IdealSpectrometer);
assert_eq!(
meter.spectrometer_type(),
SpectrometerType::IdealSpectrometer
);
}
#[test]
fn set_meter_type() {
......@@ -147,7 +164,7 @@ mod test {
spectrum: create_he_ne_spectrum(1.0),
})),
);
let result=meter.analyze(input, &AnalyzerType::Energy);
let result = meter.analyze(input, &AnalyzerType::Energy);
assert!(result.is_ok());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment