MARLEY (Model of Argon Reaction Low Energy Yields)
v1.2.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
|
Abstract base class for compound nucleus de-excitation channels. More...
#include <ExitChannel.hh>
Public Member Functions | |
ExitChannel ()=default | |
ExitChannel (int pdgi, int qi, double Exi, int twoJi, marley::Parity Pi, double rho_i, marley::StructureDatabase &sdb) | |
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. More... | |
virtual bool | emits_fragment () const =0 |
Returns true if this channel involves fragment emission or false if it involves gamma-ray emission. | |
virtual int | emitted_particle_pdg () const =0 |
Returns the PDG code for the particle (gamma-ray or nuclear fragment) emitted by decays into this ExitChannel. | |
virtual int | final_nucleus_pdg () const =0 |
Returns the PDG code for the final nucleus. | |
virtual bool | is_continuum () const =0 |
Returns true if this channel accesses the particle-unbound continuum of nuclear levels or false otherwise. | |
double | width () const |
Get the total decay width into this channel (MeV) | |
Static Public Member Functions | |
template<typename It > | |
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_ member variable. More... | |
Protected Member Functions | |
virtual void | compute_total_width ()=0 |
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. More... | |
Protected Attributes | |
double | Exi_ |
Initial nuclear excitation energy \( E_x \) (MeV) | |
double | one_over_two_pi_rho_i_ |
int | pdgi_ |
PDG code for the initial nucleus. | |
marley::Parity | Pi_ |
Initial nuclear parity \( \Pi \). | |
int | qi_ |
marley::StructureDatabase * | sdb_ |
StructureDatabase to use in calculations. | |
int | twoJi_ |
Two times the initial nuclear spin \( J \). | |
double | width_ |
Total decay width into this channel (MeV) | |
Abstract base class for compound nucleus de-excitation channels.
|
default |
|
inline |
pdgi | PDG code for the initial nucleus |
qi | Net charge (in units of the elementary charge) of the initial atom or ion |
Exi | Initial nuclear excitation energy \( E_x \) (MeV) |
twoJi | Two times the initial nuclear spin \( J \) |
Pi | Initial nuclear parity \( \Pi \) |
rho_i | Initial nuclear level density \( \rho(E_x, J, \Pi) \) in the vicinity of the initial level (MeV -1). This value will be used to compute an overall normalization factor for decay widths in this exit channel. |
sdb | Reference to the StructureDatabase that will be used in decay width calculations by this ExitChannel object |
|
protectedpure virtual |
Helper function that initializes the width_ member variable upon construction
Implemented in marley::GammaDiscreteExitChannel, marley::FragmentDiscreteExitChannel, and marley::ContinuumExitChannel.
|
pure virtual |
Simulates a nuclear decay into this channel.
[out] | Exf | The final nuclear excitation energy |
[out] | two_Jf | Two times the final nuclear spin |
[out] | Pf | The final nuclear parity |
[in] | compound_nucleus | Particle object representing the initial nucleus |
[out] | emitted_particle | Particle emitted in the de-excitation |
[out] | residual_nucleus | Final-state nucleus after particle emission |
gen | Generator to use for random sampling |
Implemented in marley::ContinuumExitChannel, and marley::DiscreteExitChannel.
|
inlinestatic |
Convert an iterator that points to an ExitChannel object into an iterator to the ExitChannel's width_ member variable.
This is used to load a std::discrete_distribution with decay widths for sampling without redundant storage.
|
protectedvirtual |
Helper function that prepares Particle objects representing the products of the two-body decay.
|
protected |
Normalization factor needed so that the decay widths have correct units
This factor is equal to \( \left[ 2\pi\rho(E_x, J, \Pi) \right]^{-1} \) where \(\rho\) is the initial nuclear level density (MeV -1) in the vicinity of the initial nuclear level. This level has excitation energy \( E_x \), total spin \( J \), and parity \( \Pi \).
|
protected |
Net charge (in units of the elementary charge) of the initial atom or ion