10 #ifndef SRC_INCLUDE_CROSSSECTIONS_H_ 11 #define SRC_INCLUDE_CROSSSECTIONS_H_ 22 namespace transit_high_energy {
68 CrossSections(
const ParticleList& incoming_particles,
const double sqrt_s,
69 const std::pair<FourVector, FourVector> potentials);
94 CollisionBranchList generate_collision_list(
95 double elastic_parameter,
bool two_to_one_switch,
97 bool use_AQM,
bool strings_with_probability,
112 CollisionBranchPtr elastic(
double elast_par,
bool use_AQM)
const;
126 CollisionBranchList two_to_one()
const;
140 double cm_momentum_sqr)
const;
153 CollisionBranchList rare_two_to_two()
const;
186 CollisionBranchList string_excitation(
double total_string_xs,
203 CollisionBranchPtr NNbar_annihilation(
const double current_xs)
const;
212 CollisionBranchList NNbar_creation()
const;
221 double high_energy()
const;
264 double string_probability(
bool strings_switch,
265 bool use_transition_probability,
bool use_AQM,
266 bool treat_nnbar_with_strings)
const;
273 double probability_transit_high(
const double region_lower,
274 const double region_upper)
const;
284 double elastic_parametrization(
bool use_AQM)
const;
294 double nn_el()
const;
306 double npi_el()
const;
318 double nk_el()
const;
328 CollisionBranchList npi_yk()
const;
336 CollisionBranchList bb_xx_except_nn(
ReactionsBitSet included_2to2)
const;
402 double string_hard_cross_section()
const;
415 CollisionBranchList bar_bar_to_nuc_nuc(
const bool is_anti_particles)
const;
429 static double nn_to_resonance_matrix_element(
double sqrts,
443 template <
class IntegrationMethod>
444 CollisionBranchList find_nn_xsection_from_type(
445 const ParticleTypePtrList& type_res_1,
446 const ParticleTypePtrList& type_res_2,
447 const IntegrationMethod integrator)
const;
455 const double m1 = incoming_particles_[0].effective_mass();
456 const double m2 = incoming_particles_[1].effective_mass();
457 return pCM(sqrt_s_, m1, m2);
482 template <
typename F>
483 void add_channel(CollisionBranchList& process_list, F&& get_xsection,
486 const double sqrt_s_min =
489 double scale_B = 0.0;
490 double scale_I3 = 0.0;
491 bool is_below_threshold;
494 for (
const auto p : incoming_particles_) {
495 incoming_momentum +=
p.momentum();
506 is_below_threshold = (incoming_momentum + potentials_.first * scale_B +
507 potentials_.second * scale_I3)
508 .abs() <= sqrt_s_min;
510 is_below_threshold = (sqrts <= sqrt_s_min);
512 if (is_below_threshold) {
515 const auto xsection = get_xsection();
517 process_list.push_back(make_unique<CollisionBranch>(
525 #endif // SRC_INCLUDE_CROSSSECTIONS_H_ Potentials * pot_pointer
Pointer to a Potential class.
const bool is_BBbar_pair_
Whether incoming particles are a baryon-antibaryon pair.
const double sqrt_s_
Total energy in the center-of-mass frame.
constexpr double really_small
Numerical error tolerance.
String excitation processes used in SMASH.
const std::array< double, 2 > sqrts_range_NN
transition range in N-N collisions
2->2 inelastic scattering
NNbarTreatment
Treatment of N Nbar Annihilation.
const std::pair< FourVector, FourVector > potentials_
Potentials at the interacting point.
void add_channel(CollisionBranchList &process_list, F &&get_xsection, double sqrts, const ParticleType &type_a, const ParticleType &type_b) const
Helper function: Add a 2-to-2 channel to a collision branch list given a cross section.
Particle type contains the static properties of a particle species.
double min_mass_spectral() const
The minimum mass of the resonance, where the spectral function is non-zero.
const double KN_offset
Constant offset as to where to shift from 2to2 to string processes (in GeV) in the case of KN reactio...
const double sqrts_range
constant for the range of transition region in the case of AQM this is added to the sum of masses + s...
std::bitset< 6 > ReactionsBitSet
Container for the 2 to 2 reactions in the code.
const double sqrts_add_lower
constant for the lower end of transition region in the case of AQM this is added to the sum of masses...
const ParticleList incoming_particles_
List with data of scattering particles.
std::pair< double, int > force_scale(const ParticleType &data) const
Evaluates the scaling factor of the forces acting on the particles.
The cross section class assembels everything that is needed to calculate the cross section and return...
const double pipi_offset
Constant offset as to where to turn on the strings and elastic processes for pi pi reactions (this is...
double isospin3_rel() const
double cm_momentum() const
Determine the momenta of the incoming particles in the center-of-mass system.
T pCM(const T sqrts, const T mass_a, const T mass_b) noexcept
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
const std::array< double, 2 > sqrts_range_Npi
transition range in N-pi collisions