MARLEY (Model of Argon Reaction Low Energy Yields)  v1.2.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
marley::ExitChannel Class Referenceabstract

Abstract base class for compound nucleus de-excitation channels. More...

#include <ExitChannel.hh>

Inheritance diagram for marley::ExitChannel:
marley::ContinuumExitChannel marley::DiscreteExitChannel marley::FragmentExitChannel marley::GammaExitChannel marley::FragmentContinuumExitChannel marley::GammaContinuumExitChannel marley::FragmentDiscreteExitChannel marley::GammaDiscreteExitChannel marley::FragmentContinuumExitChannel marley::FragmentDiscreteExitChannel marley::GammaContinuumExitChannel marley::GammaDiscreteExitChannel

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::StructureDatabasesdb_
 StructureDatabase to use in calculations.
 
int twoJi_
 Two times the initial nuclear spin \( J \).
 
double width_
 Total decay width into this channel (MeV)
 

Detailed Description

Abstract base class for compound nucleus de-excitation channels.

Constructor & Destructor Documentation

◆ ExitChannel() [1/2]

marley::ExitChannel::ExitChannel ( )
default
Note
This line keeps old versions (4.9.3) of GCC happy

◆ ExitChannel() [2/2]

marley::ExitChannel::ExitChannel ( int  pdgi,
int  qi,
double  Exi,
int  twoJi,
marley::Parity  Pi,
double  rho_i,
marley::StructureDatabase sdb 
)
inline
Parameters
pdgiPDG code for the initial nucleus
qiNet charge (in units of the elementary charge) of the initial atom or ion
ExiInitial nuclear excitation energy \( E_x \) (MeV)
twoJiTwo times the initial nuclear spin \( J \)
PiInitial nuclear parity \( \Pi \)
rho_iInitial 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.
sdbReference to the StructureDatabase that will be used in decay width calculations by this ExitChannel object

Member Function Documentation

◆ compute_total_width()

virtual void marley::ExitChannel::compute_total_width ( )
protectedpure virtual

Helper function that initializes the width_ member variable upon construction

Implemented in marley::GammaDiscreteExitChannel, marley::FragmentDiscreteExitChannel, and marley::ContinuumExitChannel.

◆ do_decay()

virtual void marley::ExitChannel::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
pure virtual

Simulates a nuclear decay into this channel.

Parameters
[out]ExfThe final nuclear excitation energy
[out]two_JfTwo times the final nuclear spin
[out]PfThe final nuclear parity
[in]compound_nucleusParticle object representing the initial nucleus
[out]emitted_particleParticle emitted in the de-excitation
[out]residual_nucleusFinal-state nucleus after particle emission
genGenerator to use for random sampling

Implemented in marley::ContinuumExitChannel, and marley::DiscreteExitChannel.

◆ make_width_iterator()

template<typename It >
static marley::IteratorToPointerMember<It, double> marley::ExitChannel::make_width_iterator ( It  it)
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.

◆ prepare_products()

void marley::ExitChannel::prepare_products ( const marley::Particle compound_nucleus,
marley::Particle emitted_particle,
marley::Particle residual_nucleus,
double  Exf,
marley::Generator gen 
) const
protectedvirtual

Helper function that prepares Particle objects representing the products of the two-body decay.

Parameters
[out]compound_nucleusParticle object representing the initial nucleus
[out]emitted_particleParticle emitted in the binary decay
[out]residual_nucleusParticle representing the daughter nucleus
[in]ExfExcitation energy of the daughter nucleus
genGenerator to use for random sampling

Member Data Documentation

◆ one_over_two_pi_rho_i_

double marley::ExitChannel::one_over_two_pi_rho_i_
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 \).

◆ qi_

int marley::ExitChannel::qi_
protected

Net charge (in units of the elementary charge) of the initial atom or ion


The documentation for this class was generated from the following files: