Version: SMASH-3.4
scatteractionsfinderparameters.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022-2026
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 #ifndef SRC_INCLUDE_SMASH_SCATTERACTIONSFINDERPARAMETERS_H_
8 #define SRC_INCLUDE_SMASH_SCATTERACTIONSFINDERPARAMETERS_H_
9 
10 #include <memory>
11 #include <set>
12 #include <utility>
13 
15 #include "smash/input_keys.h"
16 
17 namespace smash {
18 
19 /// Constants related to transition between low and high collision energies.
21  /// Transition range in N\f$\pi \f$ collisions
22  const std::pair<double, double> sqrts_range_Npi =
24  /**
25  * Transition range in NN collisions.
26  * Tuned to reproduce experimental exclusive cross section data, and at the
27  * same produce excitation functions that are as smooth as possible. The
28  * default of a 1 GeV range is preserved.
29  */
30  const std::pair<double, double> sqrts_range_NN =
32  /**
33  * Constant for the lower end of transition region in the case of AQM
34  * this is added to the sum of masses
35  */
36  const double sqrts_add_lower =
38  /**
39  * Constant for the range of transition region, in the case of AQM
40  * this is added to the sum of masses + sqrts_add_lower
41  */
42  const double sqrts_range_width =
44  /**
45  * Constant offset as to where to turn on the strings and elastic processes
46  * for \f$ \pi \pi \f$ reactions (this is an exception because the normal AQM
47  * behavior destroys the cross-section at very low \f$\sqrt{s} \f$ and around
48  * the \f$ f_2 \f$ peak)
49  */
50  const double pipi_offset =
52  /**
53  * Constant offset as to where to shift from 2to2 to string
54  * processes (in GeV) in the case of KN reactions
55  */
56  const double KN_offset =
58 };
59 
60 /**
61  * Helper class for ScatterActionsFinder.
62  *
63  * ScatterActionsFinder has one member of this class, which just collects
64  * general parameters, for easier function argument passing. In practice it is
65  * almost a POD structure containing constants defined externally, but allows
66  * for methods that depend on simple inputs, such as AQM_scaling_factor.
67  */
69  public:
70  /**
71  * Class constructor.
72  * \param[in] config The relevant section from the user configuration
73  * \param[in] parameters The Experiment parameters
74  *
75  * \throw std::invalid_argument If configuration parameters are physically
76  * invalid
77  */
79  const ExperimentParameters& parameters);
80  /// Elastic cross section parameter (in mb).
81  const double elastic_parameter;
82  /**
83  * Elastic collsions between two nucleons with sqrt_s below low_snn_cut_ are
84  * excluded.
85  */
86  const double low_snn_cut;
87  /// Factor by which all (partial) cross sections are scaled
88  const double scale_xs;
89  /**
90  * Additional constant contribution (in mb) to the elastic cross sections.
91  *
92  * Using it will break agreement with experimental data for elastic cross
93  * sections that are constrained with data.
94  */
95  const double additional_el_xs; // mb
96  /// \see input_collision_term_
97  const double maximum_cross_section;
98  /// Specifies which collision criterion is used
100  /// Switch for NNbar reactions
102  /// List of included 2<->2 reactions
104  /// Specifies kind of charm rescattering
106  /// List of included multi-particle reactions
108  /// Number of test particles.
109  const int testparticles;
110  /// Enables resonance production
111  const bool two_to_one;
112  /// If particles within the same nucleus are allowed to collide for their
113  /// first time
115  /// Switch to control whether to include spin interactions
117  /// Indicates whether string fragmentation is switched on
118  const bool strings_switch;
119  /// Switch to control whether to use AQM or not
120  const bool use_AQM;
121  /**
122  * This indicates whether the string fragmentation is swiched on with
123  * a probability smoothly increasing with energy. If it's set equal to
124  * false, the cross section of the string fragmentation is counted by
125  * taking the difference between the parametrized total cross section
126  * and the sum of the non-string cross sections.
127  */
129  /**
130  * Switch to turn off throwing an exception for collision probabilities larger
131  * than 1. In larger production runs it is ok, if the probability rarely slips
132  * over 1.
133  */
135  /**
136  * Constants related to transition between low collision energies - mediated
137  * via resonances - and high collision energies - mediated via strings.
138  */
140  /// Method used to evaluate total cross sections for collision finding.
142  /// Which pseudo-resonance to choose.
144  /// Mode used to control the transition from soft to hard string excitation.
146  /**
147  * Invariant energy range for the soft-to-hard string transition
148  * (in \f$\sqrt{s}\f$ measured in GeV).
149  *
150  * The first element is the lower bound and the second element is the
151  * upper bound of the transition interval.
152  */
153  const std::pair<double, double> hard_string_transition_energy_range;
154  /**
155  * AQM scaling factor for a hadron. The suppression factor for strangeness is
156  * fixed to 40%, while the charm and bottom can be configured.
157  *
158  * \param[in] pdg of the particle
159  */
160  double AQM_scaling_factor(const PdgCode& pdg) const {
161  return (1 - AQM_strange_suppression * pdg.frac_strange()) *
162  (1 - AQM_charm_suppression * pdg.frac_charm()) *
163  (1 - AQM_bottom_suppression * pdg.frac_bottom());
164  }
165 
166  private:
167  /// Factor to reduce cross sections for strange hadrons, this is currently
168  /// fixed.
169  const double AQM_strange_suppression = 0.4;
170  /// Factor to reduce cross sections for charmed hadrons
171  const double AQM_charm_suppression;
172  /// Factor to reduce cross sections for bottomed hadrons
174 };
175 
176 } // namespace smash
177 
178 #endif // SRC_INCLUDE_SMASH_SCATTERACTIONSFINDERPARAMETERS_H_
Interface to the SMASH configuration files.
default_type default_value() const
Get the default value of the key.
Definition: key.h:217
PdgCode stores a Particle Data Group Particle Numbering Scheme particle type number.
Definition: pdgcode.h:108
double frac_charm() const
Definition: pdgcode.h:573
double frac_bottom() const
Definition: pdgcode.h:598
double frac_strange() const
Definition: pdgcode.h:548
Helper class for ScatterActionsFinder.
const bool strings_with_probability
This indicates whether the string fragmentation is swiched on with a probability smoothly increasing ...
const bool only_warn_for_high_prob
Switch to turn off throwing an exception for collision probabilities larger than 1.
const int testparticles
Number of test particles.
ScatterActionsFinderParameters(Configuration &config, const ExperimentParameters &parameters)
Class constructor.
const std::pair< double, double > hard_string_transition_energy_range
Invariant energy range for the soft-to-hard string transition (in measured in GeV).
const ReactionsBitSet included_2to2
List of included 2<->2 reactions.
const bool use_AQM
Switch to control whether to use AQM or not.
const double scale_xs
Factor by which all (partial) cross sections are scaled.
const double elastic_parameter
Elastic cross section parameter (in mb).
const bool strings_switch
Indicates whether string fragmentation is switched on.
const StringTransitionParameters transition_high_energy
Constants related to transition between low collision energies - mediated via resonances - and high c...
const TotalCrossSectionStrategy total_xs_strategy
Method used to evaluate total cross sections for collision finding.
const double additional_el_xs
Additional constant contribution (in mb) to the elastic cross sections.
const HardStringTransitionMode hard_string_transition_mode
Mode used to control the transition from soft to hard string excitation.
const CharmRescattering charm_rescattering
Specifies kind of charm rescattering.
const double AQM_charm_suppression
Factor to reduce cross sections for charmed hadrons.
const double AQM_strange_suppression
Factor to reduce cross sections for strange hadrons, this is currently fixed.
const MultiParticleReactionsBitSet included_multi
List of included multi-particle reactions.
const bool allow_collisions_within_nucleus
If particles within the same nucleus are allowed to collide for their first time.
const PseudoResonance pseudoresonance_method
Which pseudo-resonance to choose.
double AQM_scaling_factor(const PdgCode &pdg) const
AQM scaling factor for a hadron.
const NNbarTreatment nnbar_treatment
Switch for NNbar reactions.
const double low_snn_cut
Elastic collsions between two nucleons with sqrt_s below low_snn_cut_ are excluded.
const bool two_to_one
Enables resonance production.
const double AQM_bottom_suppression
Factor to reduce cross sections for bottomed hadrons.
const CollisionCriterion coll_crit
Specifies which collision criterion is used.
const SpinInteractionType spin_interaction_type
Switch to control whether to include spin interactions.
NNbarTreatment
Treatment of N Nbar Annihilation.
CharmRescattering
Possible charm scattering options.
HardStringTransitionMode
Select the model used for the transition from soft to hard string excitation.
TotalCrossSectionStrategy
Determine how total cross sections for collision finding should be computed.
std::bitset< 4 > MultiParticleReactionsBitSet
Container for the n to m reactions in the code.
CollisionCriterion
Criteria used to check collisions.
PseudoResonance
Which pseudo-resonance fills the inelastic gap in the transition to string region of cross sections.
std::bitset< 11 > ReactionsBitSet
Container for the 2 to 2 reactions in the code.
SpinInteractionType
Possible spin interaction types.
Definition: action.h:24
Helper structure for Experiment.
static const Key< double > collTerm_stringTrans_lower
See user guide description for more information.
Definition: input_keys.h:3333
static const Key< std::pair< double, double > > collTerm_stringTrans_rangeNpi
See user guide description for more information.
Definition: input_keys.h:3382
static const Key< double > collTerm_stringTrans_range_width
See user guide description for more information.
Definition: input_keys.h:3402
static const Key< double > collTerm_stringTrans_pipiOffset
See user guide description for more information.
Definition: input_keys.h:3317
static const Key< double > collTerm_stringTrans_KNOffset
See user guide description for more information.
Definition: input_keys.h:3299
static const Key< std::pair< double, double > > collTerm_stringTrans_rangeNN
See user guide description for more information.
Definition: input_keys.h:3354
Constants related to transition between low and high collision energies.
const std::pair< double, double > sqrts_range_Npi
Transition range in N collisions.
const double pipi_offset
Constant offset as to where to turn on the strings and elastic processes for reactions (this is an e...
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 double KN_offset
Constant offset as to where to shift from 2to2 to string processes (in GeV) in the case of KN reactio...
const std::pair< double, double > sqrts_range_NN
Transition range in NN collisions.
const double sqrts_range_width
Constant for the range of transition region, in the case of AQM this is added to the sum of masses + ...