|
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 whose cross section is calculated according to the allowed approximation. More...
#include <DiscreteNuclearReaction.hh>
Public Member Functions | |
| DiscreteNuclearReaction (ProcessType pt, int pdg_a, int pdg_b, int pdg_c, int pdg_d, int q_d, const std::shared_ptr< std::vector< marley::MatrixElement > > &mat_els, CoulombCorrector::CoulombMode mode, const JSON &ff_config, const std::string &source_file) | |
| virtual std::shared_ptr< HepMC3::GenEvent > | create_event (int particle_id_a, double KEa, marley::Generator &gen) const override |
| Create an event object for this reaction. | |
| double | diff_xs (const marley::MatrixElement &mat_el, double KEa, double cos_theta_c_cm, double &beta_c_cm, bool check_max_E_level) const |
| Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2) evaluated in the center-of-momentum frame for a transition to a particular final nuclear level. | |
| virtual double | diff_xs (int pdg_a, double KEa, double cos_theta_c_cm) const |
| Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2) summed over all kinematically-allowed final nuclear levels. | |
| const std::vector< marley::MatrixElement > & | matrix_elements () const |
| Allows access to the owned vector of MatrixElement objects. | |
| void | set_decay_scheme (marley::DecayScheme *scheme) |
| Sets the DecayScheme object to use for sampling excited levels in the residue. | |
| virtual double | total_xs (const marley::MatrixElement &me, double KEa, double &beta_c_cm, bool check_max_E_level=true) const |
| Total cross section (MeV -2) for a given final nuclear level. | |
| virtual double | total_xs (int pdg_a, double KEa) const override |
| Total reaction cross section (MeV -2) including all kinematically-allowed final nuclear levels. | |
| virtual double | total_xs (int pdg_a, double KEa, marley::MatrixElement::TransitionType mat_el_type) const |
| Total reaction cross section (MeV -2) including all kinematically-allowed nuclear transitions of a particular type. | |
Public Member Functions inherited from 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) | |
| 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. | |
| 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. | |
Protected Member Functions | |
| double | sample_cos_theta_c_cm (const marley::MatrixElement &matrix_el, double KEa, double beta_c_cm, marley::Generator &gen) const |
| Samples a polar angle cosine for the ejectile using the relevant portion of the reaction nuclear matrix element. | |
| virtual void | set_description () override |
| Creates the description string based on the PDG code values for the initial and final particles. | |
| double | summed_xs_helper (int pdg_a, double KEa, double cos_theta_c_cm, std::vector< double > *level_xsecs, bool differential) const |
Protected Member Functions inherited from marley::NuclearReaction | |
| 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. | |
| 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 | |
| bool | allowed_approx_ = false |
| Flag that indicates whether to include aditional terms beyond the q->0 limit. | |
| CoulombCorrector | coulomb_corrector_ |
| Object that handles calculations of Coulomb correction factors. | |
| std::shared_ptr< std::vector< marley::MatrixElement > > | matrix_elements_ |
| Matrix elements representing all of the possible nuclear transitions that may be caused by this reaction. | |
| std::shared_ptr< NuclearFormFactor > | nuclear_ff_ |
| Object that handles calculations of the nuclear form factor. | |
| NucleonFormFactors | nucleon_form_factors_ |
| Object that handles calculations of nucleon form factors. | |
| std::pair< std::vector< int >, std::vector< double > > | nucleon_radii_ |
| Pair of vectors containg the mean radius of the nucleon wavefunctions and the degeneracies for each nuclear level. | |
Protected Attributes inherited from marley::NuclearReaction | |
| 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 whose cross section is calculated according to the allowed approximation.
Definition at line 42 of file DiscreteNuclearReaction.hh.
| marley::DiscreteNuclearReaction::DiscreteNuclearReaction | ( | ProcessType | pt, |
| int | pdg_a, | ||
| int | pdg_b, | ||
| int | pdg_c, | ||
| int | pdg_d, | ||
| int | q_d, | ||
| const std::shared_ptr< std::vector< marley::MatrixElement > > & | mat_els, | ||
| CoulombCorrector::CoulombMode | mode, | ||
| const JSON & | ff_config, | ||
| 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 interaction represented by this DiscreteNuclearReaction object |
| mat_els | A vector of MatrixElement objects that should be used to compute cross sections for this DiscreteNuclearReaction |
| mode | Indicates the method to use when computing Coulomb corrections for the reaction cross section |
| ff_config | JSON object containing information needed to configure the nucleon and nuclear form factor models |
Definition at line 51 of file DiscreteNuclearReaction.cc.
References marley::NuclearReaction::NuclearReaction(), allowed_approx_, coulomb_corrector_, marley::NuclearFormFactor::create(), matrix_elements_, nuclear_ff_, nucleon_form_factors_, marley::Reaction::pdg_a(), marley::Reaction::pdg_b(), marley::Reaction::pdg_b_, and marley::Reaction::source_file().
|
overridevirtual |
Create an event object for this reaction.
| pdg_a | PDG code for the incident projectile |
| KEa | Lab-frame kinetic energy of the projectile |
| gen | Reference to the Generator to use for random sampling |
Implements marley::Reaction.
Definition at line 78 of file DiscreteNuclearReaction.cc.
References marley::Generator::get_structure_db(), marley::NuclearReaction::KEa_threshold_, marley::NuclearReaction::make_nuclear_event_object(), matrix_elements_, marley::NuclearReaction::max_level_energy(), marley::Reaction::md_, marley::NuclearReaction::md_gs_, marley::Level::parity(), marley::Reaction::pdg_a(), marley::Reaction::pdg_a_, marley::Reaction::pdg_b_, marley::Reaction::pdg_d_, sample_cos_theta_c_cm(), marley::Generator::sample_from_distribution(), summed_xs_helper(), marley::Reaction::two_two_scatter(), marley::Level::twoJ(), and marley::Generator::uniform_random_double().
| double marley::DiscreteNuclearReaction::diff_xs | ( | const marley::MatrixElement & | mat_el, |
| double | KEa, | ||
| double | cos_theta_c_cm, | ||
| double & | beta_c_cm, | ||
| bool | check_max_E_level ) const |
Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2) evaluated in the center-of-momentum frame for a transition to a particular final nuclear level.
| mat_el | MatrixElement object describing the transition to the final nuclear level |
| KEa | Lab-frame projectile kinetic energy (MeV) |
| cos_theta_c_cm | Ejectile scattering cosine as measured in the CM frame |
Definition at line 324 of file DiscreteNuclearReaction.cc.
References allowed_approx_, marley::Reaction::AntiNeutrinoCC_Discrete, coulomb_corrector_, marley::MatrixElement::level_energy(), marley::Reaction::ma_, marley::NuclearReaction::max_level_energy(), marley::Reaction::mb_, marley::Reaction::mc_, marley::NuclearReaction::md_gs_, marley::Reaction::NC_Discrete, marley::Reaction::NeutrinoCC_Discrete, nuclear_ff_, nucleon_form_factors_, marley::Reaction::pdg_a_, marley::Reaction::process_type_, marley::MatrixElement::strength(), marley::MatrixElement::type(), and marley::NuclearReaction::weak_nuclear_charge().
Referenced by sample_cos_theta_c_cm(), summed_xs_helper(), and total_xs().
|
virtual |
Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2) summed over all kinematically-allowed final nuclear levels.
| pdg_a | PDG code for the projectile |
| KEa | Lab-frame kinetic energy (MeV) of the projectile |
| cos_theta_c_cm | CM frame scattering cosine of the ejectile |
Definition at line 315 of file DiscreteNuclearReaction.cc.
References marley::Reaction::pdg_a(), and summed_xs_helper().
|
inline |
Allows access to the owned vector of MatrixElement objects.
Definition at line 130 of file DiscreteNuclearReaction.hh.
References matrix_elements_.
Referenced by marley::StrengthVariationWeightCalculator::create_instances().
|
protected |
Samples a polar angle cosine for the ejectile using the relevant portion of the reaction nuclear matrix element.
| m_type | Integer representing the type of transition (0 = Fermi, 1 = Gamow-Teller) |
| beta_c_cm | Dimensionless speed of the ejectile in the CM frame |
| gen | Reference to the Generator to use for random sampling |
Definition at line 605 of file DiscreteNuclearReaction.cc.
References allowed_approx_, diff_xs(), marley::Generator::rejection_sample(), and marley::MatrixElement::type().
Referenced by create_event().
|
overrideprotectedvirtual |
Creates the description string based on the PDG code values for the initial and final particles.
Reimplemented from marley::NuclearReaction.
Definition at line 633 of file DiscreteNuclearReaction.cc.
References marley::Reaction::description_, matrix_elements_, and marley::NuclearReaction::set_description().
|
protected |
Helper function for total_xs and summed_diff_xs()
| pdg_a | PDG code for the projectile |
| KEa | Lab-frame projectile kinetic energy (MeV) |
| cos_theta_c_cm | CM frame scattering cosine for the ejectile |
| level_xsecs | If this pointer is not nullptr, then the std::vector<double> that it points to will be cleared and loaded with the partial cross sections to each individual nuclear level included in the sum. This feature is helpful when computing weights for sampling a nuclear transition in create_event(). |
| differential | Whether the total cross section (false) or the differential cross section (true, \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\)) should be summed over all kinematically accessible nuclear levels by this function |
Definition at line 520 of file DiscreteNuclearReaction.cc.
References marley::Reaction::description_, diff_xs(), matrix_elements_, marley::NuclearReaction::max_level_energy(), marley::Reaction::pdg_a(), marley::Reaction::pdg_a_, and total_xs().
Referenced by create_event(), diff_xs(), total_xs(), and total_xs().
|
virtual |
Total cross section (MeV -2) for a given final nuclear level.
| me | MatrixElement object describing the transition to the final nuclear level | |
| KEa | Lab-frame projectile kinetic energy (MeV) | |
| [out] | beta_c_cm | After this function is called, this variable will contain the (dimensionless) speed of the ejectile as measured in the center of momentum frame |
| check_max_E_level | Whether to check the reaction threshold via a call to max_level_energy(). If this argument is set to false, then the check will be skipped. |
Definition at line 491 of file DiscreteNuclearReaction.cc.
References allowed_approx_, marley::Reaction::description_, diff_xs(), marley::MatrixElement::level_energy(), marley::Integrator::num_integrate(), and marley::MatrixElement::strength().
|
overridevirtual |
Total reaction cross section (MeV -2) including all kinematically-allowed final nuclear levels.
| pdg_a | PDG code for the projectile |
| KEa | Lab-frame kinetic energy (MeV) of the projectile |
Implements marley::Reaction.
Definition at line 281 of file DiscreteNuclearReaction.cc.
References marley::Reaction::pdg_a(), and summed_xs_helper().
Referenced by summed_xs_helper().
|
virtual |
Total reaction cross section (MeV -2) including all kinematically-allowed nuclear transitions of a particular type.
| pdg_a | PDG code for the projectile |
| KEa | Lab-frame kinetic energy (MeV) of the projectile |
| mat_el_type | marley::MatrixElement::TransitionType for the kind of nuclear transition of interest |
Definition at line 291 of file DiscreteNuclearReaction.cc.
References matrix_elements_, marley::Reaction::pdg_a(), and summed_xs_helper().
|
protected |
Flag that indicates whether to include aditional terms beyond the q->0 limit.
Definition at line 185 of file DiscreteNuclearReaction.hh.
Referenced by DiscreteNuclearReaction(), diff_xs(), sample_cos_theta_c_cm(), and total_xs().
|
protected |
Object that handles calculations of Coulomb correction factors.
Definition at line 175 of file DiscreteNuclearReaction.hh.
Referenced by DiscreteNuclearReaction(), and diff_xs().
|
protected |
Matrix elements representing all of the possible nuclear transitions that may be caused by this reaction.
Definition at line 168 of file DiscreteNuclearReaction.hh.
Referenced by DiscreteNuclearReaction(), create_event(), matrix_elements(), set_description(), summed_xs_helper(), and total_xs().
|
protected |
Object that handles calculations of the nuclear form factor.
Definition at line 181 of file DiscreteNuclearReaction.hh.
Referenced by DiscreteNuclearReaction(), and diff_xs().
|
protected |
Object that handles calculations of nucleon form factors.
Definition at line 178 of file DiscreteNuclearReaction.hh.
Referenced by DiscreteNuclearReaction(), and diff_xs().
|
protected |
Pair of vectors containg the mean radius of the nucleon wavefunctions and the degeneracies for each nuclear level.
Definition at line 172 of file DiscreteNuclearReaction.hh.