MARLEY (Model of Argon Reaction Low Energy Yields) v2.0.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
Loading...
Searching...
No Matches
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, double err_low, double err_high, marley::Level *final_level=nullptr)
 
 MatrixElement (double level_energy, double strength, TransitionType type, marley::Level *final_level=nullptr)
 Construct a MatrixElement without uncertainty information (errors default to zero)
 
double cos_theta_pdf (double cos_theta_c_cm, double beta_c_cm) const
 Compute the PDF for the CM frame scattering cosine.
 
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 strength_err_high () const
 Get the upper uncertainty on the matrix element strength.
 
double strength_err_low () const
 Get the lower uncertainty on the matrix element strength.
 
double tabulated_level_energy () const
 Get the excitation energy (MeV) listed for this level in the reaction matrix element data file.
 
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)
 
double strength_err_high_ = 0.
 Upper uncertainty on the matrix element strength (zero if not specified)
 
double strength_err_low_ = 0.
 Lower uncertainty on the matrix element strength (zero if not specified)
 
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.

Definition at line 26 of file MatrixElement.hh.

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} \)

Definition at line 32 of file MatrixElement.hh.

Constructor & Destructor Documentation

◆ MatrixElement() [1/2]

marley::MatrixElement::MatrixElement ( double level_energy,
double strength,
TransitionType type,
double err_low,
double err_high,
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
err_lowLower uncertainty on the strength (default 0)
err_highUpper uncertainty on the strength (default 0, if equal to err_low then the uncertainty is symmetric)
final_levelPointer to the Level object that represents the final nuclear level

Definition at line 77 of file MatrixElement.hh.

81 strength_err_low_(err_low), strength_err_high_(err_high),
82 type_(type), final_level_(final_level) {}
TransitionType type() const
Get the kind of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element.
double strength_
Numerical value of the matrix element (dimensionless)
double level_energy_
Energy (MeV) of the final-state nuclear level accessed by this matrix element.
double strength() const
Get the numerical value (dimensionless) of the matrix element.
double level_energy() const
Get the excitation energy (MeV) of the final-state nuclear level accessed by the matrix element.
marley::Level * final_level_
Pointer to the final Level object for a transition to a discrete nuclear level, or nullptr for an unb...
double strength_err_high_
Upper uncertainty on the matrix element strength (zero if not specified)
double strength_err_low_
Lower uncertainty on the matrix element strength (zero if not specified)
TransitionType type_
The kind of transition represented by this matrix element (Fermi, Gamow-Teller, etc....

References final_level_, level_energy(), level_energy_, strength(), strength_, strength_err_high_, strength_err_low_, type(), and type_.

Referenced by MatrixElement().

◆ MatrixElement() [2/2]

marley::MatrixElement::MatrixElement ( double level_energy,
double strength,
TransitionType type,
marley::Level * final_level = nullptr )
inline

Construct a MatrixElement without uncertainty information (errors default to zero)

Definition at line 86 of file MatrixElement.hh.

88 : MatrixElement(level_energy, strength, type, 0., 0., final_level) {}
MatrixElement(double level_energy, double strength, TransitionType type, double err_low, double err_high, marley::Level *final_level=nullptr)

References MatrixElement(), level_energy(), strength(), and type().

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

Definition at line 159 of file MatrixElement.hh.

160 {
161 double pdf = 0.;
162 if ( type_ == TransitionType::FERMI ) {
163 pdf = 1. + beta_c_cm * cos_theta_c_cm;
164 }
165 else if ( type_ == TransitionType::GAMOW_TELLER ) {
166 pdf = (3. - beta_c_cm * cos_theta_c_cm) / 3.;
167 }
168 else throw marley::Error("Unrecognized transition type encountered"
169 " in marley::MatrixElement::cos_theta_pdf()");
170
171 // Normalize to unit integral
172 pdf *= 0.5;
173 return pdf;
174 }

References FERMI, GAMOW_TELLER, and type_.

◆ level() [1/2]

marley::Level * marley::MatrixElement::level ( )
inline

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.

Definition at line 138 of file MatrixElement.hh.

138{ return final_level_; }

References final_level_.

◆ level() [2/2]

const marley::Level * marley::MatrixElement::level ( ) const
inline

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.

Definition at line 133 of file MatrixElement.hh.

133{ return final_level_; }

References final_level_.

◆ level_energy()

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

Get the excitation energy (MeV) of the final-state nuclear level accessed by the matrix element.

Definition at line 92 of file MatrixElement.hh.

92 {
93 // If this matrix element accesses a discrete final nuclear level,
94 // then return that level's excitation energy
95 if ( final_level_ ) return final_level_->energy();
96 // Otherwise, we're in the ubound continuum, and we can just
97 // use the tabulated value from the reaction matrix element data file
98 else return level_energy_;
99 }

References final_level_, and level_energy_.

Referenced by MatrixElement(), MatrixElement(), marley::DiscreteNuclearReaction::diff_xs(), and marley::DiscreteNuclearReaction::total_xs().

◆ set_level()

void marley::MatrixElement::set_level ( marley::Level * lev)
inline

Set the pointer to the final nuclear Level object accessed by the matrix element.

Definition at line 153 of file MatrixElement.hh.

153{ final_level_ = lev; }

References final_level_.

◆ set_level_energy()

void marley::MatrixElement::set_level_energy ( double energy)
inline

Set the excitation energy (MeV) of the final-state nuclear level accessed by the matrix element.

Definition at line 142 of file MatrixElement.hh.

142{ level_energy_ = energy; }

References level_energy_.

◆ set_strength()

void marley::MatrixElement::set_strength ( double strength)
inline

Set the numerical value (dimensionless) of the matrix element.

Definition at line 145 of file MatrixElement.hh.

145{ strength_ = strength; }

References strength(), and strength_.

◆ set_type()

void marley::MatrixElement::set_type ( TransitionType type)
inline

Set the kind of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element.

Definition at line 149 of file MatrixElement.hh.

149{ type_ = type; }

References type(), and type_.

◆ strength()

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

Get the numerical value (dimensionless) of the matrix element.

Definition at line 118 of file MatrixElement.hh.

118{ return strength_; }

References strength_.

Referenced by MatrixElement(), MatrixElement(), marley::DiscreteNuclearReaction::diff_xs(), set_strength(), and marley::DiscreteNuclearReaction::total_xs().

◆ strength_err_high()

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

Get the upper uncertainty on the matrix element strength.

Definition at line 124 of file MatrixElement.hh.

124{ return strength_err_high_; }

References strength_err_high_.

◆ strength_err_low()

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

Get the lower uncertainty on the matrix element strength.

Definition at line 121 of file MatrixElement.hh.

121{ return strength_err_low_; }

References strength_err_low_.

◆ 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().

Definition at line 115 of file MatrixElement.hh.

115{ return level_energy_; }

References level_energy_.

◆ type()

TransitionType marley::MatrixElement::type ( ) const
inline

Get the kind of nuclear transition (e.g., Fermi, Gamow-Teller) represented by the matrix element.

Definition at line 128 of file MatrixElement.hh.

128{ return type_; }

References type_.

Referenced by MatrixElement(), MatrixElement(), marley::DiscreteNuclearReaction::diff_xs(), marley::DiscreteNuclearReaction::sample_cos_theta_c_cm(), and set_type().

◆ type_str()

std::string marley::MatrixElement::type_str ( ) const
inline

Returns a string representation of the transition type for this matrix element.

Definition at line 178 of file MatrixElement.hh.

178 {
179 if ( type_ == TransitionType::FERMI ) return "Fermi";
180 else if ( type_ == TransitionType::GAMOW_TELLER ) return "Gamow-Teller";
181 else throw marley::Error( "Unrecognized transition type encountered"
182 " in marley::MatrixElement::type_str()" );
183 }

References FERMI, GAMOW_TELLER, and type_.

Member Data Documentation

◆ final_level_

marley::Level* marley::MatrixElement::final_level_
protected

Pointer to the final Level object for a transition to a discrete nuclear level, or nullptr for an unbound state.

Definition at line 208 of file MatrixElement.hh.

Referenced by MatrixElement(), level(), level(), level_energy(), and set_level().

◆ level_energy_

double marley::MatrixElement::level_energy_
protected

Energy (MeV) of the final-state nuclear level accessed by this matrix element.

Definition at line 189 of file MatrixElement.hh.

Referenced by MatrixElement(), level_energy(), set_level_energy(), and tabulated_level_energy().

◆ strength_

double marley::MatrixElement::strength_
protected

Numerical value of the matrix element (dimensionless)

Definition at line 192 of file MatrixElement.hh.

Referenced by MatrixElement(), set_strength(), and strength().

◆ strength_err_high_

double marley::MatrixElement::strength_err_high_ = 0.
protected

Upper uncertainty on the matrix element strength (zero if not specified)

Definition at line 200 of file MatrixElement.hh.

Referenced by MatrixElement(), and strength_err_high().

◆ strength_err_low_

double marley::MatrixElement::strength_err_low_ = 0.
protected

Lower uncertainty on the matrix element strength (zero if not specified)

Definition at line 196 of file MatrixElement.hh.

Referenced by MatrixElement(), and strength_err_low().

◆ type_

TransitionType marley::MatrixElement::type_
protected

The kind of transition represented by this matrix element (Fermi, Gamow-Teller, etc.)

Definition at line 204 of file MatrixElement.hh.

Referenced by MatrixElement(), cos_theta_pdf(), set_type(), type(), and type_str().


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