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

A reduced nuclear matrix element that represents a transition caused by a neutrino-nucleus reaction. More...

#include <MatrixElement.hh>

Public Types

enum  TransitionType { FERMI = 0 , GAMOW_TELLER = 1 }
 Enumerated type that represents the possible kinds of nuclear transitions recognized by MARLEY. More...
 

Public Member Functions

 MatrixElement (double level_energy, double strength, TransitionType type, marley::Level *final_level=nullptr)
 
double cos_theta_pdf (double cos_theta_c_cm, double beta_c_cm) const
 Compute the PDF for the CM frame scattering cosine. More...
 
marley::Levellevel ()
 Get a pointer to the final-state nuclear Level accessed by the matrix element, or nullptr if it is a transition to the unbound continuum.
 
const marley::Levellevel () const
 Get a pointer to the final-state nuclear Level accessed by the matrix element, or nullptr if it is a transition to the unbound continuum.
 
double level_energy () const
 Get the excitation energy (MeV) of the final-state nuclear level accessed by the matrix element.
 
void set_level (marley::Level *lev)
 Set the pointer to the final nuclear Level object accessed by the matrix element.
 
void set_level_energy (double energy)
 Set the excitation energy (MeV) of the final-state nuclear level accessed by the matrix element.
 
void set_strength (double strength)
 Set the numerical value (dimensionless) of the matrix element.
 
void set_type (TransitionType type)
 Set the kind of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element.
 
double strength () const
 Get the numerical value (dimensionless) of the matrix element.
 
double tabulated_level_energy () const
 Get the excitation energy (MeV) listed for this level in the reaction matrix element data file. More...
 
TransitionType type () const
 Get the kind of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element.
 
std::string type_str () const
 Returns a string representation of the transition type for this matrix element.
 

Protected Attributes

marley::Levelfinal_level_
 Pointer to the final Level object for a transition to a discrete nuclear level, or nullptr for an unbound state.
 
double level_energy_
 Energy (MeV) of the final-state nuclear level accessed by this matrix element.
 
double strength_
 Numerical value of the matrix element (dimensionless)
 
TransitionType type_
 The kind of transition represented by this matrix element (Fermi, Gamow-Teller, etc.)
 

Detailed Description

A reduced nuclear matrix element that represents a transition caused by a neutrino-nucleus reaction.

Member Enumeration Documentation

◆ TransitionType

Enumerated type that represents the possible kinds of nuclear transitions recognized by MARLEY.

Enumerator
FERMI 

The reduced Fermi matrix element is defined by \( \frac{ g_V^2 \big| \big< J_f \big\lVert \mathcal{O}_\mathrm{F} \big\rVert J_i \big> \big|^2 } { 2J_i + 1 }, \) where \(J_i\) ( \(J_f\)) is the initial (final) nuclear spin and \(g_V\) is the vector coupling constant of the nucleon. The Fermi operator \( \mathcal{O}_\mathrm{F} \) depends on the interaction process type (charged- vs. neutral-current) and is given by \( \mathcal{O}_\mathrm{F} = \begin{cases} \sum_{k = 1}^A t_{-}(k) & \text{CC, }\nu\text{ projectile} \\ \sum_{k = 1}^A t_{+}(k) & \text{CC, }\bar{\nu}\text{ projectile} \\ I & \text{NC} \\ \end{cases} \)
where \( t_{\pm} \) are the isospin raising and lowering operators and \( I \) is the identity operator in isospace. MARLEY uses the convention where \( t_{-}\big|n\big> = \big|p\big> \).

GAMOW_TELLER 

The reduced Gamow-Teller matrix element is defined by \( \frac{ g_A^2 \big| \big< J_f \big\lVert \sum_{k = 1}^A \boldsymbol{\sigma}(k)\Theta(k) \big\rVert J_i \big> \big|^2 }{ 2J_i + 1 } \) where \( g_A \) is the axial coupling constant of the nucleon and \( \Theta(k) \) is an operator in isospace that depends on the type of scattering process: \( \Theta = \begin{cases} t_{-} & \text{CC, }\nu\text{ projectile} \\ t_{+} & \text{CC, }\bar{\nu}\text{ projectile} \\ t_3 & \text{NC} \\ \end{cases} \)

Constructor & Destructor Documentation

◆ MatrixElement()

marley::MatrixElement::MatrixElement ( double  level_energy,
double  strength,
TransitionType  type,
marley::Level final_level = nullptr 
)
inline
Parameters
level_energyExcitation energy (MeV) of the final-state nuclear level accessed by the matrix element
strengthNumerical value (dimensionless) of the matrix element
typeType of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element
final_levelPointer to the Level object that represents the final nuclear level

Member Function Documentation

◆ cos_theta_pdf()

double marley::MatrixElement::cos_theta_pdf ( double  cos_theta_c_cm,
double  beta_c_cm 
) const
inline

Compute the PDF for the CM frame scattering cosine.

Parameters
cos_theta_c_cmEjectile scattering cosine in the CM frame
beta_c_cmEjectile speed (dimensionless) as measured in the CM frame

◆ tabulated_level_energy()

double marley::MatrixElement::tabulated_level_energy ( ) const
inline

Get the excitation energy (MeV) listed for this level in the reaction matrix element data file.

This value may differ from that returned by level_energy() for discrete nuclear levels. When final_level_ is not nullptr, level_energy() returns the excitation energy owned by final_level_, while tabulated_level_energy() returns the value of the level_energy_ member variable. The latter is initialized from the reaction data file and may not match the discrete level data. To achieve consistency between the two sets of level energies, MARLEY overrides the values tabulated in the reaction data files with their closest matching discrete level energies. The level_energy_ member variable retains the reaction dataset value for validation purposes. For any physics calculation in MARLEY, level_energy() should be used instead of tabulated_level_energy().


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