use serde::{Deserialize, Serialize};
use super::Reaction;
use crate::{
variables::{Angles, CosTheta, Phi},
LadduResult,
};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Production {
pub(super) reaction: Reaction,
pub(super) produced: String,
pub(super) recoil: String,
}
impl Production {
pub const fn reaction(&self) -> &Reaction {
&self.reaction
}
pub fn produced(&self) -> &str {
&self.produced
}
pub fn recoil(&self) -> &str {
&self.recoil
}
pub fn costheta(&self) -> LadduResult<CosTheta> {
Ok(CosTheta::from_production(
self.reaction.clone(),
self.produced.clone(),
))
}
pub fn phi(&self) -> LadduResult<Phi> {
Ok(Phi::from_production(
self.reaction.clone(),
self.produced.clone(),
))
}
pub fn angles(&self) -> LadduResult<Angles> {
Ok(Angles::from_production(
self.reaction.clone(),
self.produced.clone(),
))
}
}