24 #include "marley/ChebyshevInterpolatingFunction.hh"
25 #include "marley/Fragment.hh"
26 #include "marley/Generator.hh"
27 #include "marley/IteratorToPointerMember.hh"
28 #include "marley/Level.hh"
29 #include "marley/MassTable.hh"
30 #include "marley/Parity.hh"
31 #include "marley/marley_utils.hh"
82 virtual void do_decay(
double& Exf,
int& two_Jf,
91 template<
typename It>
static inline
166 virtual void do_decay(
double& Ex,
int& two_J,
171 inline virtual bool is_continuum() const final
override {
return false; }
218 {
return marley_utils::PHOTON; }
232 double gamma_energy(
double Exf )
const;
257 virtual
void do_decay(
double& Ex,
int& two_J,
260 marley::
Generator& gen) const final override;
262 virtual
double differential_width(
double Exf,
263 bool store_jpi_widths = false ) const = 0;
265 inline virtual
bool is_continuum() const final
override {
return true; }
272 { skip_jpi_sampling_ = skip_it; }
283 : twoJf(twoJ), Pf(p), diff_width(w) {}
292 void sample_spin_parity(
double Exf,
int& two_Jf,
marley::Parity& Pf,
296 inline double E_c_min()
const {
return E_c_min_; }
317 mutable bool skip_jpi_sampling_ =
false;
323 mutable std::unique_ptr<marley::ChebyshevInterpolatingFunction>
Exf_cdf_;
339 :
ExitChannel( pdgi, qi, Exi, twoJi, Pi, rho_i, sdb ),
383 :
ExitChannel( pdgi, qi, Exi, twoJi, Pi, rho_i, sdb ),
390 virtual double differential_width(
double Exf,
391 bool store_jpi_widths =
false ) const final override;
393 inline virtual
double E_c_max() const final
override
409 double Ec_min) :
ExitChannel( pdgi, qi, Exi, twoJi, Pi, rho_i, sdb ),
416 virtual double differential_width(
double Exf,
417 bool store_jpi_widths =
false ) const final override;
419 inline virtual
double E_c_max() const final
override
Abstract base class for ExitChannel objects that lead to the unbound continuum in the final state.
Definition: ExitChannel.hh:241
ContinuumExitChannel(double Ec_min, int lmax)
Definition: ExitChannel.hh:250
void set_skip_jpi_sampling(bool skip_it) const
Sets the flag that will skip sampling of a final-state nuclear spin-parity value in do_decay()
Definition: ExitChannel.hh:271
double E_c_min() const
Returns the minimum excitation energy bound for the continuum.
Definition: ExitChannel.hh:296
virtual double E_c_max() const =0
Returns the maximum accessible excitation energy to be used when integrating over the continuum.
double E_c_min_
Minimum accessible nuclear excitation energy (MeV) in the continuum.
Definition: ExitChannel.hh:305
int l_max_
Definition: ExitChannel.hh:309
std::vector< SpinParityWidth > jpi_widths_table_
Table of possible final-state spin-parities together with their partial differential decay widths.
Definition: ExitChannel.hh:313
std::unique_ptr< marley::ChebyshevInterpolatingFunction > Exf_cdf_
Chebyshev polynomial interpolant to the cumulative density function for the final-state nuclear excit...
Definition: ExitChannel.hh:323
Abstract base class for ExitChannel objects that lead to discrete nuclear levels in the final state.
Definition: ExitChannel.hh:160
const marley::Level & final_level_
Reference to the final-state nuclear level.
Definition: ExitChannel.hh:180
virtual bool is_continuum() const final override
Returns true if this channel accesses the particle-unbound continuum of nuclear levels or false other...
Definition: ExitChannel.hh:171
const marley::Level & get_final_level() const
Get a const reference to the final-state nuclear level.
Definition: ExitChannel.hh:174
virtual void do_decay(double &Ex, int &two_J, marley::Parity &Pi, const marley::Particle &compound_nucleus, marley::Particle &emitted_particle, marley::Particle &residual_nucleus, marley::Generator &gen) const final override
Simulates a nuclear decay into this channel.
Definition: ExitChannel.cc:368
DiscreteExitChannel(const marley::Level &flev)
Definition: ExitChannel.hh:164
Abstract base class for compound nucleus de-excitation channels.
Definition: ExitChannel.hh:36
int twoJi_
Two times the initial nuclear spin .
Definition: ExitChannel.hh:138
virtual bool emits_fragment() const =0
Returns true if this channel involves fragment emission or false if it involves gamma-ray emission.
int pdgi_
PDG code for the initial nucleus.
Definition: ExitChannel.hh:128
double width_
Total decay width into this channel (MeV)
Definition: ExitChannel.hh:152
marley::StructureDatabase * sdb_
StructureDatabase to use in calculations.
Definition: ExitChannel.hh:155
virtual void do_decay(double &Exf, int &two_Jf, marley::Parity &Pf, const marley::Particle &compound_nucleus, marley::Particle &emitted_particle, marley::Particle &residual_nucleus, marley::Generator &gen) const =0
Simulates a nuclear decay into this channel.
marley::Parity Pi_
Initial nuclear parity .
Definition: ExitChannel.hh:141
double width() const
Get the total decay width into this channel (MeV)
Definition: ExitChannel.hh:99
ExitChannel(int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb)
Definition: ExitChannel.hh:55
int qi_
Definition: ExitChannel.hh:132
virtual void compute_total_width()=0
virtual int emitted_particle_pdg() const =0
Returns the PDG code for the particle (gamma-ray or nuclear fragment) emitted by decays into this Exi...
virtual bool is_continuum() const =0
Returns true if this channel accesses the particle-unbound continuum of nuclear levels or false other...
double Exi_
Initial nuclear excitation energy (MeV)
Definition: ExitChannel.hh:135
virtual void prepare_products(const marley::Particle &compound_nucleus, marley::Particle &emitted_particle, marley::Particle &residual_nucleus, double Exf, marley::Generator &gen) const
Helper function that prepares Particle objects representing the products of the two-body decay.
Definition: ExitChannel.cc:380
virtual int final_nucleus_pdg() const =0
Returns the PDG code for the final nucleus.
static marley::IteratorToPointerMember< It, double > make_width_iterator(It it)
Convert an iterator that points to an ExitChannel object into an iterator to the ExitChannel's width_...
Definition: ExitChannel.hh:92
double one_over_two_pi_rho_i_
Definition: ExitChannel.hh:149
Fragment emission ExitChannel that leads to the unbound continuum in the final state
Definition: ExitChannel.hh:374
FragmentContinuumExitChannel(int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb, double Ec_min, const marley::Fragment &frag)
Definition: ExitChannel.hh:380
Fragment emission ExitChannel that leads to a discrete nuclear level in the final state
Definition: ExitChannel.hh:330
FragmentDiscreteExitChannel(int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb, const marley::Level &flev, const marley::Fragment &frag)
Definition: ExitChannel.hh:336
Abstract base class for ExitChannel objects that represent emission of a nuclear fragment.
Definition: ExitChannel.hh:185
FragmentExitChannel(const marley::Fragment &fragment)
Definition: ExitChannel.hh:189
virtual int emitted_particle_pdg() const final override
Returns the PDG code for the particle (gamma-ray or nuclear fragment) emitted by decays into this Exi...
Definition: ExitChannel.hh:192
int fragment_pdg_
PDG code identifying the emitted fragment.
Definition: ExitChannel.hh:207
virtual int final_nucleus_pdg() const final override
Returns the PDG code for the final nucleus.
Definition: ExitChannel.cc:60
double max_Exf() const
Helper function that returns that maximum possible excitation energy for the daughter nucleus after e...
Definition: ExitChannel.cc:74
virtual bool emits_fragment() const final override
Returns true if this channel involves fragment emission or false if it involves gamma-ray emission.
Definition: ExitChannel.hh:195
Simple container for storing reference data about each of the nuclear fragments considered by MARLEY'...
Definition: Fragment.hh:27
Gamma emission exit channel that leads to the unbound continuum in the final state
Definition: ExitChannel.hh:401
GammaContinuumExitChannel(int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb, double Ec_min)
Definition: ExitChannel.hh:407
Gamma emission exit channel that leads to a discrete nuclear level in the final state
Definition: ExitChannel.hh:352
GammaDiscreteExitChannel(int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb, const marley::Level &flev)
Definition: ExitChannel.hh:358
Abstract base class for ExitChannel objects that represent emission of a gamma-ray.
Definition: ExitChannel.hh:212
virtual bool emits_fragment() const final override
Returns true if this channel involves fragment emission or false if it involves gamma-ray emission.
Definition: ExitChannel.hh:220
virtual int emitted_particle_pdg() const final override
Returns the PDG code for the particle (gamma-ray or nuclear fragment) emitted by decays into this Exi...
Definition: ExitChannel.hh:217
virtual int final_nucleus_pdg() const final override
Returns the PDG code for the final nucleus.
Definition: ExitChannel.hh:223
TransitionType
Electromagnetic transitions in nuclei may be classified by their multipolarity (electric vs....
Definition: GammaStrengthFunctionModel.hh:43
The MARLEY Event generator.
Definition: Generator.hh:42
Template class that creates an iterator to a class member based on an iterator to a pointer (either b...
Definition: IteratorToPointerMember.hh:31
A discrete nuclear energy level.
Definition: Level.hh:29
Type-safe representation of a parity value (either +1 or -1)
Definition: Parity.hh:25
Momentum four-vector for a simulated particle.
Definition: Particle.hh:32
Container for nuclear structure information organized by nuclide.
Definition: StructureDatabase.hh:39
A spin-parity value with its corresponding partial decay width.
Definition: ExitChannel.hh:277
SpinParityWidth(int twoJ, marley::Parity p, double w)
Definition: ExitChannel.hh:282
double diff_width
Partial differential decay width (MeV)
Definition: ExitChannel.hh:287
marley::Parity Pf
Final nuclear parity.
Definition: ExitChannel.hh:286
int twoJf
Final nuclear spin.
Definition: ExitChannel.hh:285