21#include "marley/ExitChannel.hh"
22#include "marley/Parity.hh"
25#include "HepMC3/GenParticle.h"
63 emitted_particle, std::shared_ptr< HepMC3::GenParticle >&
68 void print( std::ostream& out )
const;
72 inline std::vector< std::unique_ptr<marley::ExitChannel> >&
77 inline const std::vector< std::unique_ptr<marley::ExitChannel> >&
85 inline double total_width()
const;
96 const std::shared_ptr< HepMC3::GenParticle > compound_nucleus_;
102 double total_width_ = 0.;
105 std::vector< std::unique_ptr<marley::ExitChannel> > exit_channels_;
109 inline std::vector< std::unique_ptr<marley::ExitChannel> >&
112 inline const std::vector< std::unique_ptr<marley::ExitChannel> >&
115 inline double HauserFeshbachDecay::total_width()
const
116 {
return total_width_; }
120inline std::ostream& operator<<( std::ostream& out,
Abstract base class for compound nucleus de-excitation channels.
The MARLEY Event generator.
Monte Carlo implementation of the Hauser-Feshbach statistical model for decays of highly-excited nucl...
std::vector< std::unique_ptr< marley::ExitChannel > > & exit_channels()
Get a non-const reference to the owned vector of ExitChannel pointers.
const marley::ExitChannel & do_decay(double &Exf, int &twoJf, marley::Parity &Pf, std::shared_ptr< HepMC3::GenParticle > &emitted_particle, std::shared_ptr< HepMC3::GenParticle > &residual_nucleus, int &qIon, marley::Generator &gen)
Simulates a decay of the compound nucleus.
void print(std::ostream &out) const
Print information about the possible decay channels to a std::ostream.
HauserFeshbachDecay(const std::shared_ptr< HepMC3::GenParticle > &compound_nucleus, double Exi, int twoJi, marley::Parity Pi, marley::StructureDatabase &sdb)
const std::unique_ptr< marley::ExitChannel > & sample_exit_channel(marley::Generator &gen) const
Helper function for do_decay(). Samples an ExitChannel using the partial decay widths as weights.
Type-safe representation of a parity value (either +1 or -1)
Container for nuclear structure information organized by nuclide.