#include <bremsstrahlungactiondilepton.h>
Similar to the photon treatment, BremsstrahlungActionDilepton is a special action which takes two incoming particles and performs a perturbative scattering where a Bremsstrahlung photon is produced.
The final state particles are not further propagated, only written to the dilepton output.
Implements dilepton production via the process pn -> pn e⁺e⁻ using the phase-space corrected soft-photon approximation (SPA) as e.g. outlined in Weil:2013mya [72] (see eq. (40)–(43) in the reference document).
The pion electromagnetic form factor (PEFF) from Shyam:2010vr [58] is optionally applied, modifying the differential cross section by \(|F_\pi(M^2)|^2\). The form factor accounts for the internal charged pion propagator.
Kinematic variables sampled for the dilepton pair are:
The dilepton 4-momentum is constructed directly from (m_inv, q, \(\cos\theta\), \(\phi\)) to enable event-by-event acceptance cuts. The e⁺e⁻ pair is subsequently produced isotropically in the virtual photon's rest frame.
Definition at line 50 of file bremsstrahlungactiondilepton.h.
Public Types | |
| enum class | ReactionType { no_reaction , np } |
| Enum for encoding bremsstrahlung process for n+p only. More... | |
Public Member Functions | |
| BremsstrahlungActionDilepton (const ParticleList &in, double time, double hadronic_cross_section_input, DileptonBremsPionFormFactor ff_type) | |
| Construct a BremsstrahlungActionDilepton object. More... | |
| void | add_dummy_hadronic_process (double reaction_cross_section) |
| Adds the hadronic process with a given cross section. More... | |
| void | perform_dilepton_bremsstrahlung (const OutputsList &outputs) |
| Create the final state and write to output. More... | |
| void | generate_final_state () override |
| Main function: sample kinematics and compute weight for one dilepton event. More... | |
| double | get_total_weight () const override |
| Return the weight of the dilepton pair. More... | |
| double | get_partial_weight () const override |
| Return the partial weight of zero as otherwise garbage is written to output. More... | |
Public Member Functions inherited from smash::ScatterAction | |
| ScatterAction (const ParticleData &in_part1, const ParticleData &in_part2, double time, bool isotropic=false, double string_formation_time=1.0, double box_length=-1.0, bool is_total_parametrized=false, const SpinInteractionType spin_interaction_type=SpinInteractionType::Off) | |
| Construct a ScatterAction object. More... | |
| void | add_collision (CollisionBranchPtr p) |
| Add a new collision channel. More... | |
| void | add_collisions (CollisionBranchList pv) |
| Add several new collision channels at once. More... | |
| double | transverse_distance_sqr () const |
| Calculate the transverse distance of the two incoming particles in their local rest frame. More... | |
| double | cov_transverse_distance_sqr () const |
| Calculate the transverse distance of the two incoming particles in their local rest frame written in a covariant form. More... | |
| double | mandelstam_s () const |
| Determine the Mandelstam s variable,. More... | |
| double | relative_velocity () const |
| Get the relative velocity of the two incoming particles. More... | |
| void | generate_final_state () override |
| Generate the final-state of the scattering process. More... | |
| double | get_total_weight () const override |
| Get the total cross section of scattering particles. More... | |
| double | get_partial_weight () const override |
| Get the partial cross section of the chosen channel. More... | |
| void | sample_angles (std::pair< double, double > masses, double kinetic_energy_cm) override |
| Sample final-state angles in a 2->2 collision (possibly anisotropic). More... | |
| void | add_all_scatterings (const ScatterActionsFinderParameters &finder_parameters) |
| Add all possible scattering subprocesses for this action object. More... | |
| void | set_parametrized_total_cross_section (const ScatterActionsFinderParameters &finder_parameters) |
| Given the incoming particles, assigns the correct parametrization of the total cross section. More... | |
| const CollisionBranchList & | collision_channels () |
| Get list of possible collision channels. More... | |
| void | set_string_interface (StringProcess *str_proc) |
| Set the StringProcess object to be used. More... | |
| virtual double | cross_section () const |
| Get the total cross section of the scattering particles, either from a parametrization, or from the sum of partials. More... | |
Public Member Functions inherited from smash::Action | |
| 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 double | 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 std::vector< Particles > &ensembles, 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 double | 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... | |
| void | assign_unpolarized_spin_vector_to_outgoing_particles () |
| Assign an unpolarized spin vector to all outgoing particles. More... | |
Static Public Member Functions | |
| static bool | is_dilepton_brems_reaction (const ParticleList &in) |
| Check if particles can undergo an implemented dilepton bremsstrahlung process. More... | |
Static Public Member Functions inherited from smash::Action | |
| 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... | |
Private Member Functions | |
| bool | sample_2body_isotropic_ (const FourVector &p_parent, ParticleData &child_1, ParticleData &child_2) |
| Generates momenta of outgoing particles (for 2-body isotropic decays only). More... | |
| double | diff_xs_pn_dilepton_ (double m_inv, double q, double sqrts) const |
| Fully differential cross section \(\frac{d\sigma}{dM dq d\Omega}\) for \( pn \rightarrow pne^+ e^- \). More... | |
| double | pion_em_form_factor_sq_ (double m_inv) const |
| Returns \(|F_\pi(m_{inv}^2)|^2\), the squared pion electromagnetic form factor. More... | |
Static Private Member Functions | |
| static ReactionType | dilepton_brems_reaction_type_ (const ParticleList &in) |
| Determine dilepton bremsstrahlung process from incoming particle list. More... | |
Private Attributes | |
| CollisionBranchList | collision_processes_dilepton_bremsstrahlung_ |
| Holds the bremsstrahlung branch. More... | |
| const ReactionType | reaction_type_ |
| Reaction process as determined from incoming particles. More... | |
| double | weight_ = 0.0 |
| Weight of the dilepton event. More... | |
| double | cross_section_dilepton_bremsstrahlung_ = 0.0 |
| Total cross section of dilepton bremsstrahlung process [mb]. More... | |
| const double | hadronic_cross_section_ |
| Total hadronic cross section. More... | |
| const DileptonBremsPionFormFactor | form_factor_type_ |
| Form factor type: Off, FF1, FF2. More... | |
| double | q_ |
| Sampled 3-momentum of dilepton pair in pn-CM frame. More... | |
| double | m_inv_ |
| Sampled invariant mass of the dilepton pair. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from smash::ScatterAction | |
| double | cm_momentum () const |
| Get the momentum of the center of mass of the incoming particles in the calculation frame. More... | |
| double | cm_momentum_squared () const |
| Get the squared momentum of the center of mass of the incoming particles in the calculation frame. More... | |
| ThreeVector | beta_cm () const |
| Get the velocity of the center of mass of the scattering/incoming particles in the calculation frame. More... | |
| double | gamma_cm () const |
| Get the gamma factor corresponding to a boost to the center of mass frame of the colliding particles. More... | |
| void | elastic_scattering () |
| Perform an elastic two-body scattering, i.e. just exchange momentum. More... | |
| void | inelastic_scattering () |
| Perform an inelastic two-body scattering, i.e. new particles are formed. More... | |
| void | two_to_many_scattering () |
| Perform an inelastic two-to-many-body scattering (more than 2) More... | |
| void | create_string_final_state () |
| Creates the final states for string-processes after they are performed. More... | |
| void | string_excitation () |
| Todo(ryu): document better - it is not really UrQMD-based, isn't it? Perform the UrQMD-based string excitation and decay. More... | |
| void | spin_interaction () |
| Perform spin interaction in binary interactions. More... | |
| void | string_spin_interaction () |
| Perform spin interaction in string excitations. More... | |
| void | format_debug_output (std::ostream &out) const override |
Writes information about this scatter action to the out stream. More... | |
Protected Member Functions inherited from smash::Action | |
| 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_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_manybody_phasespace () |
| Sample the full n-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... | |
Protected Attributes inherited from smash::ScatterAction | |
| CollisionBranchList | collision_channels_ |
| List of possible collisions. More... | |
| double | sum_of_partial_cross_sections_ |
| Current sum of partial hadronic cross sections. More... | |
| double | partial_cross_section_ |
| Partial cross-section to the chosen outgoing channel. More... | |
| bool | isotropic_ = false |
| Do this collision isotropically? More... | |
| double | string_formation_time_ = 1.0 |
| Time fragments take to be fully formed in hard string excitation. More... | |
Protected Attributes inherited from smash::Action | |
| 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). 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... | |
Enum for encoding bremsstrahlung process for n+p only.
It is uniquely determined by the incoming particles.
| Enumerator | |
|---|---|
| no_reaction | |
| np | |
Definition at line 56 of file bremsstrahlungactiondilepton.h.
| smash::BremsstrahlungActionDilepton::BremsstrahlungActionDilepton | ( | const ParticleList & | in, |
| double | time, | ||
| double | hadronic_cross_section_input, | ||
| DileptonBremsPionFormFactor | ff_type | ||
| ) |
Construct a BremsstrahlungActionDilepton object.
| [in] | in | ParticleList of incoming particles (n+p only). |
| [in] | time | Time relative to underlying hadronic action. |
| [in] | hadronic_cross_section_input | Total np hadronic cross section. |
| [in] | ff_type | Which form factor parametrization to use. |
Definition at line 44 of file bremsstrahlungactiondilepton.cc.
|
inlinestatic |
Check if particles can undergo an implemented dilepton bremsstrahlung process.
This function does not check the involved kinematics.
| [in] | in | ParticleList of incoming particles. |
Definition at line 82 of file bremsstrahlungactiondilepton.h.
| void smash::BremsstrahlungActionDilepton::add_dummy_hadronic_process | ( | double | reaction_cross_section | ) |
Adds the hadronic process with a given cross section.
The intended use is to add the hadronic cross section from the already performed hadronic action without recomputing it.
| [in] | reaction_cross_section | Total cross section of underlying hadronic process [mb] |
Definition at line 73 of file bremsstrahlungactiondilepton.cc.
| void smash::BremsstrahlungActionDilepton::perform_dilepton_bremsstrahlung | ( | const OutputsList & | outputs | ) |
Create the final state and write to output.
| [in] | outputs | List of all outputs. Does not have to be a specific dilepton output, the function will take care of this. |
Definition at line 110 of file bremsstrahlungactiondilepton.cc.
|
overridevirtual |
Main function: sample kinematics and compute weight for one dilepton event.
Implements smash::Action.
Definition at line 123 of file bremsstrahlungactiondilepton.cc.
|
inlineoverridevirtual |
Return the weight of the dilepton pair.
Implements smash::Action.
Definition at line 116 of file bremsstrahlungactiondilepton.h.
|
inlineoverridevirtual |
Return the partial weight of zero as otherwise garbage is written to output.
Implements smash::Action.
Definition at line 124 of file bremsstrahlungactiondilepton.h.
|
staticprivate |
Determine dilepton bremsstrahlung process from incoming particle list.
If incoming particles are not part of any implemented dilepton bremsstrahlung process, i.e. currently only p+n (in any order), the function will return no_reaction.
| [in] | in | ParticleList of incoming particles. |
Definition at line 54 of file bremsstrahlungactiondilepton.cc.
|
private |
Generates momenta of outgoing particles (for 2-body isotropic decays only).
| [in] | p_parent | FourVector of incoming particle momentum. |
| [in] | child_1 | First child particle. |
| [in] | child_2 | Second child particle. |
Definition at line 215 of file bremsstrahlungactiondilepton.cc.
|
private |
Fully differential cross section \(\frac{d\sigma}{dM dq d\Omega}\) for \( pn \rightarrow pne^+ e^- \).
| [in] | m_inv | Invariant mass of dilepton pair |
| [in] | q | 3-momentum of dilepton in pn-CM frame |
| [in] | sqrts | CM energy \(\sqrt(s)\) |
Definition at line 240 of file bremsstrahlungactiondilepton.cc.
|
private |
Returns \(|F_\pi(m_{inv}^2)|^2\), the squared pion electromagnetic form factor.
| [in] | m_inv | Invariant mass of dilepton pair [GeV] |
Definition at line 268 of file bremsstrahlungactiondilepton.cc.
|
private |
Holds the bremsstrahlung branch.
As of now, this will hold only one branch.
Definition at line 180 of file bremsstrahlungactiondilepton.h.
|
private |
Reaction process as determined from incoming particles.
Definition at line 183 of file bremsstrahlungactiondilepton.h.
|
private |
Weight of the dilepton event.
Definition at line 186 of file bremsstrahlungactiondilepton.h.
|
private |
Total cross section of dilepton bremsstrahlung process [mb].
Definition at line 189 of file bremsstrahlungactiondilepton.h.
|
private |
Total hadronic cross section.
Definition at line 192 of file bremsstrahlungactiondilepton.h.
|
private |
Form factor type: Off, FF1, FF2.
Definition at line 195 of file bremsstrahlungactiondilepton.h.
|
private |
Sampled 3-momentum of dilepton pair in pn-CM frame.
Definition at line 198 of file bremsstrahlungactiondilepton.h.
|
private |
Sampled invariant mass of the dilepton pair.
Definition at line 201 of file bremsstrahlungactiondilepton.h.