8 #ifndef SRC_INCLUDE_FORMFACTORS_H_ 9 #define SRC_INCLUDE_FORMFACTORS_H_ 37 constexpr
double R = 1. /
hbarc;
38 const double x = p_ab * R;
39 const double x2 = x * x;
41 return x2 / (1. + x2);
43 std::complex<double> g_prevprev(1, 0);
44 std::complex<double> g_prev(1, -x);
46 for (
int l = 1; l < L; l++) {
49 static_cast<double>(2 * l + 1) * g_prev - x2 * g_prevprev;
53 const double denom = std::norm(g_prev);
75 inline double post_ff_sqr(
double m,
double M0,
double srts0,
double L) {
76 const auto L4 = L * L * L * L;
77 const auto M2 = M0 * M0;
78 const auto s0 = srts0 * srts0;
79 const auto sminus = (s0 - M2) * 0.5;
80 const auto splus = m * m - (s0 + M2) * 0.5;
81 const auto FF = (L4 + sminus * sminus) / (L4 + splus * splus);
100 return 1. + 5.5 * mass * mass;
102 const double lambda_eta = 0.716;
103 const double m_over_eta = mass / lambda_eta;
104 return 1. / (1. - m_over_eta * m_over_eta);
121 switch (pdg.
code()) {
123 constexpr
double lambda = 0.65;
124 constexpr
double gamma = 0.075;
125 constexpr
double lambda_sqr = lambda * lambda;
126 constexpr
double gamma_sqr = gamma * gamma;
127 const double tmp = lambda_sqr - mass * mass;
128 const double denom = tmp * tmp + lambda_sqr * gamma_sqr;
129 return lambda_sqr * lambda_sqr / denom;
151 #endif // SRC_INCLUDE_FORMFACTORS_H_ #define SMASH_UNUSED(x)
Mark as unused, silencing compiler warnings.
Collection of useful constants that are known at compile time.
constexpr double hbarc
GeV <-> fm conversion factor.
double blatt_weisskopf_sqr(const double p_ab, const int L)
double em_form_factor_sqr_vec(PdgCode pdg, double mass)
PdgCode stores a Particle Data Group Particle Numbering Scheme particle type number.
double form_factor_delta(double m)
std::int32_t code() const
double em_form_factor_ps(PdgCode pdg, double mass)
double post_ff_sqr(double m, double M0, double srts0, double L)
An additional form factor for unstable final states as used in GiBUU, according to M...