8 #ifndef SRC_INCLUDE_SMASH_FORMFACTORS_H_
9 #define SRC_INCLUDE_SMASH_FORMFACTORS_H_
39 constexpr
double R = 1. /
hbarc;
40 const double x = p_ab *
R;
41 const double x2 = x * x;
43 return x2 / (1. + x2);
45 std::complex<double> g_prevprev(1, 0);
46 std::complex<double> g_prev(1, -x);
48 for (
int l = 1; l < L; l++) {
51 static_cast<double>(2 * l + 1) * g_prev - x2 * g_prevprev;
55 const double denom = std::norm(g_prev);
77 inline double post_ff_sqr(
double m,
double M0,
double srts0,
double L) {
78 const auto L4 = L * L * L * L;
79 const auto M2 = M0 * M0;
80 const auto s0 = srts0 * srts0;
81 const auto sminus = (s0 - M2) * 0.5;
82 const auto splus = m * m - (s0 + M2) * 0.5;
83 const auto FF = (L4 + sminus * sminus) / (L4 + splus * splus);
100 switch (pdg.
code()) {
102 return 1. + 5.5 * mass * mass;
104 const double lambda_eta = 0.716;
105 const double m_over_eta = mass / lambda_eta;
106 return 1. / (1. - m_over_eta * m_over_eta);
123 switch (pdg.
code()) {
125 constexpr
double lambda = 0.65;
126 constexpr
double gamma = 0.075;
127 constexpr
double lambda_sqr = lambda * lambda;
128 constexpr
double gamma_sqr = gamma * gamma;
129 const double tmp = lambda_sqr - mass * mass;
130 const double denom = tmp * tmp + lambda_sqr * gamma_sqr;
131 return lambda_sqr * lambda_sqr / denom;
PdgCode stores a Particle Data Group Particle Numbering Scheme particle type number.
std::int32_t code() const
Collection of useful constants that are known at compile time.
double em_form_factor_sqr_vec(PdgCode pdg, double mass)
double form_factor_delta([[maybe_unused]] double m)
double blatt_weisskopf_sqr(const double p_ab, const int L)
constexpr double hbarc
GeV <-> fm conversion factor.
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.
double em_form_factor_ps(PdgCode pdg, double mass)