23#include <boost/functional/hash.hpp>
34template <
class Container>
37 Container sorted(pids_out);
40 boost::hash<int> hash_pid;
41 auto seed = hash_pid(pid_in);
42 boost::hash_range(seed, sorted.begin(), sorted.end());
57 : initial_pdg(initial_pdg_)
68 std::initializer_list<int> product_pdgs)
const
73 const auto pos =
decays.find(decay_hash);
76 std::ostringstream msg;
78 <<
" into particles {"
79 <<
concat(product_pdgs.begin(), product_pdgs.end(),
", ")
92 std::vector<Decay> decays_list_as_vector;
93 decays_list_as_vector.reserve(decays_list.
size());
94 for (
const auto& el : decays_list) {
95 decays_list_as_vector.push_back(el.second);
99 decays_list_as_vector.begin(),
100 decays_list_as_vector.end(),
101 [](
const auto& d1,
const auto& d2) {
102 return d1.get_width() > d2.get_width();
106 return decays_list_as_vector;
110 std::string result = s.substr(s.find_last_of(
':')+1);
111 if (s.find(
"bar") != std::string::npos) {
113 return "bar" + result;
114 }
else if (s.find(
"conj") != std::string::npos) {
116 return "conj" + result;
125 const double mHOS = fp->
mHOS;
126 if (q2[1] >
Sqr(mHOS - std::sqrt(q2[0])))
return 0.;
127 const double mVOS = fp->
mVOS;
128 const double GammaV = fp->
GammaV;
131 mVOS*GammaV/(
Sqr(q2[0] -
Sqr(mVOS)) +
Sqr(mVOS*GammaV))
132 * mVOS*GammaV/(
Sqr(q2[1] -
Sqr(mVOS)) +
Sqr(mVOS*GammaV))
133 * std::sqrt(kl)*(kl + 12.*q2[0]*q2[1]/
Power4(mHOS));
int get_initial_particle_id() const
const std::vector< int > & get_final_state_particle_ids() const
const Decay & get_decay(std::initializer_list< int > products) const
std::size_t size() const noexcept
void sort(double &x, double &y)
std::size_t hash_pid_list(int pid_in, Container pids_out)
std::string strip_field_namespace(std::string const &s)
double * end(GSL_vector &v)
iterator to end of GSL_vector
double hVV_4body(double *q2, size_t, void *params)
constexpr std::complex< T > Sqr(const std::complex< T > &a) noexcept
std::vector< Decay > sort_decays_list(const Decays_list &decays_list)
sort decays w.r.t. their width
T KallenLambda(T x, T y, T z) noexcept
constexpr Base Power4(Base b) noexcept
std::string concat(const std::vector< std::string > &strings)
concatenate strings
std::size_t hash_decay(const Decay &decay)