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::WeisskopfSingleParticleModel Class Reference

Implements the Weisskopf single-particle estimates of the gamma-ray strength functions. More...

#include <WeisskopfSingleParticleModel.hh>

Inheritance diagram for marley::WeisskopfSingleParticleModel:
marley::GammaStrengthFunctionModel

Public Member Functions

 WeisskopfSingleParticleModel (int Z, int A, double D0=1.)
 
virtual double strength_function (TransitionType type, int l, double e_gamma) override
 Returns the gamma-ray strength function (MeV –2 \(\ell\)–1) for the requested gamma energy and multipolarity.
 
virtual double transmission_coefficient (TransitionType type, int l, double e_gamma) override
 Returns the gamma-ray transmission coefficient (dimensionless) for the requested gamma energy and multipolarity.
 
- Public Member Functions inherited from marley::GammaStrengthFunctionModel
 GammaStrengthFunctionModel (int Z, int A)
 

Additional Inherited Members

- Public Types inherited from marley::GammaStrengthFunctionModel
enum class  TransitionType { electric , magnetic , unphysical }
 Electromagnetic transitions in nuclei may be classified by their multipolarity (electric vs. magnetic multipole radiation) More...
 
- Static Protected Member Functions inherited from marley::GammaStrengthFunctionModel
static void check_multipolarity (int l)
 Check that l > 0 and throw a marley::Error if it is not.
 
- Protected Attributes inherited from marley::GammaStrengthFunctionModel
int A_
 Mass number.
 
int Z_
 Atomic number.
 

Detailed Description

Implements the Weisskopf single-particle estimates of the gamma-ray strength functions.

Under this model, the electric ( \(f_{\text{E}\ell}\)) and magnetic ( \(f_{\text{M}\ell}\)) gamma-ray strength functions are independent of the gamma energy and are given by

\[ f_{\text{E}\ell} = \frac{2\alpha\Lambda}{\text{D}_0} \left(\frac{R}{\hbar c}\right)^{\!2\ell} \]

and

\[ f_{\text{M}\ell} = 10\left(\frac{\hbar c} {R\,m_\text{p}}\right)^{\!2} f_{\text{E}\ell}, \]

where \(\alpha\) is the fine-structure constant, \(\text{D}_0\) is the level spacing parameter (MeV), \(R = (1.2\text{ fm})A^{1/3}\) is the approximate nuclear radius, \(m_\text{p}\) is the proton mass (MeV), and \(\Lambda\) is a function of the multipolarity \(\ell\) given by

\[ \Lambda \equiv \left(\frac{3}{\ell + 3}\right)^{\!2} \left(\frac{\ell + 1}{\ell\left[(2\ell + 1)!!\right]^2} \right).\]

These estimates are typically only good to an order of magnitude, so using a more sophisticated model, e.g., the StandardLorentzianModel, is strongly recommended.

Definition at line 46 of file WeisskopfSingleParticleModel.hh.

Constructor & Destructor Documentation

◆ WeisskopfSingleParticleModel()

marley::WeisskopfSingleParticleModel::WeisskopfSingleParticleModel ( int Z,
int A,
double D0 = 1. )
Parameters
ZAtomic number of the desired nuclide
AMass number of the desired nuclide
D0Level spacing parameter (MeV)

Definition at line 25 of file WeisskopfSingleParticleModel.cc.

26 : marley::GammaStrengthFunctionModel(Z, A), D0_(D0)
27{
28 if (D0_ <= 0.) throw marley::Error("Invalid"
29 " level spacing parameter " + std::to_string(D0_)
30 + " MeV passed to the constructor of"
31 " marley::WeisskopfGammaStrengthFunctionModel.");
32}

References marley::GammaStrengthFunctionModel::GammaStrengthFunctionModel().

Member Function Documentation

◆ strength_function()

double marley::WeisskopfSingleParticleModel::strength_function ( TransitionType type,
int l,
double e_gamma )
overridevirtual

