Version: SMASH-2.0
scatteractionphoton.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2016-2020
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_SCATTERACTIONPHOTON_H_
11 #define SRC_INCLUDE_SMASH_SCATTERACTIONPHOTON_H_
12 
13 #include <utility>
14 
15 #include "scatteraction.h"
16 
17 namespace smash {
18 
28  public:
41  ScatterActionPhoton(const ParticleList &in, const double time,
42  const int n_frac_photons,
43  const double hadronic_cross_section_input);
44 
51  void perform_photons(const OutputsList &outputs);
52 
57  void generate_final_state() override;
58 
64  double get_total_weight() const override { return weight_; }
65 
72 
82  double sample_out_hadron_mass(const ParticleTypePtr out_type);
83 
94  void add_dummy_hadronic_process(double reaction_cross_section);
95 
101  add_processes<CollisionBranch>(create_collision_branch(),
104  }
105 
112  enum class ReactionType {
113  no_reaction,
124  };
125 
135  static ReactionType photon_reaction_type(const ParticleList &in);
136 
145  static bool is_photon_reaction(const ParticleList &in) {
147  }
148 
159  static ParticleTypePtr outgoing_hadron_type(const ParticleList &in);
160 
171  static ParticleTypePtr outgoing_hadron_type(const ReactionType reaction);
172 
180  static bool is_kinematically_possible(const double s_sqrt,
181  const ParticleList &in);
182 
183  private:
188  CollisionBranchList collision_processes_photons_;
189 
192 
195 
202 
205 
207  const double hadron_out_mass_;
208 
218  enum class MediatorType { SUM, PION, OMEGA };
221 
223  double weight_ = 0.0;
224 
227 
230 
242  double rho_mass() const;
243 
252  CollisionBranchList create_collision_branch();
253 
262  double total_cross_section(MediatorType mediator = default_mediator_) const;
263 
274  double total_cross_section_w_ff(const double E_photon);
275 
286  double diff_cross_section(const double t, const double m_rho,
287  MediatorType mediator = default_mediator_) const;
288 
301  double diff_cross_section_w_ff(const double t, const double m_rho,
302  const double E_photon);
303 
313  double form_factor_pion(const double E_photon) const;
314 
324  double form_factor_omega(const double E_photon) const;
325 
338  std::pair<double, double> form_factor_pair(const double E_photon);
339 
350  std::pair<double, double> total_cross_section_pair();
351 
365  std::pair<double, double> diff_cross_section_pair(const double t,
366  const double m_rho);
367 };
368 
369 } // namespace smash
370 
371 #endif // SRC_INCLUDE_SMASH_SCATTERACTIONPHOTON_H_
smash
Definition: action.h:24
smash::ScatterActionPhoton::total_cross_section_pair
std::pair< double, double > total_cross_section_pair()
For processes which can happen via (pi, a1, rho) and omega exchange, return the total cross section f...
Definition: scatteractionphoton.cc:660
smash::ScatterActionPhoton::reac_
const ReactionType reac_
Photonic process as determined from incoming particles.
Definition: scatteractionphoton.h:194
smash::ScatterActionPhoton::number_of_fractional_photons_
const int number_of_fractional_photons_
Number of photons created for each hadronic scattering, needed for correct weighting.
Definition: scatteractionphoton.h:201
smash::ScatterActionPhoton::is_kinematically_possible
static bool is_kinematically_possible(const double s_sqrt, const ParticleList &in)
Check if CM-energy is sufficient to produce hadron in final state.
Definition: scatteractionphoton.cc:154
smash::ScatterActionPhoton::ReactionType::pi_p_rho_m_pi_z
smash::ScatterActionPhoton::hadron_out_mass_
const double hadron_out_mass_
Mass of outgoing hadron.
Definition: scatteractionphoton.h:207
smash::ScatterActionPhoton::total_cross_section_w_ff
double total_cross_section_w_ff(const double E_photon)
Compute the total cross corrected for form factors.
Definition: scatteractionphoton.cc:440
smash::ScatterActionPhoton::create_collision_branch
CollisionBranchList create_collision_branch()
Creates a CollisionBranchList containing the photon processes.
Definition: scatteractionphoton.cc:339
smash::ScatterActionPhoton::ReactionType::pi_p_pi_m_rho_z
smash::ScatterAction
Definition: scatteraction.h:30
smash::ScatterActionPhoton::ReactionType::pi_m_rho_z_pi_m
smash::ScatterActionPhoton::perform_photons
void perform_photons(const OutputsList &outputs)
Create the photon final state and write to output.
Definition: scatteractionphoton.cc:90
smash::ScatterActionPhoton::ReactionType::pi_z_pi_p_rho_p
smash::ScatterActionPhoton::rho_mass
double rho_mass() const
Find the mass of the participating rho-particle.
Definition: scatteractionphoton.cc:313
smash::ScatterActionPhoton::ReactionType
ReactionType
Enum for encoding the photon process.
Definition: scatteractionphoton.h:112
smash::ScatterActionPhoton::MediatorType::OMEGA
smash::ScatterActionPhoton::ReactionType::pi_z_rho_m_pi_m
smash::ScatterActionPhoton::photon_reaction_type
static ReactionType photon_reaction_type(const ParticleList &in)
Determine photon process from incoming particles.
Definition: scatteractionphoton.cc:37
smash::ParticleTypePtr
Definition: particletype.h:665
smash::ScatterActionPhoton::is_photon_reaction
static bool is_photon_reaction(const ParticleList &in)
Check if particles can undergo an implemented photon process.
Definition: scatteractionphoton.h:145
smash::ScatterActionPhoton::hadron_out_t_
const ParticleTypePtr hadron_out_t_
ParticleTypePtr to the type of the outgoing hadron.
Definition: scatteractionphoton.h:204
smash::ScatterActionPhoton::diff_cross_section_w_ff
double diff_cross_section_w_ff(const double t, const double m_rho, const double E_photon)
Compute the differential cross section corrected for form factors.
Definition: scatteractionphoton.cc:564
smash::ScatterActionPhoton::add_single_process
void add_single_process()
Add the photonic process.
Definition: scatteractionphoton.h:100
smash::ScatterActionPhoton::form_factor_pion
double form_factor_pion(const double E_photon) const
Compute the form factor for a process with a pion as the lightest exchange particle.
Definition: scatteractionphoton.cc:629
smash::ScatterActionPhoton::outgoing_hadron_type
static ParticleTypePtr outgoing_hadron_type(const ParticleList &in)
Return ParticleTypePtr of hadron in the out channel, given the incoming particles.
Definition: scatteractionphoton.cc:148
smash::ScatterActionPhoton::ReactionType::pi_m_rho_p_pi_z
smash::ScatterActionPhoton::form_factor_pair
std::pair< double, double > form_factor_pair(const double E_photon)
For processes which can happen via (pi, a1, rho) and omega exchange, return the form factor for the (...
Definition: scatteractionphoton.cc:654
smash::ScatterActionPhoton::generate_final_state
void generate_final_state() override
Generate the final-state for the photon scatter process.
Definition: scatteractionphoton.cc:191
smash::ScatterActionPhoton::weight_
double weight_
Weight of the produced photon.
Definition: scatteractionphoton.h:223
smash::ScatterActionPhoton::hadronic_cross_section
double hadronic_cross_section() const
Return the total cross section of the underlying hadronic scattering.
Definition: scatteractionphoton.h:71
smash::ScatterActionPhoton::total_cross_section
double total_cross_section(MediatorType mediator=default_mediator_) const
Calculate the total cross section of the photon process.
Definition: scatteractionphoton.cc:351
smash::ScatterActionPhoton::diff_cross_section
double diff_cross_section(const double t, const double m_rho, MediatorType mediator=default_mediator_) const
Calculate the differential cross section of the photon process.
Definition: scatteractionphoton.cc:503
smash::ScatterActionPhoton::ReactionType::pi_z_rho_p_pi_p
smash::ScatterActionPhoton::ReactionType::pi_z_pi_m_rho_m
smash::ScatterActionPhoton::MediatorType
MediatorType
Compile-time switch for setting the handling of processes which can happen via different mediating pa...
Definition: scatteractionphoton.h:218
smash::ScatterActionPhoton::hadronic_cross_section_
const double hadronic_cross_section_
Total hadronic cross section.
Definition: scatteractionphoton.h:229
smash::ScatterActionPhoton::ReactionType::pi_p_rho_z_pi_p
smash::ScatterActionPhoton::ReactionType::no_reaction
smash::ScatterActionPhoton::ScatterActionPhoton
ScatterActionPhoton(const ParticleList &in, const double time, const int n_frac_photons, const double hadronic_cross_section_input)
Construct a ScatterActionPhoton object.
Definition: scatteractionphoton.cc:27
smash::ScatterActionPhoton
Definition: scatteractionphoton.h:27
smash::ScatterActionPhoton::MediatorType::PION
smash::ScatterActionPhoton::cross_section_photons_
double cross_section_photons_
Total cross section of photonic process.
Definition: scatteractionphoton.h:226
smash::ScatterActionPhoton::collision_processes_photons_
CollisionBranchList collision_processes_photons_
Holds the photon branch.
Definition: scatteractionphoton.h:188
smash::ScatterActionPhoton::form_factor_omega
double form_factor_omega(const double E_photon) const
Compute the form factor for a process with a omega as the lightest exchange particle.
Definition: scatteractionphoton.cc:641
smash::ScatterActionPhoton::MediatorType::SUM
smash::ScatterActionPhoton::sample_out_hadron_mass
double sample_out_hadron_mass(const ParticleTypePtr out_type)
Sample the mass of the outgoing hadron.
Definition: scatteractionphoton.cc:297
scatteraction.h
smash::ScatterActionPhoton::ReactionType::pi_z_rho_z_pi_z
smash::ScatterActionPhoton::diff_cross_section_pair
std::pair< double, double > diff_cross_section_pair(const double t, const double m_rho)
For processes which can happen via (pi, a1, rho) and omega exchange, return the differential cross se...
Definition: scatteractionphoton.cc:667
smash::ScatterActionPhoton::get_total_weight
double get_total_weight() const override
Return the weight of the last created photon.
Definition: scatteractionphoton.h:64
smash::ScatterActionPhoton::collision_branch_created_
bool collision_branch_created_
Was the collision branch already created?
Definition: scatteractionphoton.h:191
smash::ScatterActionPhoton::add_dummy_hadronic_process
void add_dummy_hadronic_process(double reaction_cross_section)
Adds one hadronic process with a given cross-section.
Definition: scatteractionphoton.cc:289
smash::ScatterActionPhoton::default_mediator_
static constexpr MediatorType default_mediator_
Value used for default exchange particle. See MediatorType.
Definition: scatteractionphoton.h:220