Version: SMASH-1.8
bremsstrahlungaction.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2020 -
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_BREMSSTRAHLUNG_H_
11 #define SRC_INCLUDE_BREMSSTRAHLUNG_H_
12 
13 #include "scatteraction.h"
14 
15 namespace smash {
25  public:
38  BremsstrahlungAction(const ParticleList &in, const double time,
39  const int n_frac_photons,
40  const double hadronic_cross_section_input);
47  void perform_bremsstrahlung(const OutputsList &outputs);
48 
53  void generate_final_state() override;
54 
59  void sample_3body_phasespace() override;
60 
66  double get_total_weight() const override { return weight_; }
67 
75 
86  void add_dummy_hadronic_process(double reaction_cross_section);
87 
93  add_processes<CollisionBranch>(brems_cross_sections(),
96  }
97 
103  enum class ReactionType {
104  no_reaction,
105  pi_z_pi_m,
106  pi_z_pi_p,
107  pi_p_pi_m,
108  pi_m_pi_m,
109  pi_p_pi_p,
110  pi_z_pi_z
111  };
112 
122  static ReactionType bremsstrahlung_reaction_type(const ParticleList &in);
123 
132  static bool is_bremsstrahlung_reaction(const ParticleList &in) {
134  }
135 
136  private:
142 
145 
152 
154  double weight_ = 0.0;
155 
158 
161 
163  double k_;
164 
166  double theta_;
167 
172  void create_interpolations();
173 
179  CollisionBranchList brems_cross_sections();
180 
188  std::pair<double, double> brems_diff_cross_sections();
189 };
190 
191 } // namespace smash
192 
193 #endif // SRC_INCLUDE_BREMSSTRAHLUNG_H_
smash
Definition: action.h:24
smash::BremsstrahlungAction::create_interpolations
void create_interpolations()
Create interpolation objects for tabularized cross sections: total cross section, differential dSigma...
Definition: bremsstrahlungaction.cc:315
smash::BremsstrahlungAction::brems_cross_sections
CollisionBranchList brems_cross_sections()
Computes the total cross section of the bremsstrahlung process.
Definition: bremsstrahlungaction.cc:174
smash::BremsstrahlungAction::is_bremsstrahlung_reaction
static bool is_bremsstrahlung_reaction(const ParticleList &in)
Check if particles can undergo an implemented photon process.
Definition: bremsstrahlungaction.h:132
smash::BremsstrahlungAction::number_of_fractional_photons_
const int number_of_fractional_photons_
Number of photons created for each hadronic scattering, needed for correct weighting.
Definition: bremsstrahlungaction.h:151
smash::BremsstrahlungAction::ReactionType::pi_z_pi_z
smash::BremsstrahlungAction::k_
double k_
Sampled value of k (photon momentum)
Definition: bremsstrahlungaction.h:163
smash::BremsstrahlungAction::brems_diff_cross_sections
std::pair< double, double > brems_diff_cross_sections()
Computes the differential cross sections dSigma/dk and dSigma/dtheta of the bremsstrahlung process.
Definition: bremsstrahlungaction.cc:266
smash::BremsstrahlungAction::bremsstrahlung_reaction_type
static ReactionType bremsstrahlung_reaction_type(const ParticleList &in)
Determine photon process from incoming particles.
Definition: bremsstrahlungaction.cc:28
smash::BremsstrahlungAction::get_total_weight
double get_total_weight() const override
Return the weight of the last created photon.
Definition: bremsstrahlungaction.h:66
smash::ScatterAction
Definition: scatteraction.h:31
smash::BremsstrahlungAction::sample_3body_phasespace
void sample_3body_phasespace() override
Sample the final state anisotropically, considering the differential cross sections with respect to t...
Definition: bremsstrahlungaction.cc:140
smash::BremsstrahlungAction::ReactionType::pi_z_pi_m
smash::BremsstrahlungAction::hadronic_cross_section
double hadronic_cross_section() const
Return the total cross section of the underlying hadronic scattering It is necessary for the weightin...
Definition: bremsstrahlungaction.h:74
smash::BremsstrahlungAction::ReactionType::pi_m_pi_m
smash::BremsstrahlungAction::add_dummy_hadronic_process
void add_dummy_hadronic_process(double reaction_cross_section)
Adds one hadronic process with a given cross-section.
Definition: bremsstrahlungaction.cc:166
smash::BremsstrahlungAction::weight_
double weight_
Weight of the produced photon.
Definition: bremsstrahlungaction.h:154
smash::BremsstrahlungAction::theta_
double theta_
Sampled value of theta (angle of the photon)
Definition: bremsstrahlungaction.h:166
smash::BremsstrahlungAction::collision_processes_bremsstrahlung_
CollisionBranchList collision_processes_bremsstrahlung_
Holds the bremsstrahlung branch.
Definition: bremsstrahlungaction.h:141
smash::BremsstrahlungAction::add_single_process
void add_single_process()
Add the photonic process.
Definition: bremsstrahlungaction.h:92
smash::BremsstrahlungAction::BremsstrahlungAction
BremsstrahlungAction(const ParticleList &in, const double time, const int n_frac_photons, const double hadronic_cross_section_input)
Construct a ScatterActionBrems object.
Definition: bremsstrahlungaction.cc:19
smash::BremsstrahlungAction::cross_section_bremsstrahlung_
double cross_section_bremsstrahlung_
Total cross section of bremsstrahlung process.
Definition: bremsstrahlungaction.h:157
smash::BremsstrahlungAction::ReactionType::pi_p_pi_m
smash::BremsstrahlungAction::ReactionType
ReactionType
Enum for encoding the photon process.
Definition: bremsstrahlungaction.h:103
smash::BremsstrahlungAction::ReactionType::pi_p_pi_p
smash::BremsstrahlungAction::reac_
const ReactionType reac_
Reaction process as determined from incoming particles.
Definition: bremsstrahlungaction.h:144
smash::BremsstrahlungAction::ReactionType::pi_z_pi_p
smash::BremsstrahlungAction
Definition: bremsstrahlungaction.h:24
scatteraction.h
smash::BremsstrahlungAction::ReactionType::no_reaction
smash::BremsstrahlungAction::perform_bremsstrahlung
void perform_bremsstrahlung(const OutputsList &outputs)
Create the final state and write to output.
Definition: bremsstrahlungaction.cc:63
smash::BremsstrahlungAction::generate_final_state
void generate_final_state() override
Generate the final-state for the Bremsstrahlung process.
Definition: bremsstrahlungaction.cc:75
smash::BremsstrahlungAction::hadronic_cross_section_
const double hadronic_cross_section_
Total hadronic cross section.
Definition: bremsstrahlungaction.h:160