10 #ifndef SRC_INCLUDE_SMASH_SCATTERACTIONPHOTON_H_ 
   11 #define SRC_INCLUDE_SMASH_SCATTERACTIONPHOTON_H_ 
   42                       const int n_frac_photons,
 
   43                       const double hadronic_cross_section_input);
 
  181                                         const ParticleList &in);
 
  302                                  const double E_photon);
 
A pointer-like interface to global references to ParticleType objects.
 
ScatterActionPhoton is a special action which takes two incoming particles and performs a perturbativ...
 
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...
 
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.
 
ScatterActionPhoton(const ParticleList &in, const double time, const int n_frac_photons, const double hadronic_cross_section_input)
Construct a ScatterActionPhoton object.
 
double cross_section_photons_
Total cross section of photonic process.
 
const int number_of_fractional_photons_
Number of photons created for each hadronic scattering, needed for correct weighting.
 
const double hadronic_cross_section_
Total hadronic cross section.
 
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...
 
ReactionType
Enum for encoding the photon process.
 
double total_cross_section_w_ff(const double E_photon)
Compute the total cross corrected for form factors.
 
const ReactionType reac_
Photonic process as determined from incoming particles.
 
double form_factor_omega(const double E_photon) const
Compute the form factor for a process with a omega as the lightest exchange particle.
 
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.
 
MediatorType
Compile-time switch for setting the handling of processes which can happen via different mediating pa...
 
void perform_photons(const OutputsList &outputs)
Create the photon final state and write to output.
 
CollisionBranchList collision_processes_photons_
Holds the photon branch.
 
double total_cross_section(MediatorType mediator=default_mediator_) const
Calculate the total cross section of the photon process.
 
void generate_final_state() override
Generate the final-state for the photon scatter process.
 
bool collision_branch_created_
Was the collision branch already created?
 
double rho_mass() const
Find the mass of the participating rho-particle.
 
double form_factor_pion(const double E_photon) const
Compute the form factor for a process with a pion as the lightest exchange particle.
 
static ParticleTypePtr outgoing_hadron_type(const ParticleList &in)
Return ParticleTypePtr of hadron in the out channel, given the incoming particles.
 
double weight_
Weight of the produced photon.
 
CollisionBranchList create_collision_branch()
Creates a CollisionBranchList containing the photon processes.
 
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 (...
 
static constexpr MediatorType default_mediator_
Value used for default exchange particle. See MediatorType.
 
double get_total_weight() const override
Return the weight of the last created photon.
 
const double hadron_out_mass_
Mass of outgoing hadron.
 
void add_dummy_hadronic_process(double reaction_cross_section)
Adds one hadronic process with a given cross-section.
 
static ReactionType photon_reaction_type(const ParticleList &in)
Determine photon process from incoming particles.
 
static bool is_photon_reaction(const ParticleList &in)
Check if particles can undergo an implemented photon process.
 
void add_single_process()
Add the photonic process.
 
static bool is_kinematically_possible(const double s_sqrt, const ParticleList &in)
Check if CM-energy is sufficient to produce hadron in final state.
 
double hadronic_cross_section() const
Return the total cross section of the underlying hadronic scattering.
 
const ParticleTypePtr hadron_out_t_
ParticleTypePtr to the type of the outgoing hadron.
 
double sample_out_hadron_mass(const ParticleTypePtr out_type)
Sample the mass of the outgoing hadron.
 
ScatterAction is a special action which takes two incoming particles and performs a scattering,...