 |
Version: SMASH-1.8
|
|
Go to the documentation of this file.
10 #include <gsl/gsl_sf_coupling.h>
19 const int m_a,
const int m_b,
const int m_c) {
20 const double wigner_3j = gsl_sf_coupling_3j(j_a, j_b, j_c, m_a, m_b, -m_c);
24 assert((j_a - j_b + m_c) % 2 == 0);
25 const int j = (j_a - j_b + m_c) / 2;
26 double result = std::sqrt(j_c + 1) * wigner_3j;
27 result *= (j % 2 == 0) * 2 - 1;
30 " IR: ", j_c,
" iz1: ", m_a,
" iz2: ", m_b,
46 const int I_tot,
const int I_z) {
58 std::vector<int> possible_I_ab(max_I_ab - min_I_ab + 1);
59 std::iota(possible_I_ab.begin(), possible_I_ab.end(), min_I_ab);
60 std::vector<int> allowed_I_ab;
61 allowed_I_ab.reserve(possible_I_ab.size());
62 for (
const auto Iab : possible_I_ab) {
63 const auto min_I = std::abs(Iab - p_c.
isospin());
64 const auto max_I = Iab + p_c.
isospin();
66 allowed_I_ab.push_back(Iab);
69 if (allowed_I_ab.size() != 1) {
70 throw std::runtime_error(
71 "The coupled 3-body isospin state is not uniquely defined for " +
74 const auto I_ab = allowed_I_ab[0];
91 double isospin_factor = 0.;
92 for (
const int I_tot :
I_tot_range(p_a, p_b, p_c, p_d)) {
93 if (I < 0 || I_tot == I) {
96 isospin_factor = isospin_factor + cg_in * cg_in * cg_out * cg_out;
99 return isospin_factor;
double isospin_clebsch_gordan_sqr_2to2(const ParticleType &p_a, const ParticleType &p_b, const ParticleType &p_c, const ParticleType &p_d, const int I=-1)
Calculate the squared isospin Clebsch-Gordan coefficient for a 2-to-2 reaction A + B -> C + D.
std::array< einhard::Logger<>, std::tuple_size< LogArea::AreaTuple >::value > logg
An array that stores all pre-configured Logger objects.
static constexpr int LResonances
constexpr double really_small
Numerical error tolerance.
int isospin() const
Returns twice the isospin vector length .
const std::string & name() const
Range of total isospin for reaction of particle a with particle b.
static double isospin_clebsch_gordan_2to1(const ParticleType &p_a, const ParticleType &p_b, const int I_tot, const int I_z)
Calculate isospin Clebsch-Gordan coefficient for two particles p_a and p_b coupling to a total isospi...
double isospin_clebsch_gordan_sqr_3to1(const ParticleType &p_a, const ParticleType &p_b, const ParticleType &p_c, const ParticleType &Res)
Calculate the squared isospin Clebsch-Gordan coefficient for three particles p_a, p_b and p_c couplin...
double clebsch_gordan(const int j_a, const int j_b, const int j_c, const int m_a, const int m_b, const int m_c)
Calculate Clebsch-Gordan coefficient .