Version: SMASH-2.0
parametrizations.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2013-2020
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 #ifndef SRC_INCLUDE_SMASH_PARAMETRIZATIONS_H_
10 #define SRC_INCLUDE_SMASH_PARAMETRIZATIONS_H_
11 
12 #include <unordered_map>
13 #include <utility>
14 
15 #include "particletype.h"
16 
17 /* All quantities in this file use they same units as the rest of SMASH.
18  * That is: GeV for energies and momenta, fm for distances and time, and mb for
19  * cross-sections. */
20 
21 namespace smash {
22 
39 double xs_high_energy(double mandelstam_s, bool is_opposite_charge, double ma,
40  double mb, double P, double R1, double R2);
41 
49 double pp_high_energy(double mandelstam_s);
50 
58 double ppbar_high_energy(double mandelstam_s);
59 
67 double np_high_energy(double mandelstam_s);
68 
76 double npbar_high_energy(double mandelstam_s);
77 
85 double piplusp_high_energy(double mandelstam_s);
86 
94 double piminusp_high_energy(double mandelstam_s);
95 
103 double xs_ppbar_annihilation(double mandelstam_s);
104 
117 double xs_string_hard(double mandelstam_s, double xs_0, double e_0,
118  double lambda_pow);
119 
128 double NN_string_hard(double mandelstam_s);
129 
138 double Npi_string_hard(double mandelstam_s);
139 
148 double pipi_string_hard(double mandelstam_s);
149 
161 double piplusp_elastic_high_energy(double mandelstam_s, double m1, double m2);
162 
173 double piplusp_elastic_AQM(double mandelstam_s, double m1, double m2);
174 
189 double piplusp_elastic(double mandelstam_s);
190 
198 double piplusp_sigmapluskplus_pdg(double mandelstam_s);
199 
207 double piminusp_elastic(double mandelstam_s);
208 
216 double piminusp_lambdak0_pdg(double mandelstam_s);
217 
225 double piminusp_sigmaminuskplus_pdg(double mandelstam_s);
226 
234 double piminusp_sigma0k0_res(double mandelstam_s);
235 
243 double pp_elastic(double mandelstam_s);
244 
255 double pp_elastic_high_energy(double mandelstam_s, double m1, double m2);
256 
266 double pp_total(double mandelstam_s);
267 
275 double np_elastic(double mandelstam_s);
276 
286 double np_total(double mandelstam_s);
287 
295 double ppbar_elastic(double mandelstam_s);
296 
304 double ppbar_total(double mandelstam_s);
305 
314 double deuteron_pion_elastic(double mandelstam_s);
315 
323 double deuteron_nucleon_elastic(double mandelstam_s);
324 
333 double kplusp_elastic_background(double mandelstam_s);
334 
343 double kplusn_elastic_background(double mandelstam_s);
344 
353 double kplusn_k0p(double mandelstam_s);
354 
362 double kminusp_elastic_background(double mandelstam_s);
363 
371 double kminusn_elastic_background(double mandelstam_s);
372 
380 double k0p_elastic_background(double mandelstam_s);
381 
389 double k0n_elastic_background(double mandelstam_s);
390 
398 double kbar0p_elastic_background(double mandelstam_s);
399 
407 double kbar0n_elastic_background(double mandelstam_s);
408 
416 double kplusp_inelastic_background(double mandelstam_s);
417 
428 double kplusn_inelastic_background(double mandelstam_s);
429 
436 struct pair_hash {
438  std::size_t operator()(const std::pair<uint64_t, uint64_t>& p) const {
439  auto h1 = std::hash<uint64_t>{}(p.first);
440  auto h2 = std::hash<uint64_t>{}(p.second);
441 
442  /* In our case the integers are PDG codes. We know they are different
443  * and their order is defined, so we can simply combine the hashes
444  * using XOR. Note that this yields 0 for h1 == h2. Also,
445  * std::swap(h1, h2) does not not change the final hash. */
446  assert(h1 != h2);
447  return h1 ^ h2;
448  }
449 };
450 
460  private:
462  mutable std::unordered_map<std::pair<uint64_t, uint64_t>, double, pair_hash>
464 
465  public:
468 
474  double get_ratio(const ParticleType& a, const ParticleType& b,
475  const ParticleType& c, const ParticleType& d) const;
476 };
477 
478 extern /*thread_local (see #3075)*/ KaonNucleonRatios kaon_nucleon_ratios;
479 
487 double kminusp_kbar0n(double mandelstam_s);
488 
496 double kminusp_piminussigmaplus(double sqrts);
497 
505 double kminusp_piplussigmaminus(double sqrts);
506 
514 double kminusp_pi0sigma0(double sqrts);
515 
524 double kminusp_pi0lambda(double sqrts);
525 
534 double kminusn_piminussigma0(double sqrts);
535 
544 double kminusn_pi0sigmaminus(double sqrts);
545 
554 double kminusn_piminuslambda(double sqrts);
555 
567 double lambdalambda_ximinusp(double sqrts_sqrts0, double p_N, double p_lambda);
568 
580 double lambdalambda_xi0n(double sqrts_sqrts0, double p_N, double p_lambda);
581 
591 double lambdasigmaplus_xi0p(double sqrts_sqrts0);
592 
602 double lambdasigmaminus_ximinusn(double sqrts_sqrts0);
603 
613 double lambdasigma0_ximinusp(double sqrts_sqrts0);
614 
624 double lambdasigma0_xi0n(double sqrts_sqrts0);
625 
635 double sigma0sigma0_ximinusp(double sqrts_sqrts0);
636 
649 double sigma0sigma0_xi0n(double sqrts_sqrts0);
650 
660 double sigmaplussigmaminus_xi0p(double sqrts_sqrts0);
661 
671 double sigma0sigmaminus_ximinusn(double sqrts_sqrts0);
672 
682 double sigmaplussigmaminus_ximinusp(double sqrts_sqrts0);
683 
693 double sigmaplussigmaminus_xi0n(double sqrts_sqrts0);
694 
695 } // namespace smash
696 
697 #endif // SRC_INCLUDE_SMASH_PARAMETRIZATIONS_H_
smash
Definition: action.h:24
smash::ppbar_high_energy
double ppbar_high_energy(double mandelstam_s)
ppbar total cross section at high energies
Definition: parametrizations.cc:47
smash::xs_high_energy
double xs_high_energy(double mandelstam_s, bool is_opposite_charge, double ma, double mb, double P, double R1, double R2)
total hadronic cross sections at high energies parametrized in the 2016 PDG book(http://pdg....
Definition: parametrizations.cc:29
smash::k0p_elastic_background
double k0p_elastic_background(double mandelstam_s)
K0 p elastic background cross section parametrization Source: Buss:2011mx , B.3.9.
Definition: parametrizations.cc:511
smash::kplusn_inelastic_background
double kplusn_inelastic_background(double mandelstam_s)
K+ n inelastic background cross section parametrization Source: Buss:2011mx , B.3....
Definition: parametrizations.cc:547
smash::kplusn_k0p
double kplusn_k0p(double mandelstam_s)
K+ n charge exchange cross section parametrization.
Definition: parametrizations.cc:441
smash::sigma0sigma0_ximinusp
double sigma0sigma0_ximinusp(double sqrts_sqrts0)
Sigma0 Sigma0 <-> Xi- p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:741
smash::deuteron_nucleon_elastic
double deuteron_nucleon_elastic(double mandelstam_s)
Deuteron nucleon elastic cross-section [mb] parametrized by Oh:2009gx .
Definition: parametrizations.cc:418
smash::sigma0sigma0_xi0n
double sigma0sigma0_xi0n(double sqrts_sqrts0)
Sigma0 Sigma0 <-> Xi0 n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:750
smash::ppbar_elastic
double ppbar_elastic(double mandelstam_s)
ppbar elastic cross section parametrization Source: Bass:1998ca
Definition: parametrizations.cc:387
smash::kminusn_piminuslambda
double kminusn_piminuslambda(double sqrts)
K- n <-> pi- Lambda cross section parametrization Follow from the parametrization with the same stran...
Definition: parametrizations.cc:703
smash::kminusp_piplussigmaminus
double kminusp_piplussigmaminus(double sqrts)
K- p <-> pi+ Sigma- cross section parametrization Taken from UrQMD (Graef:2014mra ).
Definition: parametrizations.cc:686
smash::kbar0p_elastic_background
double kbar0p_elastic_background(double mandelstam_s)
Kbar0 p elastic background cross section parametrization Source: Buss:2011mx , B.3....
Definition: parametrizations.cc:521
smash::kminusp_pi0sigma0
double kminusp_pi0sigma0(double sqrts)
K- p <-> pi0 Sigma0 cross section parametrization Fit to Landolt-Börnstein instead of UrQMD values.
Definition: parametrizations.cc:690
smash::piplusp_high_energy
double piplusp_high_energy(double mandelstam_s)
pi+p total cross section at high energies
Definition: parametrizations.cc:59
smash::pair_hash
Hash a pair of integers.
Definition: parametrizations.h:436
smash::kminusn_pi0sigmaminus
double kminusn_pi0sigmaminus(double sqrts)
K- n <-> pi0 Sigma- cross section parametrization Follow from the parametrization with the same stran...
smash::pipi_string_hard
double pipi_string_hard(double mandelstam_s)
pion-pion hard scattering cross section (with partonic scattering)
Definition: parametrizations.cc:98
smash::pp_elastic
double pp_elastic(double mandelstam_s)
pp elastic cross section parametrization Source: Weil:2013mya , eq.
Definition: parametrizations.cc:309
smash::k0n_elastic_background
double k0n_elastic_background(double mandelstam_s)
K0 n elastic background cross section parametrization Source: Buss:2011mx , B.3.9.
Definition: parametrizations.cc:516
smash::lambdalambda_xi0n
double lambdalambda_xi0n(double sqrts_sqrts0, double p_N, double p_lambda)
Lambda Lambda <-> Xi0 n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:715
smash::xs_ppbar_annihilation
double xs_ppbar_annihilation(double mandelstam_s)
parametrized cross-section for proton-antiproton annihilation used in the UrQMD model
Definition: parametrizations.cc:67
smash::lambdalambda_ximinusp
double lambdalambda_ximinusp(double sqrts_sqrts0, double p_N, double p_lambda)
Lambda Lambda <-> Xi- p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:709
smash::lambdasigma0_ximinusp
double lambdasigma0_ximinusp(double sqrts_sqrts0)
Lambda Sigma0 <-> Xi- p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:728
smash::ppbar_total
double ppbar_total(double mandelstam_s)
ppbar total cross section parametrization Source: Bass:1998ca
Definition: parametrizations.cc:400
smash::kminusp_elastic_background
double kminusp_elastic_background(double mandelstam_s)
K- p elastic background cross section parametrization Source: Buss:2011mx , B.3.9.
Definition: parametrizations.cc:465
smash::NN_string_hard
double NN_string_hard(double mandelstam_s)
nucleon-nucleon hard scattering cross section (with partonic scattering)
Definition: parametrizations.cc:90
smash::kplusn_elastic_background
double kplusn_elastic_background(double mandelstam_s)
K+ n elastic background cross section parametrization sigma(K+n->K+n) = sigma(K+n->K0p) = 0....
Definition: parametrizations.cc:437
smash::piminusp_sigmaminuskplus_pdg
double piminusp_sigmaminuskplus_pdg(double mandelstam_s)
pi- p -> Sigma- K+ cross section parametrization, PDG data.
Definition: parametrizations.cc:274
smash::piplusp_elastic_AQM
double piplusp_elastic_AQM(double mandelstam_s, double m1, double m2)
An overload of piplusp_elastic_high_energy in which the very low part is replaced by a flat 5 mb cros...
Definition: parametrizations.cc:129
smash::kminusn_elastic_background
double kminusn_elastic_background(double mandelstam_s)
K- n elastic background cross section parametrization Source: Buss:2011mx , B.3.9.
Definition: parametrizations.cc:509
smash::pp_high_energy
double pp_high_energy(double mandelstam_s)
pp total cross section at high energies
Definition: parametrizations.cc:43
smash::np_high_energy
double np_high_energy(double mandelstam_s)
np total cross section at high energies
Definition: parametrizations.cc:51
smash::KaonNucleonRatios
Calculate and store isospin ratios for K N -> K Delta reactions.
Definition: parametrizations.h:459
smash::sigma0sigmaminus_ximinusn
double sigma0sigmaminus_ximinusn(double sqrts_sqrts0)
Sigma0 Sigma- <-> Xi- n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:758
smash::pp_elastic_high_energy
double pp_elastic_high_energy(double mandelstam_s, double m1, double m2)
pp elastic cross section parametrization, with only the high energy part generalized to all energy re...
Definition: parametrizations.cc:328
smash::kminusp_pi0lambda
double kminusp_pi0lambda(double sqrts)
K- p <-> pi0 Lambda cross section parametrization Fit to Landolt-Börnstein instead of UrQMD values.
Definition: parametrizations.cc:694
smash::lambdasigmaplus_xi0p
double lambdasigmaplus_xi0p(double sqrts_sqrts0)
Lambda Sigma+ <-> Xi0 p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:719
smash::piplusp_elastic_high_energy
double piplusp_elastic_high_energy(double mandelstam_s, double m1, double m2)
pi+p elactic cross section parametrization.
Definition: parametrizations.cc:122
smash::deuteron_pion_elastic
double deuteron_pion_elastic(double mandelstam_s)
Deuteron pion elastic cross-section [mb] parametrized to fit pi-d elastic scattering data (the data c...
Definition: parametrizations.cc:413
particletype.h
smash::np_total
double np_total(double mandelstam_s)
np total cross section parametrization Sources: low-p: Cugnon:1996kh highest-p: Buss:2011mx
Definition: parametrizations.cc:371
smash::kplusp_elastic_background
double kplusp_elastic_background(double mandelstam_s)
K+ p elastic background cross section parametrization.
Definition: parametrizations.cc:424
smash::kaon_nucleon_ratios
KaonNucleonRatios kaon_nucleon_ratios
Definition: parametrizations.cc:667
smash::piminusp_sigma0k0_res
double piminusp_sigma0k0_res(double mandelstam_s)
pi- p -> Sigma0 K0 cross section parametrization, resonance contribution.
Definition: parametrizations.cc:294
smash::kbar0n_elastic_background
double kbar0n_elastic_background(double mandelstam_s)
Kbar0 n elastic background cross section parametrization Source: Buss:2011mx , B.3....
Definition: parametrizations.cc:526
smash::piminusp_high_energy
double piminusp_high_energy(double mandelstam_s)
pi-p total cross section at high energies
Definition: parametrizations.cc:63
smash::np_elastic
double np_elastic(double mandelstam_s)
np elastic cross section parametrization Source: Weil:2013mya , eq.
Definition: parametrizations.cc:352
smash::piminusp_lambdak0_pdg
double piminusp_lambdak0_pdg(double mandelstam_s)
pi- p -> Lambda K0 cross section parametrization, PDG data.
Definition: parametrizations.cc:254
smash::pdg::h1
constexpr int h1
h₁(1170).
Definition: pdgcode_constants.h:90
smash::kminusn_piminussigma0
double kminusn_piminussigma0(double sqrts)
K- n <-> pi- Sigma0 cross section parametrization Follow from the parametrization with the same stran...
Definition: parametrizations.cc:698
smash::pp_total
double pp_total(double mandelstam_s)
pp total cross section parametrization Sources: low-p: Cugnon:1996kh highest-p: Buss:2011mx
Definition: parametrizations.cc:336
smash::kplusp_inelastic_background
double kplusp_inelastic_background(double mandelstam_s)
K+ p inelastic background cross section parametrization Source: Buss:2011mx , B.3....
Definition: parametrizations.cc:531
smash::KaonNucleonRatios::ratios_
std::unordered_map< std::pair< uint64_t, uint64_t >, double, pair_hash > ratios_
Internal representation of isospin weights once calculated.
Definition: parametrizations.h:463
smash::pair_hash::operator()
std::size_t operator()(const std::pair< uint64_t, uint64_t > &p) const
Hashing is done by this operator.
Definition: parametrizations.h:438
smash::piplusp_elastic
double piplusp_elastic(double mandelstam_s)
pi+p elastic cross section parametrization, PDG data.
Definition: parametrizations.cc:139
smash::xs_string_hard
double xs_string_hard(double mandelstam_s, double xs_0, double e_0, double lambda_pow)
Utility function called by specific other parametrizations Parametrized hard scattering cross section...
Definition: parametrizations.cc:79
smash::KaonNucleonRatios::get_ratio
double get_ratio(const ParticleType &a, const ParticleType &b, const ParticleType &c, const ParticleType &d) const
Return the isospin ratio of the given K N -> K Delta cross section.
Definition: parametrizations.cc:641
smash::piplusp_sigmapluskplus_pdg
double piplusp_sigmapluskplus_pdg(double mandelstam_s)
pi+ p to Sigma+ K+ cross section parametrization, PDG data.
Definition: parametrizations.cc:173
smash::piminusp_elastic
double piminusp_elastic(double mandelstam_s)
pi-p elastic cross section parametrization Source: GiBUU:parametrizationBarMes_HighEnergy....
Definition: parametrizations.cc:208
smash::npbar_high_energy
double npbar_high_energy(double mandelstam_s)
npbar total cross section at high energies
Definition: parametrizations.cc:55
smash::KaonNucleonRatios::KaonNucleonRatios
KaonNucleonRatios()
Create an empty K N -> K Delta isospin ratio storage.
Definition: parametrizations.h:467
smash::sigmaplussigmaminus_xi0n
double sigmaplussigmaminus_xi0n(double sqrts_sqrts0)
Sigma+ Sigma- <-> Xi0 n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:766
smash::Npi_string_hard
double Npi_string_hard(double mandelstam_s)
nucleon-pion hard scattering cross section (with partonic scattering)
Definition: parametrizations.cc:94
smash::lambdasigmaminus_ximinusn
double lambdasigmaminus_ximinusn(double sqrts_sqrts0)
Lambda Sigma- <-> Xi- n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:724
smash::lambdasigma0_xi0n
double lambdasigma0_xi0n(double sqrts_sqrts0)
Lambda Sigma0 <-> Xi0 n cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:737
smash::pdg::p
constexpr int p
Proton.
Definition: pdgcode_constants.h:28
smash::kminusp_piminussigmaplus
double kminusp_piminussigmaplus(double sqrts)
K- p <-> pi- Sigma+ cross section parametrization Taken from UrQMD (Graef:2014mra ).
Definition: parametrizations.cc:682
smash::kminusp_kbar0n
double kminusp_kbar0n(double mandelstam_s)
K- p <-> Kbar0 n cross section parametrization.
Definition: parametrizations.cc:669
smash::sigmaplussigmaminus_ximinusp
double sigmaplussigmaminus_ximinusp(double sqrts_sqrts0)
Sigma+ Sigma- <-> Xi- p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:762
smash::sigmaplussigmaminus_xi0p
double sigmaplussigmaminus_xi0p(double sqrts_sqrts0)
Sigma+ Sigma- <-> Xi0 p cross section parametrization Two hyperon exchange, based on effective model ...
Definition: parametrizations.cc:754