25#include "marley/CoulombCorrector.hh"
26#include "marley/DecayScheme.hh"
27#include "marley/Level.hh"
28#include "marley/MassTable.hh"
29#include "marley/MatrixElement.hh"
30#include "marley/NuclearReaction.hh"
31#include "marley/NuclearFormFactor.hh"
32#include "marley/NucleonFormFactors.hh"
33#include "marley/StructureDatabase.hh"
60 int pdg_c,
int pdg_d,
int q_d,
61 const std::shared_ptr<std::vector<marley::MatrixElement> >& mat_els,
65 virtual std::shared_ptr< HepMC3::GenEvent >
create_event(
78 virtual double total_xs(
int pdg_a,
double KEa )
const override;
101 double cos_theta_c_cm,
double& beta_c_cm,
102 bool check_max_E_level )
const;
113 double cos_theta_c_cm )
const;
127 double& beta_c_cm,
bool check_max_E_level =
true )
const;
164 std::vector<double>* level_xsecs,
bool differential )
const;
Computes Coulomb correction factors for neutrino-nucleus differential cross sections.
CoulombMode
Enumerated type used to set the method for handling Coulomb corrections for CC nuclear reactions.
Discrete level and γ-ray data for a specific nuclide.
double summed_xs_helper(int pdg_a, double KEa, double cos_theta_c_cm, std::vector< double > *level_xsecs, bool differential) const
NucleonFormFactors nucleon_form_factors_
Object that handles calculations of nucleon form factors.
bool allowed_approx_
Flag that indicates whether to include aditional terms beyond the q->0 limit.
std::shared_ptr< NuclearFormFactor > nuclear_ff_
Object that handles calculations of the nuclear form factor.
void set_decay_scheme(marley::DecayScheme *scheme)
Sets the DecayScheme object to use for sampling excited levels in the residue.
virtual double total_xs(int pdg_a, double KEa) const override
Total reaction cross section (MeV -2) including all kinematically-allowed final nuclear levels.
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 (MeV -2) evaluated in the center-of-momentum frame for a transition to a ...
CoulombCorrector coulomb_corrector_
Object that handles calculations of Coulomb correction factors.
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)
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...
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 n...
virtual void set_description() override
Creates the description string based on the PDG code values for the initial and final particles.
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 matr...
const std::vector< marley::MatrixElement > & matrix_elements() const
Allows access to the owned vector of MatrixElement objects.
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.
The MARLEY Event generator.
A reduced nuclear matrix element that represents a transition caused by a neutrino-nucleus reaction.
TransitionType
Enumerated type that represents the possible kinds of nuclear transitions recognized by MARLEY.
NuclearReaction(ProcessType pt, int pdg_a, int pdg_b, int pdg_c, int pdg_d, int q_d, const std::string &source_file)
ProcessType
Enumerated type describing the kind of scattering process represented by a Reaction.
const std::string & source_file() const
Get the resolved path of the reaction data file used to construct this Reaction.
int pdg_a() const
Get the projectile PDG code.
int pdg_b() const
Get the target PDG code.