Returns the gamma-ray strength function (MeV –2 \(\ell\)–1) for the requested gamma energy and multipolarity.

Parameters
typeElectric or magnetic transition
lMultipolarity of the transition
e_gammaGamma-ray energy (MeV)
Note
As described above, the Weisskopf estimates of the gamma-ray strength functions are independent of the gamma energy, and so the parameter e_gamma is ignored by this function.

Implements marley::GammaStrengthFunctionModel.

Definition at line 43 of file WeisskopfSingleParticleModel.cc.

45{
47
48 // Compute double factorial of 2l + 1
49 int dfact = 1;
50 for (int n = 2*l + 1; n > 0; n -= 2) dfact *= n;
51
52 // Multipolarity factor (dimensionless)
53 double lambda = (l + 1.) / (l * std::pow(dfact, 2))
54 * std::pow(3.0 / (l + 3.), 2);
55
56 // Estimated nuclear radius (fm)
57 double R = marley_utils::r0 * std::pow(A_, 1.0/3.0);
58
59 // Electric transition strength function (MeV^[-2l-1])
60 double el_sf = 2 * marley_utils::alpha * lambda
61 * std::pow(R / marley_utils::hbar_c, 2*l) / D0_;
62
63 if (type == TrType::electric) {
64 return el_sf;
65 }
66
67 else if (type == TrType::magnetic) {
68 static const double mp = marley::MassTable::Instance().get_particle_mass(
69 marley_utils::PROTON);
70 return 10. * el_sf * std::pow(marley_utils::hbar_c / (mp * R), 2);
71 }
72
73 else if (type == TrType::unphysical) {
74 MARLEY_LOG( WARN, "physics.deexcitation" )
75 << "Unphysical EM transition encountered in"
76 << " WeisskopfSingleParticleModel::strength_function()."
77 << " The strength function will be set to zero.";
78 return 0.;
79 }
80
81 // @todo Improve error message
82 else throw marley::Error( "Invalid transition type"
83 " given for Weisskopf gamma-ray strength function calculation" );
84}
static void check_multipolarity(int l)
Check that l > 0 and throw a marley::Error if it is not.
static const MassTable & Instance()
Get a const reference to the singleton instance of the MassTable.
Definition MassTable.cc:69
double get_particle_mass(int pdg_code) const
Get the mass of a particle.
Definition MassTable.cc:84

References marley::GammaStrengthFunctionModel::A_, marley::GammaStrengthFunctionModel::check_multipolarity(), marley::MassTable::get_particle_mass(), and marley::MassTable::Instance().

Referenced by transmission_coefficient().

◆ transmission_coefficient()

double marley::WeisskopfSingleParticleModel::transmission_coefficient ( TransitionType type,
int l,
double e_gamma )
overridevirtual

Returns the gamma-ray transmission coefficient (dimensionless) for the requested gamma energy and multipolarity.

The gamma-ray transmission coefficient and strength function are related via \(\text{T}_{\text{X}\ell}(\text{E}_\gamma) = 2\pi f_{\text{X}\ell}(\text{E}_\gamma)\text{E}_\gamma^{(2\ell + 1)},\) where X is the type of transition (electric or magnetic), \(\ell\) is the multipolarity, \(\text{T}_{\text{X}\ell}\) is the transmission coefficient, \(f_{\text{X}\ell}\) is the strength function, and \(\text{E}_\gamma\) is the gamma-ray energy.

Parameters
typeElectric or magnetic transition
lMultipolarity of the transition
e_gammaGamma-ray energy (MeV)

Implements marley::GammaStrengthFunctionModel.

Definition at line 86 of file WeisskopfSingleParticleModel.cc.

88{
89 return 2. * marley_utils::pi * strength_function(type, l, e_gamma)
90 * std::pow(e_gamma, 2*l + 1);
91}
virtual double strength_function(TransitionType type, int l, double e_gamma) override
Returns the gamma-ray strength function (MeV –2 –1) for the requested gamma energy and multipolarity.

References strength_function().


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