fn main() {
use goad::convergence::Convergence;
use goad::params::Param;
use goad::result::GOComponent;
use goad::settings;
let settings = settings::load_default_config().unwrap();
let mut convergence = Convergence::new(None, Some(settings)).unwrap();
convergence.add_target(Param::Asymmetry, 0.03);
convergence.add_target(Param::Asymmetry, 0.02);
convergence.add_target(Param::ScatCross, 0.02);
convergence.add_target(Param::ExtCrossOpticalTheorem, 0.02);
convergence.add_target(Param::DepolarizationRatio, 0.1);
convergence.add_target(Param::LidarRatio, 0.1);
convergence.max_orientations = 500;
convergence.solve().unwrap();
let mean = convergence.mean();
let sem = convergence.sem();
let asym = mean.params.asymmetry(&GOComponent::Total).unwrap_or(0.0);
let asym_sem = sem.params.asymmetry(&GOComponent::Total).unwrap_or(0.0);
let relative_sem = (asym_sem / asym.abs()) * 100.0;
println!("Orientations computed: {}", convergence.count());
println!(
"Asymmetry: {:.4} +/- {:.4} ({:.2}% relative SEM)",
asym, asym_sem, relative_sem
);
convergence.writeup();
}