10 #ifndef SRC_INCLUDE_CROSSSECTIONS_H_ 11 #define SRC_INCLUDE_CROSSSECTIONS_H_ 22 namespace transit_high_energy {
72 CrossSections(
const ParticleList& incoming_particles,
const double sqrt_s,
73 const std::pair<FourVector, FourVector> potentials);
98 CollisionBranchList generate_collision_list(
99 double elastic_parameter,
bool two_to_one_switch,
100 ReactionsBitSet included_2to2,
double low_snn_cut,
bool strings_switch,
101 bool use_AQM,
bool strings_with_probability,
116 CollisionBranchPtr elastic(
double elast_par,
bool use_AQM)
const;
130 CollisionBranchList two_to_one()
const;
144 double cm_momentum_sqr)
const;
157 CollisionBranchList rare_two_to_two()
const;
190 CollisionBranchList string_excitation(
double total_string_xs,
207 CollisionBranchPtr NNbar_annihilation(
const double current_xs)
const;
216 CollisionBranchList NNbar_creation()
const;
225 double high_energy()
const;
268 double string_probability(
bool strings_switch,
269 bool use_transition_probability,
bool use_AQM,
270 bool treat_nnbar_with_strings)
const;
277 double probability_transit_high(
const double region_lower,
278 const double region_upper)
const;
288 double elastic_parametrization(
bool use_AQM)
const;
298 double nn_el()
const;
310 double npi_el()
const;
322 double nk_el()
const;
332 CollisionBranchList npi_yk()
const;
340 CollisionBranchList bb_xx_except_nn(
ReactionsBitSet included_2to2)
const;
406 double string_hard_cross_section()
const;
419 CollisionBranchList bar_bar_to_nuc_nuc(
const bool is_anti_particles)
const;
433 static double nn_to_resonance_matrix_element(
double sqrts,
447 template <
class IntegrationMethod>
448 CollisionBranchList find_nn_xsection_from_type(
449 const ParticleTypePtrList& type_res_1,
450 const ParticleTypePtrList& type_res_2,
451 const IntegrationMethod integrator)
const;
459 const double m1 = incoming_particles_[0].effective_mass();
460 const double m2 = incoming_particles_[1].effective_mass();
461 return pCM(sqrt_s_, m1, m2);
486 template <
typename F>
487 void add_channel(CollisionBranchList& process_list, F&& get_xsection,
490 const double sqrt_s_min =
493 double scale_B = 0.0;
494 double scale_I3 = 0.0;
495 bool is_below_threshold;
498 for (
const auto p : incoming_particles_) {
499 incoming_momentum +=
p.momentum();
510 is_below_threshold = (incoming_momentum + potentials_.first * scale_B +
511 potentials_.second * scale_I3)
512 .abs() <= sqrt_s_min;
514 is_below_threshold = (sqrts <= sqrt_s_min);
516 if (is_below_threshold) {
519 const auto xsection = get_xsection();
521 process_list.push_back(make_unique<CollisionBranch>(
529 #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: Tuned to reproduce experimental exclusive cross section data...
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< 10 > 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