|
MARLEY (Model of Argon Reaction Low Energy Yields) v2.0.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
|
A neutrino-nucleus reaction. More...
#include <NuclearReaction.hh>
Public Member Functions | |
| NuclearReaction (ProcessType pt, int pdg_a, int pdg_b, int pdg_c, int pdg_d, int q_d, const std::string &source_file) | |
| virtual marley::TargetAtom | atomic_target () const override final |
| Returns the target atom involved in this reaction. | |
| double | max_level_energy (double KEa) const |
| Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically allowed. | |
| double | threshold_kinetic_energy () const override |
| Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed via a transition to the residue's ground state. | |
| double | weak_nuclear_charge () const |
Public Member Functions inherited from marley::Reaction | |
| Reaction (const std::string &source_file) | |
| Construct a Reaction with the resolved path of the data file. | |
| virtual std::shared_ptr< HepMC3::GenEvent > | create_event (int pdg_a, double KEa, marley::Generator &gen) const =0 |
| Create an event object for this reaction. | |
| const std::string & | get_description () const |
| Get a string that contains the formula for this reaction. | |
| int | pdg_a () const |
| Get the projectile PDG code. | |
| int | pdg_b () const |
| Get the target PDG code. | |
| ProcessType | process_type () const |
| Get the process type for this reaction. | |
| const std::string & | source_file () const |
| Get the resolved path of the reaction data file used to construct this Reaction. | |
| virtual double | total_xs (int pdg_a, double KEa) const =0 |
| Compute the reaction's total cross section (MeV -2) | |
Protected Member Functions | |
| virtual std::shared_ptr< HepMC3::GenEvent > | make_nuclear_event_object (double KEa, const std::shared_ptr< HepMC3::GenParticle > &ejectile, const std::shared_ptr< HepMC3::GenParticle > &residue, double E_level, int twoJ, const marley::Parity &P) const |
| Helper function that makes a complete event object for a nuclear reaction. | |
| virtual std::shared_ptr< HepMC3::GenEvent > | make_nuclear_event_object (double KEa, double pc_cm, double cos_theta_c_cm, double phi_c_cm, double Ec_cm, double Ed_cm, double E_level, int twoJ, const marley::Parity &P) const |
| Helper function that makes a complete event object for a nuclear reaction. | |
| void | set_charge_attributes (std::shared_ptr< HepMC3::GenEvent > &event) const |
| Helper function that sets the charges of the target and residue in an otherwise complete event record. | |
| virtual void | set_description () |
| Creates the description string based on the PDG code values for the initial and final particles. | |
| void | set_nuclear_residue_attributes (const std::shared_ptr< HepMC3::GenParticle > &residue, double E_level, int twoJ, const marley::Parity &P) const |
| Helper function that adds the nuclear level attributes ( \( E_x \), \( 2J \), and parity) needed to keep track of the residue's de-excitation state to an otherwise complete event record. | |
Protected Member Functions inherited from marley::Reaction | |
| virtual std::shared_ptr< HepMC3::GenEvent > | make_event_object (double KEa, const std::shared_ptr< HepMC3::GenParticle > &ejectile, const std::shared_ptr< HepMC3::GenParticle > &residue) const |
| Helper function that makes an event object. | |
| virtual std::shared_ptr< HepMC3::GenEvent > | make_event_object (double KEa, double pc_cm, double cos_theta_c_cm, double phi_c_cm, double Ec_cm, double Ed_cm, int residue_status) const |
| Helper function that makes an event object. | |
| void | two_two_scatter (double KEa, double &s, double &Ec_cm, double &pc_cm, double &Ed_cm) const |
| Helper function that handles CM frame kinematics for the reaction. | |
Protected Attributes | |
| int | Af_ |
| Residue mass number. | |
| int | Ai_ |
| Target mass number. | |
| double | KEa_threshold_ |
| Lab-frame kinetic energy of the projectile at threshold for this reaction (i.e., the residue is produced in its ground state, and all final-state particles are at rest in the CM frame) | |
| double | md_gs_ |
| Ground state mass (MeV) of the residue. | |
| int | q_d_ |
| Net charge of the residue (in units of the proton charge) following this reaction. | |
| int | Zf_ |
| Residue atomic number. | |
| int | Zi_ |
| Target atomic number. | |
Protected Attributes inherited from marley::Reaction | |
| std::string | description_ |
| String that contains a formula describing the reaction. | |
| double | ma_ |
| Projectile mass (MeV) | |
| double | mb_ |
| Target mass (MeV) | |
| double | mc_ |
| Ejectile mass (MeV) | |
| double | md_ |
| Residue mass (MeV) | |
| int | pdg_a_ |
| PDG code for the projectile. | |
| int | pdg_b_ |
| PDG code for the target. | |
| int | pdg_c_ |
| PDG code for the ejectile. | |
| int | pdg_d_ |
| PDG code for the residue. | |
| ProcessType | process_type_ |
| Type of scattering process (CC, NC) represented by this reaction. | |
| const std::string | source_file_ |
| Resolved path of the reaction data file. | |
Additional Inherited Members | |
Public Types inherited from marley::Reaction | |
| enum | DataFormat { DiscreteStrengths = 0 , MultipoleResponses = 1 } |
| Enumerated type describing the file format for reaction data. More... | |
| enum | ProcessType { Unknown = -1 , NeutrinoCC_Discrete = 0 , AntiNeutrinoCC_Discrete = 1 , NC_Discrete = 2 , NuElectronElastic = 3 , NeutrinoCC_Continuum = 4 , AntiNeutrinoCC_Continuum = 5 , NC_Continuum = 6 , StandaloneDecay = 7 } |
| Enumerated type describing the kind of scattering process represented by a Reaction. More... | |
Static Public Member Functions inherited from marley::Reaction | |
| static int | get_ejectile_pdg (int pdg_a, ProcessType proc_type) |
| static void | get_residue_pdg_and_charge (ProcessType proc_type, int pdg_b, int &pdg_d, int &q_d) |
| static std::vector< std::unique_ptr< Reaction > > | load_from_file (const std::string &filename, StructureDatabase &db, CoulombCorrector::CoulombMode coulomb_mode, const JSON &ff_config) |
| static std::string | proc_type_to_string (const ProcessType &pt) |
Static Protected Member Functions inherited from marley::Reaction | |
| static const std::vector< int > & | get_projectiles (ProcessType proc_type) |
A neutrino-nucleus reaction.
Definition at line 40 of file NuclearReaction.hh.
| marley::NuclearReaction::NuclearReaction | ( | ProcessType | pt, |
| int | pdg_a, | ||
| int | pdg_b, | ||
| int | pdg_c, | ||
| int | pdg_d, | ||
| int | q_d, | ||
| const std::string & | source_file ) |
| pt | Type of scattering process represented by this Reaction |
| pdg_a | Projectile PDG code |
| pdg_b | Target PDG code |
| pdg_c | Ejectile PDG code |
| pdg_d | Residue PDG code |
| q_d | Charge of the residue after the prompt 2->2 scatter represented by this NuclearReaction object |
Definition at line 35 of file NuclearReaction.cc.
References marley::Reaction::Reaction(), Af_, Ai_, marley::MassTable::get_atomic_mass(), marley::MassTable::get_particle_mass(), marley::MassTable::Instance(), KEa_threshold_, marley::Reaction::ma_, marley::Reaction::mb_, marley::Reaction::mc_, md_gs_, marley::Reaction::pdg_a(), marley::Reaction::pdg_a_, marley::Reaction::pdg_b(), marley::Reaction::pdg_b_, marley::Reaction::pdg_c_, marley::Reaction::pdg_d_, marley::Reaction::process_type_, q_d_, set_description(), marley::Reaction::source_file(), Zf_, and Zi_.
Referenced by marley::DiscreteNuclearReaction::DiscreteNuclearReaction().
|
inlinefinaloverridevirtual |
Returns the target atom involved in this reaction.
For nuclear reactions, this is identical to the pdg_b_ member variable. For electron reactions, it is distinct (since particle b is the initial struck electron).
Implements marley::Reaction.
Definition at line 54 of file NuclearReaction.hh.
References marley::Reaction::pdg_b_.
|
protectedvirtual |
Helper function that makes a complete event object for a nuclear reaction.
This function expects pre-made HepMC3::GenParticle objects as input that have four-momenta expressed in the lab frame.
| KEa | Lab-frame kinetic energy (MeV) of the projectile |
| ejectile | GenParticle object for the ejectile |
| residue | GenParticle object for the residue |
| E_level | Residue excitation energy (MeV) |
| twoJ | Two times the residue spin |
| P | Intrinsic parity of the residue |
Definition at line 176 of file NuclearReaction.cc.
References marley::Reaction::make_event_object(), set_charge_attributes(), and set_nuclear_residue_attributes().
|
protectedvirtual |
Helper function that makes a complete event object for a nuclear reaction.
This function should be called by marley::NuclearReaction::create_event() after CM frame scattering angles have been sampled for the ejectile. In addition to creating the event skeleton (by delegating to marley::Reaction::make_event_object()), it attaches the charge and nuclear level attributes needed to keep track of the residue's de-excitation state.
| KEa | Lab-frame kinetic energy (MeV) of the projectile |
| pc_cm | Ejectile 3-momentum magnitude (MeV) in the CM frame |
| cos_theta_c_cm | Cosine of ejectile's CM frame polar angle |
| phi_c_cm | Ejectile's CM frame azimuthal angle (radians) |
| Ec_cm | Ejectile total energy (MeV) in the CM frame |
| Ed_cm | Residue total energy (MeV) in the CM frame |
| E_level | Residue excitation energy (MeV) |
| twoJ | Two times the residue spin |
| P | Intrinsic parity of the residue |
Definition at line 152 of file NuclearReaction.cc.
References marley::Reaction::make_event_object(), set_charge_attributes(), and set_nuclear_residue_attributes().
Referenced by marley::ContinuumNuclearReaction::create_event(), and marley::DiscreteNuclearReaction::create_event().
| double marley::NuclearReaction::max_level_energy | ( | double | KEa | ) | const |
Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically allowed.
| KEa | Projectile lab-frame kinetic energy (MeV) |
Definition at line 90 of file NuclearReaction.cc.
References marley::Reaction::ma_, marley::Reaction::mb_, marley::Reaction::mc_, and md_gs_.
Referenced by marley::DiscreteNuclearReaction::create_event(), marley::DiscreteNuclearReaction::diff_xs(), and marley::DiscreteNuclearReaction::summed_xs_helper().
|
protected |
Helper function that sets the charges of the target and residue in an otherwise complete event record.
Definition at line 126 of file NuclearReaction.cc.
References q_d_.
Referenced by make_nuclear_event_object(), and make_nuclear_event_object().
|
protectedvirtual |
Creates the description string based on the PDG code values for the initial and final particles.
Reimplemented in marley::ContinuumNuclearReaction, and marley::DiscreteNuclearReaction.
Definition at line 117 of file NuclearReaction.cc.
References Af_, Ai_, marley::Reaction::description_, marley::Reaction::pdg_a_, marley::Reaction::pdg_c_, Zf_, and Zi_.
Referenced by NuclearReaction(), marley::ContinuumNuclearReaction::set_description(), and marley::DiscreteNuclearReaction::set_description().
|
protected |
Helper function that adds the nuclear level attributes ( \( E_x \), \( 2J \), and parity) needed to keep track of the residue's de-excitation state to an otherwise complete event record.
| residue | GenParticle object for the residue |
| E_level | Residue excitation energy (MeV) |
| twoJ | Two times the residue spin |
| P | Intrinsic parity of the residue |
Definition at line 138 of file NuclearReaction.cc.
References HepMC3::GenParticle::add_attribute().
Referenced by make_nuclear_event_object(), and make_nuclear_event_object().
|
overridevirtual |
Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed via a transition to the residue's ground state.
Implements marley::Reaction.
Definition at line 102 of file NuclearReaction.cc.
References KEa_threshold_.
| double marley::NuclearReaction::weak_nuclear_charge | ( | ) | const |
Computes the weak nuclear charge \( Q_W = N - (1 - 4\sin^2\theta_W)Z \) for the target nucleus
In the expression above, \( N \) ( \(Z\)) is the neutron (proton) number of the target nucleus and \( \theta_W \) is the weak mixing angle.
Definition at line 109 of file NuclearReaction.cc.
Referenced by marley::DiscreteNuclearReaction::diff_xs().
|
protected |
Residue mass number.
Definition at line 139 of file NuclearReaction.hh.
Referenced by NuclearReaction(), and set_description().
|
protected |
Target mass number.
Definition at line 137 of file NuclearReaction.hh.
Referenced by NuclearReaction(), set_description(), and weak_nuclear_charge().
|
protected |
Lab-frame kinetic energy of the projectile at threshold for this reaction (i.e., the residue is produced in its ground state, and all final-state particles are at rest in the CM frame)
Definition at line 148 of file NuclearReaction.hh.
Referenced by NuclearReaction(), marley::ContinuumNuclearReaction::create_event(), marley::DiscreteNuclearReaction::create_event(), and threshold_kinetic_energy().
|
protected |
Ground state mass (MeV) of the residue.
Definition at line 134 of file NuclearReaction.hh.
Referenced by NuclearReaction(), marley::ContinuumNuclearReaction::create_event(), marley::DiscreteNuclearReaction::create_event(), marley::DiscreteNuclearReaction::diff_xs(), marley::ContinuumNuclearReaction::get_Ec_from_Ex(), max_level_energy(), and marley::ContinuumNuclearReaction::reassign_sub_continuum().
|
protected |
Net charge of the residue (in units of the proton charge) following this reaction.
Definition at line 143 of file NuclearReaction.hh.
Referenced by NuclearReaction(), and set_charge_attributes().
|
protected |
Residue atomic number.
Definition at line 138 of file NuclearReaction.hh.
Referenced by NuclearReaction(), and set_description().
|
protected |
Target atomic number.
Definition at line 136 of file NuclearReaction.hh.
Referenced by NuclearReaction(), set_description(), and weak_nuclear_charge().