Version: SMASH-3.3
bremsstrahlungaction.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2019-2022,2025
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_BREMSSTRAHLUNGACTION_H_
11 #define SRC_INCLUDE_SMASH_BREMSSTRAHLUNGACTION_H_
12 
13 #include <utility>
14 
15 #include "scatteraction.h"
16 
17 namespace smash {
27  public:
41  BremsstrahlungAction(const ParticleList &in, const double time,
42  const int n_frac_photons,
43  const double hadronic_cross_section_input,
44  const SpinInteractionType spin_interaction_type =
52  void perform_bremsstrahlung(const OutputsList &outputs);
53 
58  void generate_final_state() override;
59 
65 
71  double get_total_weight() const override { return weight_; }
72 
80 
91  void add_dummy_hadronic_process(double reaction_cross_section);
92 
98  add_processes<CollisionBranch>(brems_cross_sections(),
101  }
102 
108  enum class ReactionType {
109  no_reaction,
110  pi_z_pi_m,
111  pi_z_pi_p,
112  pi_p_pi_m,
113  pi_m_pi_m,
114  pi_p_pi_p,
115  pi_z_pi_z
116  };
117 
127  static ReactionType bremsstrahlung_reaction_type(const ParticleList &in);
128 
137  static bool is_bremsstrahlung_reaction(const ParticleList &in) {
139  }
140 
141  private:
147 
150 
157 
159  double weight_ = 0.0;
160 
163 
166 
168  double k_;
169 
171  double theta_;
172 
175 
180  void create_interpolations();
181 
187  CollisionBranchList brems_cross_sections();
188 
196  std::pair<double, double> brems_diff_cross_sections();
197 };
198 
199 } // namespace smash
200 
201 #endif // SRC_INCLUDE_SMASH_BREMSSTRAHLUNGACTION_H_
BremsAction is a special action which takes two incoming particles and performs a perturbative scatte...
void sample_3body_phasespace()
Sample the final state anisotropically, considering the differential cross sections with respect to t...
ReactionType
Enum for encoding the photon process.
const ReactionType reac_
Reaction process as determined from incoming particles.
double k_
Sampled value of k (photon momentum)
const SpinInteractionType spin_interaction_type_
Type of spin interaction to use.
const int number_of_fractional_photons_
Number of photons created for each hadronic scattering, needed for correct weighting.
void add_dummy_hadronic_process(double reaction_cross_section)
Adds one hadronic process with a given cross-section.
void generate_final_state() override
Generate the final-state for the Bremsstrahlung process.
static ReactionType bremsstrahlung_reaction_type(const ParticleList &in)
Determine photon process from incoming particles.
double cross_section_bremsstrahlung_
Total cross section of bremsstrahlung process.
void add_single_process()
Add the photonic process.
void perform_bremsstrahlung(const OutputsList &outputs)
Create the final state and write to output.
double get_total_weight() const override
Return the weight of the last created photon.
const double hadronic_cross_section_
Total hadronic cross section.
CollisionBranchList brems_cross_sections()
Computes the total cross section of the bremsstrahlung process.
BremsstrahlungAction(const ParticleList &in, const double time, const int n_frac_photons, const double hadronic_cross_section_input, const SpinInteractionType spin_interaction_type=SpinInteractionType::Off)
Construct a ScatterActionBrems object.
double hadronic_cross_section() const
Return the total cross section of the underlying hadronic scattering It is necessary for the weightin...
CollisionBranchList collision_processes_bremsstrahlung_
Holds the bremsstrahlung branch.
double weight_
Weight of the produced photon.
void create_interpolations()
Create interpolation objects for tabularized cross sections: total cross section, differential dSigma...
double theta_
Sampled value of theta (angle of the photon)
static bool is_bremsstrahlung_reaction(const ParticleList &in)
Check if particles can undergo an implemented photon process.
std::pair< double, double > brems_diff_cross_sections()
Computes the differential cross sections dSigma/dk and dSigma/dtheta of the bremsstrahlung process.
ScatterAction is a special action which takes two incoming particles and performs a scattering,...
Definition: scatteraction.h:30
SpinInteractionType
Possible spin interaction types.
@ Off
No spin interactions.
Definition: action.h:24