#include <crosssections.h>
The cross section class assembels everything that is needed to calculate the cross section and returns a list of all possible reactions for the incoming particles at the given energy with the calculated cross sections.
Definition at line 58 of file crosssections.h.
Public Member Functions | |
CrossSections (const ParticleList &incoming_particles, const double sqrt_s, const std::pair< FourVector, FourVector > potentials) | |
Construct CrossSections instance. More... | |
CollisionBranchList | generate_collision_list (double elastic_parameter, bool two_to_one_switch, ReactionsBitSet included_2to2, double low_snn_cut, bool strings_switch, bool use_AQM, bool strings_with_probability, NNbarTreatment nnbar_treatment, StringProcess *string_process) const |
Generate a list of all possible collisions between the incoming particles with the given c.m. More... | |
CollisionBranchPtr | elastic (double elast_par, bool use_AQM) const |
Determine the elastic cross section for this collision. More... | |
CollisionBranchList | two_to_one () const |
Find all resonances that can be produced in a 2->1 collision of the two input particles and the production cross sections of these resonances. More... | |
double | formation (const ParticleType &type_resonance, double cm_momentum_sqr) const |
Return the 2-to-1 resonance production cross section for a given resonance. More... | |
CollisionBranchList | rare_two_to_two () const |
Find all 2->2 processes which are suppressed at high energies when strings are turned on with probabilites, but important for the production of rare species such as strange particles. More... | |
CollisionBranchList | two_to_two (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes for the given scattering. More... | |
CollisionBranchList | string_excitation (double total_string_xs, StringProcess *string_process, bool use_AQM) const |
Determine the cross section for string excitations, which is given by the difference between the parametrized total cross section and all the explicitly implemented channels at low energy (elastic, resonance excitation, etc). More... | |
CollisionBranchPtr | NNbar_annihilation (const double current_xs) const |
Determine the cross section for NNbar annihilation, which is given by the difference between the parametrized total cross section and all the explicitly implemented channels at low energy (in this case only elastic). More... | |
CollisionBranchList | NNbar_creation () const |
Determine the cross section for NNbar creation, which is given by detailed balance from the reverse reaction. More... | |
double | high_energy () const |
Determine the parametrized total cross section at high energies for the given collision, which is non-zero for Baryon-Baryon and Nucleon-Pion scatterings currently. More... | |
double | string_probability (bool strings_switch, bool use_transition_probability, bool use_AQM, bool treat_nnbar_with_strings) const |
double | probability_transit_high (const double region_lower, const double region_upper) const |
Private Member Functions | |
double | elastic_parametrization (bool use_AQM) const |
Choose the appropriate parametrizations for given incoming particles and return the (parametrized) elastic cross section. More... | |
double | nn_el () const |
Determine the (parametrized) elastic cross section for a nucleon-nucleon (NN) collision. More... | |
double | npi_el () const |
Determine the elastic cross section for a nucleon-pion (Npi) collision. More... | |
double | nk_el () const |
Determine the elastic cross section for a nucleon-kaon (NK) collision. More... | |
CollisionBranchList | npi_yk () const |
Find all processes for Nucleon-Pion to Hyperon-Kaon Scattering. More... | |
CollisionBranchList | bb_xx_except_nn (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes for Baryon-Baryon (BB) Scattering except the more specific Nucleon-Nucleon Scattering. More... | |
CollisionBranchList | nn_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes for Nucelon-Nucelon Scattering. More... | |
CollisionBranchList | nk_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 background processes for Nucleon-Kaon (NK) Scattering. More... | |
CollisionBranchList | deltak_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes for Delta-Kaon (DeltaK) Scattering. More... | |
CollisionBranchList | ypi_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes for Hyperon-Pion (Ypi) Scattering. More... | |
CollisionBranchList | dpi_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes involving Pion and (anti-) Deuteron (dpi), specifically dπ→ NN, d̅π→ N̅N̅; πd→ πd' (mockup for πd→ πnp), πd̅→ πd̅' and reverse. More... | |
CollisionBranchList | dn_xx (ReactionsBitSet included_2to2) const |
Find all inelastic 2->2 processes involving Nucleon and (anti-) Deuteron (dN), specifically Nd → Nd', N̅d → N̅d', N̅d̅→ N̅d̅', Nd̅→ Nd̅' and reverse (e.g. More... | |
double | string_hard_cross_section () const |
Determine the (parametrized) hard non-diffractive string cross section for this collision. More... | |
CollisionBranchList | bar_bar_to_nuc_nuc (const bool is_anti_particles) const |
Calculate cross sections for resonance absorption (i.e. More... | |
template<class IntegrationMethod > | |
CollisionBranchList | find_nn_xsection_from_type (const ParticleTypePtrList &type_res_1, const ParticleTypePtrList &type_res_2, const IntegrationMethod integrator) const |
Utility function to avoid code replication in nn_xx(). More... | |
double | cm_momentum () const |
Determine the momenta of the incoming particles in the center-of-mass system. More... | |
template<typename F > | |
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. More... | |
Static Private Member Functions | |
static double | nn_to_resonance_matrix_element (double sqrts, const ParticleType &type_a, const ParticleType &type_b, const int twoI) |
Scattering matrix amplitude squared (divided by 16π) for resonance production processes like NN → NR and NN → ΔR, where R is a baryon resonance (Δ, N*, Δ*). More... | |
Private Attributes | |
const ParticleList | incoming_particles_ |
List with data of scattering particles. More... | |
const double | sqrt_s_ |
Total energy in the center-of-mass frame. More... | |
const std::pair< FourVector, FourVector > | potentials_ |
Potentials at the interacting point. More... | |
const bool | is_BBbar_pair_ |
Whether incoming particles are a baryon-antibaryon pair. More... | |
smash::CrossSections::CrossSections | ( | const ParticleList & | incoming_particles, |
const double | sqrt_s, | ||
const std::pair< FourVector, FourVector > | potentials | ||
) |
Construct CrossSections instance.
[in] | incoming_particles | Particles that are reacting. |
[in] | sqrt_s | Center-of-mass energy of the reaction. |
[in] | potentials | Potentials at the interacting point. they are used to calculate the corrections on the thresholds. |
Definition at line 112 of file crosssections.cc.
CollisionBranchList smash::CrossSections::generate_collision_list | ( | double | elastic_parameter, |
bool | two_to_one_switch, | ||
ReactionsBitSet | included_2to2, | ||
double | low_snn_cut, | ||
bool | strings_switch, | ||
bool | use_AQM, | ||
bool | strings_with_probability, | ||
NNbarTreatment | nnbar_treatment, | ||
StringProcess * | string_process | ||
) | const |
Generate a list of all possible collisions between the incoming particles with the given c.m.
energy and the calculated cross sections. The string processes are not added at this step if it's not triggerd according to the probability. It will then be added in add_all_scatterings in scatteraction.cc
[in] | elastic_parameter | Value of the constant global elastic cross section, if it is non-zero. The parametrized elastic cross section is used otherwise. |
[in] | two_to_one_switch | 2->1 reactions enabled? |
[in] | included_2to2 | Which 2->2 ractions are enabled? |
[in] | low_snn_cut | Elastic collisions with CME below are forbidden. |
[in] | strings_switch | Are string processes enabled? |
[in] | use_AQM | Is the Additive Quark Model enabled? |
[in] | strings_with_probability | Are string processes triggered according to a probability? |
[in] | nnbar_treatment | NNbar treatment through resonance, strings or none |
[in] | string_process | a pointer to the StringProcess object, which is used for string excitation and fragmentation. |
Definition at line 123 of file crosssections.cc.
CollisionBranchPtr smash::CrossSections::elastic | ( | double | elast_par, |
bool | use_AQM | ||
) | const |
Determine the elastic cross section for this collision.
If elastic_par is given (and positive), we just use a constant cross section of that size, otherwise a parametrization of the elastic cross section is used (if available).
[in] | elast_par | Elastic cross section parameter from the input file. |
[in] | use_AQM | Whether to extend elastic cross-sections with AQM. |
Definition at line 186 of file crosssections.cc.
CollisionBranchList smash::CrossSections::two_to_one | ( | ) | const |
Find all resonances that can be produced in a 2->1 collision of the two input particles and the production cross sections of these resonances.
Given the data and type information of two colliding particles, create a list of possible resonance production processes and their cross sections.
Definition at line 698 of file crosssections.cc.
double smash::CrossSections::formation | ( | const ParticleType & | type_resonance, |
double | cm_momentum_sqr | ||
) | const |
Return the 2-to-1 resonance production cross section for a given resonance.
[in] | type_resonance | Type information for the resonance to be produced. |
[in] | cm_momentum_sqr | Square of the center-of-mass momentum of the two initial particles. |
Calculate resonance production cross section using the Breit-Wigner distribution as probability amplitude. See Eq. (176) in Buss:2011mx.
Definition at line 738 of file crosssections.cc.
CollisionBranchList smash::CrossSections::rare_two_to_two | ( | ) | const |
Find all 2->2 processes which are suppressed at high energies when strings are turned on with probabilites, but important for the production of rare species such as strange particles.
This function should call the different, more specific functions for the different scatterings. But so far, only Nucleon-Pion to Hyperon- Kaon scattering is implemented.
Definition at line 201 of file crosssections.cc.
CollisionBranchList smash::CrossSections::two_to_two | ( | ReactionsBitSet | included_2to2 | ) | const |
Find all inelastic 2->2 processes for the given scattering.
This function calls the different, more specific functions for the different scatterings.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 775 of file crosssections.cc.
CollisionBranchList smash::CrossSections::string_excitation | ( | double | total_string_xs, |
StringProcess * | string_process, | ||
bool | use_AQM | ||
) | const |
Determine the cross section for string excitations, which is given by the difference between the parametrized total cross section and all the explicitly implemented channels at low energy (elastic, resonance excitation, etc).
[in] | total_string_xs | Total cross section for the string process [mb]. |
[in] | string_process | a pointer to the StringProcess object, which is used for string excitation and fragmentation. |
[in] | use_AQM | whether to extend string cross-sections with AQM |
std::runtime_error | if string_process is a null pointer. |
This method has to be called after all other processes have been determined.
Definition at line 2081 of file crosssections.cc.
CollisionBranchPtr smash::CrossSections::NNbar_annihilation | ( | const double | current_xs | ) | const |
Determine the cross section for NNbar annihilation, which is given by the difference between the parametrized total cross section and all the explicitly implemented channels at low energy (in this case only elastic).
[in] | current_xs | Sum of all cross sections of already determined processes |
This method has to be called after all other processes have been determined.
Definition at line 2305 of file crosssections.cc.
CollisionBranchList smash::CrossSections::NNbar_creation | ( | ) | const |
Determine the cross section for NNbar creation, which is given by detailed balance from the reverse reaction.
See NNbar_annihilation_cross_section
Definition at line 2319 of file crosssections.cc.
double smash::CrossSections::high_energy | ( | ) | const |
Determine the parametrized total cross section at high energies for the given collision, which is non-zero for Baryon-Baryon and Nucleon-Pion scatterings currently.
This is rescaled by AQM factors.
Definition at line 2218 of file crosssections.cc.
double smash::CrossSections::string_probability | ( | bool | strings_switch, |
bool | use_transition_probability, | ||
bool | use_AQM, | ||
bool | treat_nnbar_with_strings | ||
) | const |
If use_transition_probability is true: The string fragmentation is implemented in the same way in GiBUU (Physics Reports 512(2012), 1-124, pg. 33). If the center of mass energy is low, two particles scatter through the resonance channels. If high, the outgoing particles are generated by string fragmentation. If in between, the out- going particles are generated either through the resonance channels or string fragmentation by chance. In detail, the low energy region is from the threshold to (mix_scatter_type_energy - mix_scatter_type_window_width), while the high energy region is from (mix_scatter_type_energy + mix_scatter_type_window_width) to infinity. In between, the probability for string fragmentation increases smoothly from 0 to 1 as the c.m. energy.
If use_transition_probability is false: The string fragmentation is implemented similarly to what is in UrQMD (Bass:1998ca). If sqrts is lower than some cutoff value, there are no strings. If higher, strings are allowed, with the cross-section being the difference between some parametrized total cross-section and the sum of all other channels, if this parametrization is larger than the sum of the channels. If not, strings are not allowed (this cross-section check is performed directly after the function is called, for technical reasons).
Both of these methods are initially implemented for NN and Npi cross- sections, and extended using the AQM to all BB, BM and MM interactions.
Baryon-antibaryon annihilation also uses this function to decide whether to produce strings or not. Since there are no other contributions for this process, there are no cutoffs or gradual increase in the probability of this process happening or not, it just requires the proper combination of incoming particles and config parameters.
[in] | strings_switch | Is string fragmentation enabled? |
[in] | use_transition_probability | which algorithm to use for string treatment (see Switch_on_String_with_Probability) |
[in] | use_AQM | whether AQM is activated |
[in] | treat_nnbar_with_strings | use strings for nnbar treatment? |
Definition at line 2577 of file crosssections.cc.
double smash::CrossSections::probability_transit_high | ( | const double | region_lower, |
const double | region_upper | ||
) | const |
[in] | region_lower | the lowest sqrts in the transition region [GeV] |
[in] | region_upper | the highest sqrts in the transition region [GeV] |
Definition at line 2667 of file crosssections.cc.
|
private |
Choose the appropriate parametrizations for given incoming particles and return the (parametrized) elastic cross section.
[in] | use_AQM | whether AQM is activated |
Definition at line 214 of file crosssections.cc.
|
private |
Determine the (parametrized) elastic cross section for a nucleon-nucleon (NN) collision.
std::runtime_error | if positive cross section cannot be specified. |
Definition at line 275 of file crosssections.cc.
|
private |
Determine the elastic cross section for a nucleon-pion (Npi) collision.
It is given by a parametrization of experimental data.
std::runtime_error | if incoming particles are not nucleon+pion. |
std::runtime_error | if positive cross section cannot be specified. |
Definition at line 306 of file crosssections.cc.
|
private |
Determine the elastic cross section for a nucleon-kaon (NK) collision.
It is given by a parametrization of experimental data.
std::runtime_error | if incoming particles are not nucleon+kaon. |
std::runtime_error | if positive cross section cannot be specified. |
Definition at line 603 of file crosssections.cc.
|
private |
Find all processes for Nucleon-Pion to Hyperon-Kaon Scattering.
These scatterings are suppressed at high energies when strings are turned on with probabilities, so they need to be added back manually.
Definition at line 389 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes for Baryon-Baryon (BB) Scattering except the more specific Nucleon-Nucleon Scattering.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 825 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes for Nucelon-Nucelon Scattering.
Calculate cross sections for resonance production from nucleon-nucleon collisions (i.e. N N -> N R, N N -> Delta R).
Checks are processed in the following order:
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 852 of file crosssections.cc.
|
private |
Find all inelastic 2->2 background processes for Nucleon-Kaon (NK) Scattering.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 923 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes for Delta-Kaon (DeltaK) Scattering.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 1406 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes for Hyperon-Pion (Ypi) Scattering.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 1555 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes involving Pion and (anti-) Deuteron (dpi), specifically dπ→ NN, d̅π→ N̅N̅; πd→ πd' (mockup for πd→ πnp), πd̅→ πd̅' and reverse.
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 1911 of file crosssections.cc.
|
private |
Find all inelastic 2->2 processes involving Nucleon and (anti-) Deuteron (dN), specifically Nd → Nd', N̅d → N̅d', N̅d̅→ N̅d̅', Nd̅→ Nd̅' and reverse (e.g.
Nd'→ Nd).
[in] | included_2to2 | Which 2->2 reactions are enabled? |
Definition at line 2023 of file crosssections.cc.
|
private |
Determine the (parametrized) hard non-diffractive string cross section for this collision.
Definition at line 2281 of file crosssections.cc.
|
private |
Calculate cross sections for resonance absorption (i.e.
NR->NN and ΔR->NN).
[in] | is_anti_particles | Whether the colliding particles are antiparticles |
Cross section for 2->2 resonance absorption, obtained via detailed balance from the inverse reaction. See eqs. (B.6), (B.9) and (181) in Buss:2011mx. There are factors for spin, isospin and symmetry involved.
Definition at line 2348 of file crosssections.cc.
|
staticprivate |
Scattering matrix amplitude squared (divided by 16π) for resonance production processes like NN → NR and NN → ΔR, where R is a baryon resonance (Δ, N*, Δ*).
Includes no spin or isospin factors.
[in] | sqrts | sqrt(Mandelstam-s), i.e. collision CMS energy. |
[in] | type_a | Type information for the first final-state particle. |
[in] | type_b | Type information for the second final-state particle. |
[in] | twoI | Twice the total isospin of the involved state. |
NN → NΔ: fit sqrt(s)-dependence to OBE model [Dmitriev:1986st]
All other processes use a constant matrix element, similar to Bass:1998ca, equ. (3.35).
pn → pnη cross section is known to be larger than the corresponding pp → ppη cross section by a factor of 6.5 [Calen:1998vh]. Since the eta is mainly produced by an intermediate N*(1535) we introduce an explicit isospin asymmetry for the production of N*(1535) produced in pn vs. pp similar to [Teis:1996kx], eq. 29.
Definition at line 2415 of file crosssections.cc.
|
private |
Utility function to avoid code replication in nn_xx().
[in] | type_res_1 | List of possible first final resonance types |
[in] | type_res_2 | List of possible second final resonance types |
[in] | integrator | Used to integrate over the kinematically allowed mass range of the Breit-Wigner distribution |
Cross section for 2->2 process with 1/2 resonance(s) in final state. Based on Eq. (46) in Weil:2013mya and Eq. (3.29) in Bass:1998ca
Definition at line 2503 of file crosssections.cc.
|
inlineprivate |
Determine the momenta of the incoming particles in the center-of-mass system.
Definition at line 454 of file crosssections.h.
|
inlineprivate |
Helper function: Add a 2-to-2 channel to a collision branch list given a cross section.
The cross section is only calculated if there is enough energy for the process. If the cross section is small, the branch is not added.
Definition at line 483 of file crosssections.h.
|
private |
List with data of scattering particles.
Definition at line 461 of file crosssections.h.
|
private |
Total energy in the center-of-mass frame.
Definition at line 464 of file crosssections.h.
|
private |
Potentials at the interacting point.
They are used to calculate the corrections on the threshold energies.
Definition at line 470 of file crosssections.h.
|
private |
Whether incoming particles are a baryon-antibaryon pair.
Definition at line 473 of file crosssections.h.