#include <scatteractionmulti.h>
ScatterActionMulti is a special action which takes any number of incoming particles and performs a scattering with the use of the stochastic criterion, producing one or more final-state particles.
Definition at line 23 of file scatteractionmulti.h.
Classes | |
class | InvalidScatterActionMulti |
Public Member Functions | |
ScatterActionMulti (const ParticleList &in_plist, double time) | |
Construct a ScatterActionMulti object. More... | |
void | generate_final_state () override |
Generate the final-state of the multi-particle scattering process. More... | |
double | get_total_weight () const override |
Get the total probability for the reaction (scaled with the cross section scaling factors of the incoming particles). More... | |
double | get_partial_weight () const override |
Get the partial probability for the chosen channel (scaled with the cross section scaling factors of the incoming particles). More... | |
void | add_possible_reactions (double dt, const double gcell_vol, const MultiParticleReactionsBitSet incl_multi) |
Add all possible multi-particle reactions for the given incoming particles. More... | |
const CollisionBranchList & | reaction_channels () |
Get list of possible reaction channels. More... | |
![]() | |
Action (const ParticleList &in_part, double time) | |
Construct an action object with incoming particles and relative time. More... | |
Action (const ParticleData &in_part, const ParticleData &out_part, double time, ProcessType type) | |
Construct an action object with the incoming particles, relative time, and the already known outgoing particles and type of the process. More... | |
Action (const ParticleList &in_part, const ParticleList &out_part, double absolute_execution_time, ProcessType type) | |
Construct an action object with the incoming particles, absolute time, and the already known outgoing particles and type of the process. More... | |
Action (const Action &)=delete | |
Copying is disabled. Use pointers or create a new Action. More... | |
virtual | ~Action () |
Virtual Destructor. More... | |
bool | operator< (const Action &rhs) const |
Determine whether one action takes place before another in time. More... | |
virtual ProcessType | get_type () const |
Get the process type. More... | |
template<typename Branch > | |
void | add_process (ProcessBranchPtr< Branch > &p, ProcessBranchList< Branch > &subprocesses, double &total_weight) |
Add a new subprocess. More... | |
template<typename Branch > | |
void | add_processes (ProcessBranchList< Branch > pv, ProcessBranchList< Branch > &subprocesses, double &total_weight) |
Add several new subprocesses at once. More... | |
virtual void | perform (Particles *particles, uint32_t id_process) |
Actually perform the action, e.g. More... | |
bool | is_valid (const Particles &particles) const |
Check whether the action still applies. More... | |
bool | is_pauli_blocked (const Particles &particles, const PauliBlocker &p_bl) const |
Check if the action is Pauli-blocked. More... | |
const ParticleList & | incoming_particles () const |
Get the list of particles that go into the action. More... | |
void | update_incoming (const Particles &particles) |
Update the incoming particles that are stored in this action to the state they have in the global particle list. More... | |
const ParticleList & | outgoing_particles () const |
Get the list of particles that resulted from the action. More... | |
double | time_of_execution () const |
Get the time at which the action is supposed to be performed. More... | |
virtual void | check_conservation (const uint32_t id_process) const |
Check various conservation laws. More... | |
double | sqrt_s () const |
Determine the total energy in the center-of-mass frame [GeV]. More... | |
FourVector | total_momentum_of_outgoing_particles () const |
Calculate the total kinetic momentum of the outgoing particles. More... | |
FourVector | get_interaction_point () const |
Get the interaction point. More... | |
std::pair< FourVector, FourVector > | get_potential_at_interaction_point () const |
Get the skyrme and asymmetry potential at the interaction point. More... | |
void | set_stochastic_pos_idx () |
Setter function that stores a random incoming particle index latter used to determine the interaction point. More... | |
Protected Member Functions | |
void | format_debug_output (std::ostream &out) const override |
![]() | |
FourVector | total_momentum () const |
Sum of 4-momenta of incoming particles. More... | |
template<typename Branch > | |
const Branch * | choose_channel (const ProcessBranchList< Branch > &subprocesses, double total_weight) |
Decide for a particular final-state channel via Monte-Carlo and return it as a ProcessBranch. More... | |
virtual std::pair< double, double > | sample_masses (double kinetic_energy_cm) const |
Sample final-state masses in general X->2 processes (thus also fixing the absolute c.o.m. More... | |
virtual void | sample_angles (std::pair< double, double > masses, double kinetic_energy_cm) |
Sample final-state momenta in general X->2 processes (here: using an isotropical angular distribution). More... | |
void | sample_2body_phasespace () |
Sample the full 2-body phase-space (masses, momenta, angles) in the center-of-mass frame for the final state particles. More... | |
virtual void | sample_3body_phasespace () |
Sample the full 3-body phase-space (masses, momenta, angles) in the center-of-mass frame for the final state particles. More... | |
void | assign_formation_time_to_outgoing_particles () |
Assign the formation time to the outgoing particles. More... | |
Private Member Functions | |
void | add_reaction (CollisionBranchPtr p) |
Add a new reaction channel. More... | |
void | add_reactions (CollisionBranchList pv) |
Add several new reaction channels at once. More... | |
void | annihilation () |
Perform a n->1 annihilation process. More... | |
void | three_to_two () |
Perform a 3->2 process. More... | |
double | probability_three_to_one (const ParticleType &type_out, double dt, const double gcell_vol, const int degen_factor=1) const |
Calculate the probability for a 3m-to-1 reaction according to the stochastic collision criterion (e.g. More... | |
double | probability_three_to_two (const ParticleType &type_out1, const ParticleType &type_out2, double dt, const double gcell_vol, const double degen_factor=1.0) const |
Calculate the probability for a 3-to-2 reaction according to the stochastic collision criterion (similar to Cassing:2001ds [14]). More... | |
double | calculate_I3 (const double sqrts) const |
Calculate the integration necessary for the three-body phase space. More... | |
double | react_degen_factor (const int spin_factor_inc, const int spin_degen_out1, const int spin_degen_out2) const |
Determine the spin degeneracy factor ( \(D_{spin}\)) for the 3->2 reaction. More... | |
bool | three_different_pions (const ParticleData &data_a, const ParticleData &data_b, const ParticleData &data_c) const |
Check wether the three incoming particles are π⁺,π⁻,π⁰ in any order. More... | |
bool | two_pions_eta (const ParticleData &data_a, const ParticleData &data_b, const ParticleData &data_c) const |
Check wether the three incoming particles are π⁺,π⁻,η or π⁰,π⁰,η in any order. More... | |
Private Attributes | |
double | total_probability_ |
Total probability of reaction. More... | |
double | partial_probability_ |
Partial probability of the chosen outgoing channel. More... | |
CollisionBranchList | reaction_channels_ |
List of possible collisions. More... | |
Additional Inherited Members | |
![]() | |
static double | lambda_tilde (double a, double b, double c) |
Little helper function that calculates the lambda function (sometimes written with a tilde to better distinguish it) that appears e.g. More... | |
![]() | |
ParticleList | incoming_particles_ |
List with data of incoming particles. More... | |
ParticleList | outgoing_particles_ |
Initially this stores only the PDG codes of final-state particles. More... | |
const double | time_of_execution_ |
Time at which the action is supposed to be performed (absolute time in the lab frame in fm/c). More... | |
ProcessType | process_type_ |
type of process More... | |
double | box_length_ = -1.0 |
Box length: needed to determine coordinates of collision correctly in case of collision through the wall. More... | |
int | stochastic_position_idx_ = -1 |
This stores a randomly-chosen index to an incoming particle. More... | |
smash::ScatterActionMulti::ScatterActionMulti | ( | const ParticleList & | in_plist, |
double | time | ||
) |
Construct a ScatterActionMulti object.
[in] | in_plist | List of reaction partners |
[in] | time | Time at which the action is supposed to take place |
Definition at line 19 of file scatteractionmulti.cc.
|
overridevirtual |
Generate the final-state of the multi-particle scattering process.
Assign position and momenta to outgoing particles.
InvalidScatterActionMulti |
Implements smash::Action.
Definition at line 242 of file scatteractionmulti.cc.
|
overridevirtual |
Get the total probability for the reaction (scaled with the cross section scaling factors of the incoming particles).
Implements smash::Action.
Definition at line 32 of file scatteractionmulti.cc.
|
overridevirtual |
Get the partial probability for the chosen channel (scaled with the cross section scaling factors of the incoming particles).
Implements smash::Action.
Definition at line 40 of file scatteractionmulti.cc.
void smash::ScatterActionMulti::add_possible_reactions | ( | double | dt, |
const double | gcell_vol, | ||
const MultiParticleReactionsBitSet | incl_multi | ||
) |
Add all possible multi-particle reactions for the given incoming particles.
[in] | dt | timestep size |
[in] | gcell_vol | gcell_vol grid cell volume |
[in] | incl_multi | Which multi-particle reactions are enabled? |
Definition at line 48 of file scatteractionmulti.cc.
|
inline |
Get list of possible reaction channels.
Definition at line 72 of file scatteractionmulti.h.
|
overrideprotectedvirtual |
Writes information about this action to the out
stream.
[out] | out | out stream to be written to |
Implements smash::Action.
Definition at line 413 of file scatteractionmulti.cc.
|
private |
Add a new reaction channel.
[in] | p | Channel to be added. |
Definition at line 23 of file scatteractionmulti.cc.
|
private |
Add several new reaction channels at once.
[in] | pv | list of channels to be added. |
Definition at line 27 of file scatteractionmulti.cc.
|
private |
Perform a n->1 annihilation process.
InvalidScatterActionMulti |
Definition at line 355 of file scatteractionmulti.cc.
|
private |
Perform a 3->2 process.
Definition at line 373 of file scatteractionmulti.cc.
|
private |
Calculate the probability for a 3m-to-1 reaction according to the stochastic collision criterion (e.g.
The formula for the probablilty is not taken from a reference, but derived following the same idea as specified e.g. in the paper above.
\[ P_{3\rightarrow 1} = \frac{\Delta t}{(\Delta^3x)^2} \frac{\pi}{4E_1E_2E_3}\frac{\Gamma_{1\rightarrow3}}{\Phi_3} \mathcal{A}(\sqrt{s}),\]
where \(\Phi_3\) represents the 3-body phase space:
\[\Phi_3 = \frac{1}{(2\pi)^3)}\frac{1}{16M^2}I_3.\]
The defintion for the integral \(I_3\) is given in the documentation of calculate_I3(). Degeneracy and symmetry factors are neglected in the formula, since they are treated as input for the function.
[in] | type_out | type of outgoing particle |
[in] | dt | timestep size |
[in] | gcell_vol | grid cell volume |
[in] | degen_factor | degeneracy factor for reaction (including symmetry factors) |
Definition at line 309 of file scatteractionmulti.cc.
|
private |
Calculate the probability for a 3-to-2 reaction according to the stochastic collision criterion (similar to Cassing:2001ds [14]).
\[ P_{3 \rightarrow 2} = \frac{1}{4E_1E_2E_3} \frac{\Delta t}{\Delta^3 x} \frac{\tilde{\lambda}}{\Phi_38\pi s}\sigma_{2 \rightarrow 3},\]
where \(\Phi_3\) represents the 3-body phase space:
\[\Phi_3 = \frac{1}{(2\pi)^3)}\frac{1}{16M^2}I_3.\]
The defintion for the integral \(I_3\) is given in the documentation of calculate_I3(). Degeneracy and symmetry factors are neglected in the formula, since they are treated as input for the function.
[in] | type_out1 | type of outgoing particle 1 |
[in] | type_out2 | type of outgoing particle 1 |
[in] | dt | timestep size |
[in] | gcell_vol | grid cell volume |
[in] | degen_factor | degeneracy factor for reaction (including symmetry factors) |
Definition at line 332 of file scatteractionmulti.cc.
|
private |
Calculate the integration necessary for the three-body phase space.
The defintion for the integral is given by
\[I_3 = \int dm^2_{23}dm^2_{12} = \int^{(M-m_3)^2}_{(m_1+m_2)^2}[m^2_{23, max}- m^2_{23, min}]dm^2_{12}\]
see PDG book (chapter Kinematics) for defintions of variables. The numbered masses reference the incoming particles and \(M\) the mass of the outgoing particles in this case, since we are looking at the backreaction to the 1-to-3 decay.
[in] | sqrts | center of mass energy of incoming particles (= mass of outgoing particle) |
Definition at line 282 of file scatteractionmulti.cc.
|
inlineprivate |
Determine the spin degeneracy factor ( \(D_{spin}\)) for the 3->2 reaction.
\[D_{spin} = \frac{(2J_{out1}+1)(2J_{out2}+1)} {(2J_{in1}+1)(2J_{in2}+1)(2J_{in3}+1)}\]
[in] | spin_factor_inc | product of incoming spin degeneracy (denominator in above expression) |
[in] | spin_degen_out1 | degeneracy factor of outgoing particle 1 |
[in] | spin_degen_out2 | degeneracy factor of outgoing particle 2 |
Definition at line 200 of file scatteractionmulti.h.
|
private |
Check wether the three incoming particles are π⁺,π⁻,π⁰ in any order.
Wrapper for unwieldy if statment.
[in] | data_a | data for first incoming particle |
[in] | data_b | data for second incoming particle |
[in] | data_c | data for third incoming particle |
Definition at line 381 of file scatteractionmulti.cc.
|
private |
Check wether the three incoming particles are π⁺,π⁻,η or π⁰,π⁰,η in any order.
Wrapper for unwieldy if statment.
[in] | data_a | data for first incoming particle |
[in] | data_b | data for second incoming particle |
[in] | data_c | data for third incoming particle |
Definition at line 393 of file scatteractionmulti.cc.
|
private |
Total probability of reaction.
Definition at line 233 of file scatteractionmulti.h.
|
private |
Partial probability of the chosen outgoing channel.
Definition at line 236 of file scatteractionmulti.h.
|
private |
List of possible collisions.
Definition at line 239 of file scatteractionmulti.h.