mod f64_tests {
use rustitude_core::assert_is_close;
use rustitude_core::prelude::*;
use rustitude_core::utils::*;
#[test]
fn test_masses() {
let event = generate_test_event_f64();
assert_is_close!(event.beam_p4.m(), 0.0, f64);
assert_is_close!(event.recoil_p4.m(), 0.938_272_0, f64);
assert_is_close!(event.daughter_p4s[0].m(), 0.497_611, 1e-4, f64);
assert_is_close!(event.daughter_p4s[1].m(), 0.497_611, 1e-4, f64);
let resonance: FourMomentum<f64> = event.daughter_p4s.into_iter().sum();
assert_is_close!(resonance.m(), 1.374_272_5, f64);
}
#[test]
fn test_activation() -> Result<(), RustitudeError> {
let event = generate_test_event_f64();
let dataset = Dataset::new(vec![event]);
let model = model!(
scalar("a") + scalar("b"),
scalar("c") * scalar("d") + scalar("e"),
);
let mut manager = Manager::new(&model, &dataset)?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1440121.0,
f64
);
manager.deactivate_all();
manager.activate("a")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1.0,
f64
);
manager.activate("b")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
121.0,
f64
);
manager.activate("c")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
10121.0,
f64
);
manager.deactivate("c")?;
manager.deactivate("c")?; manager.activate("d")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
125.0,
f64
);
manager.activate_all();
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1440121.0,
f64
);
Ok(())
}
#[test]
fn test_distribution() -> Result<(), RustitudeError> {
let event = generate_test_event_f64();
let dataset = Dataset::new(vec![event]);
let model = model!((scalar("a") + scalar("b")) * scalar("c") + scalar("d"));
let manager = Manager::new(&model, &dataset)?;
assert_is_close!(manager.evaluate(&[2.0, 4.0, 3.0, 10.0])?[0], 900.0, f64);
Ok(())
}
}
mod f32_tests {
use rustitude_core::assert_is_close;
use rustitude_core::prelude::*;
use rustitude_core::utils::*;
#[test]
fn test_masses() {
let event = generate_test_event_f32();
assert_is_close!(event.beam_p4.m(), 0.0, f32);
assert_is_close!(event.recoil_p4.m(), 0.938_272, f32);
assert_is_close!(event.daughter_p4s[0].m(), 0.497611, 1e-4, f32);
assert_is_close!(event.daughter_p4s[1].m(), 0.497611, 1e-4, f32);
let resonance: FourMomentum<f32> = event.daughter_p4s.into_iter().sum();
assert_is_close!(resonance.m(), 1.374_273, f32);
}
#[test]
fn test_activation() -> Result<(), RustitudeError> {
let event = generate_test_event_f32();
let dataset = Dataset::new(vec![event]);
let model = model!(
scalar("a") + scalar("b"),
scalar("c") * scalar("d") + scalar("e"),
);
let mut manager = Manager::new(&model, &dataset)?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1440121.0,
f32
);
manager.deactivate_all();
manager.activate("a")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1.0,
f32
);
manager.activate("b")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
121.0,
f32
);
manager.activate("c")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
10121.0,
f32
);
manager.deactivate("c")?;
manager.deactivate("c")?; manager.activate("d")?;
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
125.0,
f32
);
manager.activate_all();
assert_is_close!(
manager.evaluate(&[1.0, 10.0, 100.0, 2.0, 1000.0])?[0],
1440121.0,
f32
);
Ok(())
}
#[test]
fn test_distribution() -> Result<(), RustitudeError> {
let event = generate_test_event_f32();
let dataset = Dataset::new(vec![event]);
let model = model!((scalar("a") + scalar("b")) * scalar("c") + scalar("d"));
let manager = Manager::new(&model, &dataset)?;
assert_is_close!(manager.evaluate(&[2.0, 4.0, 3.0, 10.0])?[0], 900.0, f32);
Ok(())
}
}