|
MARLEY (Model of Argon Reaction Low Energy Yields) v2.0.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
|
Generates inclusive scattering events and computes cross sections using tabulated nuclear responses. More...
#include <ContinuumNuclearReaction.hh>
Public Types | |
| enum class | SubContinuumMode { IGNORE , MIRROR , ACCUMULATE } |
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... | |
Public Member Functions | |
| ContinuumNuclearReaction (Reaction::ProcessType pt, int pdg_a, int pdg_b, int pdg_c, int pdg_d, int q_d, const std::shared_ptr< TabulatedXSec > &txsec, 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. | |
| const TabulatedXSec & | get_tabulated_xsec () const |
| virtual double | total_xs (int pdg_a, double KEa) const override |
| Compute the reaction's total cross section (MeV -2) | |
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. | |
Static Public Member Functions | |
| static void | set_sub_continuum_mode (SubContinuumMode scm) |
| Sets the approach to handling sub-continuum cross-section strength. | |
| static std::string | string_from_sub_continuum_mode (const SubContinuumMode sc_mode) |
| static SubContinuumMode | sub_continuum_mode () |
| Gets the approach to handling sub-continuum cross-section strength. | |
| static SubContinuumMode | sub_continuum_mode_from_string (const std::string &sc_mode_str) |
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) |
Protected Member Functions | |
| double | get_Ec_from_Ex (const double Ex, const double cos_theta, const double KEa, double *jacobian=nullptr) const |
| Helper function for reassign_sub_continuum() that solves for the outgoing lepton total energy that corresponds to the input kinematic variables. | |
| bool | reassign_sub_continuum (double &w, const double ctl, const double KEa) const |
| Helper function for create_event() that potentially reassigns the value of the energy transfer. | |
| virtual void | set_description () override |
| Creates the description string based on the PDG code values for the initial and final particles. | |
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 | |
| std::shared_ptr< TabulatedXSec > | xsec_ |
| Helper object that handles cross section calculations. | |
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. | |
Static Protected Attributes | |
| static SubContinuumMode | sc_mode_ = SubContinuumMode::ACCUMULATE |
| Indicates the desired method for handling events with excitation energies originally sampled below the continuum threshold. | |
| static const std::map< SubContinuumMode, std::string > | sc_mode_string_map_ |
| Helper map used for conversions between a SubContinuumMode value and a std::string. | |
Additional Inherited Members | |
Static Protected Member Functions inherited from marley::Reaction | |
| static const std::vector< int > & | get_projectiles (ProcessType proc_type) |
Generates inclusive scattering events and computes cross sections using tabulated nuclear responses.
Definition at line 30 of file ContinuumNuclearReaction.hh.
|
strong |
Defines the approach to handling possible reassignment of cross-section strength that falls below the excitation energy threshold for the continuum
Definition at line 37 of file ContinuumNuclearReaction.hh.
| marley::ContinuumNuclearReaction::ContinuumNuclearReaction | ( | Reaction::ProcessType | pt, |
| int | pdg_a, | ||
| int | pdg_b, | ||
| int | pdg_c, | ||
| int | pdg_d, | ||
| int | q_d, | ||
| const std::shared_ptr< TabulatedXSec > & | txsec, | ||
| const std::string & | source_file ) |
Definition at line 45 of file ContinuumNuclearReaction.cc.
|
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 62 of file ContinuumNuclearReaction.cc.
References HepMC3::FourVector::e(), marley::NuclearReaction::KEa_threshold_, marley::Reaction::ma_, marley::NuclearReaction::make_nuclear_event_object(), marley::Reaction::mb_, marley::Reaction::mc_, marley::Reaction::md_, marley::NuclearReaction::md_gs_, marley::Reaction::pdg_a(), marley::Reaction::pdg_a_, marley::Reaction::pdg_c_, marley::Reaction::pdg_d_, HepMC3::FourVector::px(), HepMC3::FourVector::py(), HepMC3::FourVector::pz(), reassign_sub_continuum(), marley::Generator::sample_from_distribution(), marley::Generator::uniform_random_double(), and xsec_.
|
protected |
Helper function for reassign_sub_continuum() that solves for the outgoing lepton total energy that corresponds to the input kinematic variables.
| [in] | Ex | Nuclear excitation energy (MeV) |
| [in] | cos_theta | Lepton scattering cosine |
| [in] | KEa | Projectile kinetic energy |
| [out] | jacobian | If this argument is not nullptr, then the target double will be filled with the value of the Jacobian needed to convert from \( d\sigma/dE_\ell \) to \( d\sigma/dE_x \). |
Definition at line 366 of file ContinuumNuclearReaction.cc.
References marley::Reaction::ma_, marley::Reaction::mb_, marley::Reaction::mc_, and marley::NuclearReaction::md_gs_.
Referenced by reassign_sub_continuum().
|
inline |
Definition at line 49 of file ContinuumNuclearReaction.hh.
|
protected |
Helper function for create_event() that potentially reassigns the value of the energy transfer.
If reassignment is enabled, moves cross-section strength falling below the unbound threshold to the continuum by updating the value of the energy transfer. Returns true if the reassignment was successful and is kinematically allowed. Returns false otherwise.
| [in,out] | w | Energy transfer (MeV, not shifted by \( \Delta_\mathrm{IAS} \)) |
| [in] | ctl | Lepton scattering cosine |
| [in] | KEa | Projectile kinetic energy (MeV) |
Definition at line 290 of file ContinuumNuclearReaction.cc.
References get_Ec_from_Ex(), marley::MassTable::Instance(), marley::Reaction::ma_, marley::Reaction::mb_, marley::Reaction::mc_, marley::NuclearReaction::md_gs_, marley::Reaction::pdg_d_, and sc_mode_.
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 281 of file ContinuumNuclearReaction.cc.
References marley::Reaction::description_, and marley::NuclearReaction::set_description().
|
inlinestatic |
Sets the approach to handling sub-continuum cross-section strength.
Definition at line 56 of file ContinuumNuclearReaction.hh.
References sc_mode_.
|
static |
Definition at line 421 of file ContinuumNuclearReaction.cc.
|
inlinestatic |
Gets the approach to handling sub-continuum cross-section strength.
Definition at line 53 of file ContinuumNuclearReaction.hh.
References sc_mode_.
|
static |
Definition at line 410 of file ContinuumNuclearReaction.cc.
|
overridevirtual |
Compute the reaction's total cross section (MeV -2)
| pdg_a | Projectile's PDG code |
| KEa | Lab-frame kinetic energy of the incident projectile |
Implements marley::Reaction.
Definition at line 55 of file ContinuumNuclearReaction.cc.
References marley::Reaction::pdg_a(), marley::Reaction::pdg_a_, and xsec_.
|
staticprotected |
Indicates the desired method for handling events with excitation energies originally sampled below the continuum threshold.
Definition at line 102 of file ContinuumNuclearReaction.hh.
Referenced by reassign_sub_continuum(), set_sub_continuum_mode(), and sub_continuum_mode().
|
staticprotected |
Helper map used for conversions between a SubContinuumMode value and a std::string.
Definition at line 39 of file ContinuumNuclearReaction.hh.
|
protected |
Helper object that handles cross section calculations.
Definition at line 98 of file ContinuumNuclearReaction.hh.
Referenced by create_event(), and total_xs().