25 #include "marley/DecayScheme.hh"
26 #include "marley/Event.hh"
27 #include "marley/Level.hh"
28 #include "marley/MassTable.hh"
29 #include "marley/MatrixElement.hh"
30 #include "marley/Reaction.hh"
31 #include "marley/StructureDatabase.hh"
53 const std::shared_ptr<std::vector<marley::MatrixElement> >& mat_els);
57 enum class CoulombMode { NO_CORRECTION, FERMI_FUNCTION, EMA, MEMA,
58 FERMI_AND_EMA, FERMI_AND_MEMA };
95 virtual double total_xs(
int pdg_a,
double KEa)
const override;
107 double cos_theta_c_cm)
const;
118 double cos_theta_c_cm)
const override;
132 double& beta_c_cm,
bool check_max_E_level =
true)
const;
148 double ema_factor(
double beta_rel_cd,
bool& ok,
bool modified_ema)
const;
184 double pc_cm,
double cos_theta_c_cm,
double phi_c_cm,
double Ec_cm,
215 std::vector<double>* level_xsecs,
bool differential)
const;
Discrete level and γ-ray data for a specific nuclide.
Definition: DecayScheme.hh:30
Container for ingoing and outgoing momentum 4-vectors from a reaction.
Definition: Event.hh:66
The MARLEY Event generator.
Definition: Generator.hh:42
A reduced nuclear matrix element that represents a transition caused by a neutrino-nucleus reaction.
Definition: MatrixElement.hh:25
A neutrino-nucleus reaction.
Definition: NuclearReaction.hh:38
double coulomb_correction_factor(double beta_rel_cd) const
Definition: NuclearReaction.cc:592
int Ai_
Target mass number.
Definition: NuclearReaction.hh:224
double sample_cos_theta_c_cm(const marley::MatrixElement &matrix_el, double beta_c_cm, marley::Generator &gen) const
Samples a polar angle cosine for the ejectile using the relevant portion of the reaction nuclear matr...
Definition: NuclearReaction.cc:548
static std::string string_from_coulomb_mode(CoulombMode mode)
Convert a CoulombMode value to a string.
Definition: NuclearReaction.cc:749
double summed_xs_helper(int pdg_a, double KEa, double cos_theta_c_cm, std::vector< double > *level_xsecs, bool differential) const
Definition: NuclearReaction.cc:399
double weak_nuclear_charge() const
Definition: NuclearReaction.cc:711
double diff_xs(const marley::MatrixElement &mat_el, double KEa, double cos_theta_c_cm) const
Differential cross section (MeV -2) evaluated in the center-of-momentum frame for a transition to a ...
Definition: NuclearReaction.cc:387
double threshold_kinetic_energy() const override
Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed...
Definition: NuclearReaction.cc:169
CoulombMode coulomb_mode() const
Definition: NuclearReaction.hh:163
void set_description()
Creates the description string based on the PDG code values for the initial and final particles.
Definition: NuclearReaction.cc:719
virtual marley::Event make_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 override
Helper function used by NuclearReaction::create_event()
Definition: NuclearReaction.cc:576
double max_level_energy(double KEa) const
Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically all...
Definition: NuclearReaction.cc:157
static CoulombMode coulomb_mode_from_string(const std::string &str)
Convert a string to a CoulombMode value.
Definition: NuclearReaction.cc:738
NuclearReaction(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)
Definition: NuclearReaction.cc:65
void set_decay_scheme(marley::DecayScheme *scheme)
Sets the DecayScheme object to use for sampling excited levels in the residue.
virtual marley::Event create_event(int particle_id_a, double KEa, marley::Generator &gen) const override
Produces a two-two scattering Event that proceeds via this reaction.
Definition: NuclearReaction.cc:175
int q_d_
Net charge of the residue (in units of the proton charge) following this reaction.
Definition: NuclearReaction.hh:230
virtual double total_xs(int pdg_a, double KEa) const override
Total reaction cross section (MeV -2), including all kinematically-allowed final nuclear levels.
Definition: NuclearReaction.cc:370
void set_coulomb_mode(CoulombMode mode)
Set the method for handling Coulomb corrections for this reaction.
Definition: NuclearReaction.hh:167
double ema_factor(double beta_rel_cd, bool &ok, bool modified_ema) const
Definition: NuclearReaction.cc:650
int Zi_
Target atomic number.
Definition: NuclearReaction.hh:223
virtual marley::TargetAtom atomic_target() const override final
Returns the target atom involved in this reaction.
Definition: NuclearReaction.hh:60
int Af_
Residue mass number.
Definition: NuclearReaction.hh:226
double KEa_threshold_
Lab-frame kinetic energy of the projectile at threshold for this reaction (i.e., the residue is produ...
Definition: NuclearReaction.hh:235
CoulombMode
Enumerated type used to set the method for handling Coulomb corrections for CC nuclear reactions.
Definition: NuclearReaction.hh:57
double fermi_function(double beta_c) const
Compute the Fermi function
Definition: NuclearReaction.cc:122
int Zf_
Residue atomic number.
Definition: NuclearReaction.hh:225
double md_gs_
Ground state mass (MeV) of the residue.
Definition: NuclearReaction.hh:221
static std::map< CoulombMode, std::string > coulomb_mode_string_map_
Definition: NuclearReaction.hh:180
const std::vector< marley::MatrixElement > & matrix_elements() const
Allows access to the owned vector of MatrixElement objects.
Definition: NuclearReaction.hh:158
std::shared_ptr< std::vector< marley::MatrixElement > > matrix_elements_
Matrix elements representing all of the possible nuclear transitions that may be caused by this react...
Definition: NuclearReaction.hh:243
CoulombMode coulomb_mode_
The method to use when computing Coulomb corrections (if needed) for this reaction.
Definition: NuclearReaction.hh:239
Type-safe representation of a parity value (either +1 or -1)
Definition: Parity.hh:25
Abstract base class that represents a two-two scattering reaction.
Definition: Reaction.hh:38
ProcessType
Enumerated type describing the kind of scattering process represented by a Reaction.
Definition: Reaction.hh:46
int pdg_a() const
Get the projectile PDG code.
Definition: Reaction.hh:90
int pdg_b_
PDG code for the target.
Definition: Reaction.hh:119
int pdg_b() const
Get the target PDG code.
Definition: Reaction.hh:93
An atomic target for a lepton scattering reaction.
Definition: TargetAtom.hh:26