Version: SMASH-3.4
crosssectionsphoton.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2017-2023
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_CROSSSECTIONSPHOTON_H_
11 #define SRC_INCLUDE_SMASH_CROSSSECTIONSPHOTON_H_
12 
13 #include "kinematics.h"
14 
15 namespace smash {
16 /** Cross section after cut off.
17  *
18  * Photon cross sections diverge tremendously at the threshold which
19  * becomes particularly problematic when running with broad rho
20  * mesons. Then the actual photon cross section is used for the
21  * weight: W = Sigma_photon/Sigma_hadron. If the photon cross
22  * section diverges, the weight becomes huge and we significantly
23  * overestimate photon production. This cutoff fixes the problem.
24  *
25  * Either the cross section is returned or, if the cross section i
26  * larger than the cut off, the cut off value is returned.
27  *
28  * \param[in] sigma_mb cross section before cut off [mb]
29  * \return Cross section after cut off [mb]
30  */
31 double cut_off(const double sigma_mb);
32 
33 /**
34  * Calculation method for the cross sections. It has only one member at the
35  * moment. In the future there will be more options.
36  */
37 enum class ComputationMethod { Analytic };
38 
39 template <ComputationMethod method>
41 
42 /**
43  * Class to calculate the cross-section of a meson-meson to meson-photon
44  * process. This template specialization uses the analytic formulas for the
45  * cross-sections.
46  */
47 template <>
49  public:
50  /** @name Total cross-section
51  * The functions in this group calculate the analytical value of the total
52  * cross-section for a photon process.
53  */
54  ///@{
55  /**
56  * Total cross sections for given photon process:
57  *
58  * \param[in] s Mandelstam-s [GeV^2]
59  * \param[in] m_rho Mass of participating rho-meson [GeV]
60  * \returns photon cross-section [mb]
61  */
62  static double xs_pi_pi_rho0(const double s, const double m_rho);
63  static double xs_pi_pi0_rho(const double s, const double m_rho);
64  static double xs_pi0_rho0_pi0(const double s, const double m_rho);
65  static double xs_pi_rho0_pi(const double s, const double m_rho);
66 
67  static double xs_pi_rho_pi0(const double s, const double m_rho);
68  static double xs_pi_rho_pi0_rho_mediated(const double s, const double m_rho);
69  static double xs_pi_rho_pi0_omega_mediated(const double s,
70  const double m_rho);
71 
72  static double xs_pi0_rho_pi(const double s, const double m_rho);
73  static double xs_pi0_rho_pi_rho_mediated(const double s, const double m_rho);
74  static double xs_pi0_rho_pi_omega_mediated(const double s,
75  const double m_rho);
76  ///@}
77 
78  /** @name Differential cross-section
79  * The functions in this group calculate the analytical value of the
80  * differential cross-section for a photon process.
81  */
82  ///@{
83  /**
84  * Differential cross section for given photon process.
85  *
86  * \param[in] s Mandelstam-s [GeV^2]
87  * \param[in] t Mandelstam-t [GeV^2]
88  * \param[in] m_rho Mass of participating rho-meson [GeV]
89  * \returns photon cross-section [mb]
90  */
91  static double xs_diff_pi_pi_rho0(const double s, const double t,
92  const double m_rho);
93  static double xs_diff_pi_pi0_rho(const double s, const double t,
94  const double m_rho);
95  static double xs_diff_pi0_rho0_pi0(const double s, const double t,
96  const double m_rho);
97  static double xs_diff_pi_rho0_pi(const double s, const double t,
98  const double m_rho);
99 
100  static double xs_diff_pi_rho_pi0_rho_mediated(const double s, const double t,
101  const double m_rho);
102  static double xs_diff_pi_rho_pi0_omega_mediated(const double s,
103  const double t,
104  const double m_rho);
105 
106  static double xs_diff_pi0_rho_pi_rho_mediated(const double s, const double t,
107  const double m_rho);
108  static double xs_diff_pi0_rho_pi_omega_mediated(const double s,
109  const double t,
110  const double m_rho);
111  ///@}
112 
113  // Todo{JR}: Needed for tabulation.
114  /// @cond
115  static double s_min, s_max, t_min, t_max;
116  /// @endcond
117 
118  private:
119  /** @name Constants
120  * The choice of these parameters, necessary to determine the photon cross
121  * sections, follows from (\iref{Turbide:2006zz}). Here, different
122  * combinations of parameters were proposed and investigated. We decided to
123  * use the parameters of set II in their categorization. They are named
124  * identically, except for "Const", which corresponds to "C" in
125  * \iref{Turbide:2006zz}.
126  */
127  ///@{
128  /**
129  * Constant in the computation of photon cross sections.
130  */
131  constexpr static double Const = 0.059;
132  constexpr static double g_POR = 22.6;
133  constexpr static double ghat = 6.4483;
134  constexpr static double eta1 = 2.3920;
135  constexpr static double eta2 = 1.9430;
136  constexpr static double delta = -0.6426;
137  constexpr static double C4 = -0.14095;
138  constexpr static double Gammaa1 = 0.4;
139  ///@}
140  /// Value of \f$ \pi \f$
141  constexpr static double Pi = M_PI;
142  /**
143  * Value of a1 mass in GeV.
144  *
145  * \note The cross section calculated here relies on the following value of
146  * the a1 particle, which is slightly different from the value used in the
147  * particles.txt file. Other mass values (like the pion mass) are globally
148  * defined and imposed to be identical to those provided in the particles.txt
149  * file. For a1 we want to allow in general different values from 1.26 GeV.
150  * This is why we declare the value here.
151  */
152  constexpr static double a1_mass = 1.26;
153 };
154 
155 } // namespace smash
156 
157 #endif // SRC_INCLUDE_SMASH_CROSSSECTIONSPHOTON_H_
Definition: action.h:24
ComputationMethod
Calculation method for the cross sections.
double cut_off(const double sigma_mb)
Cross section after cut off.