22#include "marley/marley_utils.hh"
23#include "marley/Error.hh"
24#include "marley/Logger.hh"
25#include "marley/StandardLorentzianModel.hh"
39 e_E1_ = 31.2*std::pow(
A_, -1.0/3.0) + 20.6*std::pow(
A_, -1.0/6.0);
40 gamma_E1_ = 0.026 * std::pow(e_E1_, 1.91);
41 sigma_E1_ = 1.2 * 120 * (
A_ -
Z_) *
Z_/(
A_ * marley_utils::pi * gamma_E1_)
49 e_E2_ = 63*std::pow(
A_, -1.0/3.0);
50 gamma_E2_ = 6.11 - 0.012*
A_;
51 sigma_E2_ = 0.00014 * std::pow(
Z_, 2) * e_E2_
52 / (std::pow(
A_, 1.0/3.0) * gamma_E2_) * marley_utils::mb;
59 constexpr double e_gamma_ref = 7.0;
61 / (0.0588 * std::pow(
A_, 0.878));
63 e_M1_ = 41*std::pow(
A_, -1.0/3.0);
64 sigma_M1_ = (std::pow(std::pow(e_gamma_ref, 2) - std::pow(e_M1_, 2), 2)
65 + std::pow(e_gamma_ref, 2) * std::pow(gamma_M1_, 2))
66 * (3 * std::pow(marley_utils::pi, 2) * factor_m1)
67 / (e_gamma_ref * std::pow(gamma_M1_, 2));
70double marley::StandardLorentzianModel::strength_function_coefficient(
71 TrType type,
int l,
double e_gamma)
73 check_multipolarity(l);
81 if (type == TrType::electric) {
98 for (
int i = 2; i < l; ++i) sigma_xl *= 8e-4;
102 else if (type == TrType::magnetic) {
104 sigma_xl = sigma_M1_;
105 gamma_xl = gamma_M1_;
109 for (
int i = 1; i < l; ++i) sigma_xl *= 8e-4;
112 else if (type == TrType::unphysical) {
113 MARLEY_LOG( WARN,
"physics.deexcitation" )
114 <<
"Unphysical EM transition encountered in"
115 <<
" StandardLorentzianModel::strength_function_coefficient()."
116 <<
" The strength function will be set to zero.";
121 else throw marley::Error(std::string(
"Invalid transition type")
122 +
" given for gamma ray strength function calculation");
127 double coeff = (sigma_xl * std::pow(gamma_xl, 2)) / ((2*l + 1)
128 * std::pow(marley_utils::pi, 2) * (std::pow(std::pow(e_gamma, 2)
129 - std::pow(e_xl, 2), 2) + std::pow(e_gamma, 2) * std::pow(gamma_xl, 2)));
137 return std::pow(e_gamma, 3 - 2*l)
138 * strength_function_coefficient(type, l, e_gamma);
142 int l,
double e_gamma)
145 return 2. * marley_utils::pi * strength_function_coefficient(type, l, e_gamma)
146 * std::pow(e_gamma, 4);
TransitionType
Electromagnetic transitions in nuclei may be classified by their multipolarity (electric vs....
GammaStrengthFunctionModel(int Z, int A)
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.
StandardLorentzianModel(int Z, int A)
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 mul...