MARLEY (Model of Argon Reaction Low Energy Yields)  v1.1.0
A Monte Carlo event generator for tens-of-MeV neutrino-nucleus interactions in liquid argon
 All Classes Functions Variables Enumerations Pages
Public Member Functions | List of all members
marley::NuclearReaction Class Reference

A neutrino-nucleus reaction. More...

#include <NuclearReaction.hh>

Inheritance diagram for marley::NuclearReaction:
marley::Reaction

Public Member Functions

 NuclearReaction (std::string filename, marley::StructureDatabase &db)
 
virtual marley::Event create_event (int particle_id_a, double KEa, marley::Generator &gen) override
 Create an event object for this reaction. More...
 
double fermi_function (double beta_c) const
 Compute the Fermi function More...
 
double max_level_energy (double KEa) const
 Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically allowed. More...
 
void set_decay_scheme (marley::DecayScheme *scheme)
 Sets the DecayScheme object to use for sampling excited levels in the residue. More...
 
double threshold_kinetic_energy () const
 Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed via a transition to the residue's ground state.
 
virtual double total_xs (int pdg_a, double KEa) override
 Total reaction cross section (MeV -2), including all kinematically-allowed final nuclear levels. More...
 
virtual double total_xs (double E_level, double KEa, double matrix_element) const
 Total cross section for a given final nuclear level energy, in units convenient for sampling. More...
 
- Public Member Functions inherited from marley::Reaction
std::string get_description ()
 Get a string that contains the formula for this reaction.
 

Additional Inherited Members

- Protected Member Functions inherited from marley::Reaction
void two_two_scatter (double KEa, double &s, double &Ec_cm, double &pc_cm, double &Ed_cm)
 Helper function that handles CM frame kinematics for the reaction. More...
 
- Protected Attributes inherited from marley::Reaction
std::string description_
 String that contains a formula describing the reaction.
 
double ma2_
 Squared projectile mass (MeV) More...
 
double ma_
 Projectile mass (MeV)
 
double mb2_
 Squared target mass (MeV)
 
double mb_
 Target mass (MeV)
 
double mc2_
 Squared ejectile mass (MeV)
 
double mc_
 Ejectile mass (MeV)
 
double md2_
 Squared residue mass (MeV)
 
double md_
 Residue mass (MeV)
 
int pdg_a_
 PDG code for the projectile.
 
int pdg_b_
 PDG code for the target.
 
int pdg_c_
 PDG code for the ejectile.
 
int pdg_d_
 PDG code for the residue.
 

Detailed Description

A neutrino-nucleus reaction.

Constructor & Destructor Documentation

marley::NuclearReaction::NuclearReaction ( std::string  filename,
marley::StructureDatabase db 
)
Parameters
filenameName (with path, if needed) of the matrix element data file
dbReference to the StructureDatabase to use for sampling excited nuclear levels
Todo:
Add more error handling for NuclearReaction::NuclearReaction
Todo:
Consider automatically generating reaction descriptions from the particle PDG codes rather than entering the formulae into the reaction data files by hand.
Todo:
Consider implementing a sorting procedure rather than strictly enforcing that energies must be given in ascending order.

Member Function Documentation

marley::Event marley::NuclearReaction::create_event ( int  pdg_a,
double  KEa,
marley::Generator gen 
)
overridevirtual

Create an event object for this reaction.

Parameters
pdg_aPDG code for the incident projectile
KEaLab-frame kinetic energy of the projectile
genReference to the Generator to use for random sampling
Todo:
Add more error checks to NuclearReaction::create_event as necessary
Todo:
Remove hard-coded cutoff value
Todo:
Come up with a better way of determining the Jpi values that will work for forbidden transition operators.
Todo:
include possibility of negative parity here.

Implements marley::Reaction.

double marley::NuclearReaction::fermi_function ( double  beta_c) const

Compute the Fermi function

Parameters
beta_cDimensionless speed of the ejectile
double marley::NuclearReaction::max_level_energy ( double  KEa) const

Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically allowed.

Parameters
KEaProjectile lab-frame kinetic energy (MeV)
void marley::NuclearReaction::set_decay_scheme ( marley::DecayScheme scheme)

Sets the DecayScheme object to use for sampling excited levels in the residue.

Todo:
Add check to see if the energy of the chosen level is very different from the energy given in the reaction dataset. If it is, the level matchup is likely incorrect.
double marley::NuclearReaction::total_xs ( int  pdg_a,
double  KEa 
)
overridevirtual

Total reaction cross section (MeV -2), including all kinematically-allowed final nuclear levels.

Parameters
pdg_aPDG code for the projectile
KEaLab-frame kinetic energy (MeV) of the projectile
Returns
Reaction total cross section (MeV -2)
Note
This function returns 0. if pdg_a != pdg_a_.
Todo:
Consider whether you should use an exception if pdg_a != pdg_a_

Implements marley::Reaction.

double marley::NuclearReaction::total_xs ( double  E_level,
double  KEa,
double  matrix_element 
) const
virtual

Total cross section for a given final nuclear level energy, in units convenient for sampling.

Parameters
E_levelResidue excitation energy (MeV)
KEaLab-frame projectile kinetic energy (MeV)
matrix_elementNuclear matrix element for a transition to the level of interest

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