8 #ifndef SRC_INCLUDE_SMASH_FORMFACTORS_H_
9 #define SRC_INCLUDE_SMASH_FORMFACTORS_H_
40 constexpr
double R = 1. /
hbarc;
41 const double x = p_ab *
R;
42 const double x2 = x * x;
44 return x2 / (1. + x2);
46 std::complex<double> g_prevprev(1, 0);
47 std::complex<double> g_prev(1, -x);
49 for (
int l = 1; l < L; l++) {
52 static_cast<double>(2 * l + 1) * g_prev - x2 * g_prevprev;
56 const double denom = std::norm(g_prev);
78 inline double post_ff_sqr(
double m,
double M0,
double srts0,
double L) {
79 const auto L4 = L * L * L * L;
80 const auto M2 = M0 * M0;
81 const auto s0 = srts0 * srts0;
82 const auto sminus = (s0 - M2) * 0.5;
83 const auto splus = m * m - (s0 + M2) * 0.5;
84 const auto FF = (L4 + sminus * sminus) / (L4 + splus * splus);
101 switch (pdg.
code()) {
103 return 1. + 5.5 * mass * mass;
105 const double lambda_eta = 0.716;
106 const double m_over_eta = mass / lambda_eta;
107 return 1. / (1. - m_over_eta * m_over_eta);
124 switch (pdg.
code()) {
126 constexpr
double lambda = 0.65;
127 constexpr
double gamma = 0.075;
128 constexpr
double lambda_sqr = lambda * lambda;
129 constexpr
double gamma_sqr = gamma * gamma;
130 const double tmp = lambda_sqr - mass * mass;
131 const double denom = tmp * tmp + lambda_sqr * gamma_sqr;
132 return lambda_sqr * lambda_sqr / denom;
162 assert(gamma_rho >= 0.0);
163 const double m_rho_sq = m_rho * m_rho;
164 const std::complex<double> denom(m_rho_sq - m_inv_sqr, -m_rho * gamma_rho);
165 return std::norm(m_rho_sq / denom);
181 assert(gamma_rho >= 0.0);
183 constexpr
double lambda_sq_FF2 = 1.9;
184 const double m_rho_sq = m_rho * m_rho;
185 const std::complex<double> denom(m_rho_sq - m_inv_sqr, -m_rho * gamma_rho);
186 const std::complex<double> F =
187 0.4 / (1.0 - m_inv_sqr / lambda_sq_FF2) +
188 0.6 / (1.0 - m_inv_sqr / (2 * m_rho_sq)) * m_rho_sq / 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 pion_em_form_factor_sqr_FF2(double m_inv_sqr, double m_rho, double gamma_rho)
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 pion_em_form_factor_sqr_FF1(double m_inv_sqr, double m_rho, double gamma_rho)
double em_form_factor_ps(PdgCode pdg, double mass)