Fission::Fission(const AceIsotope* isotope, const Ace::NeutronReaction& ace_reaction) : GenericReaction(isotope, ace_reaction), prompt_nu(0) { /* Get distribution of emerging particles */ const Ace::TyrDistribution& tyr = ace_reaction.getTyr(); /* Sanity check */ assert(tyr.getType() == Ace::TyrDistribution::fission); /* Get the NU data related to this fission reaction */ vector<Ace::NUBlock::NuData*> nu_data = tyr.getFission(); /* TODO - For now just sample particles with prompt spectrum */ if(nu_data.size() >= 2) prompt_nu = buildNuSampler(nu_data[1]); else if(nu_data.size() == 1) prompt_nu = buildNuSampler(nu_data[0]); else throw(AceModule::AceError(isotope->getUserId(), "Cannot create reaction for mt = " + toString(ace_reaction.getMt()) + " : Information in NU block is not available" )); }
InelasticScattering(const AceIsotopeBase* isotope, const Ace::NeutronReaction& ace_reaction) : GenericReaction(isotope, ace_reaction), FramePolicy(isotope->getAwr()), NuPolicy(ace_reaction.getTyr()) {/* */};