22#include "marley/CoulombCorrector.hh"
23#include "marley/MassTable.hh"
24#include "marley/TargetAtom.hh"
106 static std::string proc_type_to_string(
const ProcessType& pt );
127 static std::vector< std::unique_ptr< Reaction > >
138 int pdg_b,
int& pdg_d,
int& q_d );
173 double& pc_cm,
double& Ed_cm )
const;
192 double KEa,
double pc_cm,
double cos_theta_c_cm,
double phi_c_cm,
193 double Ec_cm,
double Ed_cm,
int residue_status )
const;
202 double KEa,
const std::shared_ptr< HepMC3::GenParticle >& ejectile,
203 const std::shared_ptr< HepMC3::GenParticle >& residue )
const;
Stores event-related information.
Stores particle-related information.
CoulombMode
Enumerated type used to set the method for handling Coulomb corrections for CC nuclear reactions.
The MARLEY Event generator.
Type-safe representation of a parity value (either +1 or -1)
const std::string & get_description() const
Get a string that contains the formula for this reaction.
virtual double total_xs(int pdg_a, double KEa) const =0
Compute the reaction's total cross section (MeV -2)
Reaction(const std::string &source_file)
Construct a Reaction with the resolved path of the data file.
int pdg_a_
PDG code for the projectile.
double md_
Residue mass (MeV)
ProcessType process_type_
Type of scattering process (CC, NC) represented by this reaction.
double mc_
Ejectile mass (MeV)
static int get_ejectile_pdg(int pdg_a, ProcessType proc_type)
virtual marley::TargetAtom atomic_target() const =0
Returns the target atom involved in this reaction.
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.
ProcessType
Enumerated type describing the kind of scattering process represented by a Reaction.
@ NC_Continuum
Nuclear matrix elements contain for a transition to a continuum of nuclear levels.
@ NC_Discrete
Nuclear matrix elements contain for a transition to a discrete nuclear level.
@ Unknown
Dummy value used for error handling.
@ StandaloneDecay
Standalone nuclear de-excitation with no simulated primary reaction (used by "marley decay")
@ AntiNeutrinoCC_Discrete
Nuclear matrix elements contain for a transition to a discrete nuclear level.
@ NuElectronElastic
Neutrino-electron elastic scattering.
@ NeutrinoCC_Discrete
Nuclear matrix elements contain for a transition to a discrete nuclear level.
@ AntiNeutrinoCC_Continuum
Nuclear matrix elements contain for a transition to a continuum of nuclear levels.
@ NeutrinoCC_Continuum
Nuclear matrix elements contain for a transition to a continuum of nuclear levels.
DataFormat
Enumerated type describing the file format for reaction data.
@ MultipoleResponses
Continuum nuclear responses are given for one or more multipoles.
static const std::vector< int > & get_projectiles(ProcessType proc_type)
const std::string & source_file() const
Get the resolved path of the reaction data file used to construct this Reaction.
static void get_residue_pdg_and_charge(ProcessType proc_type, int pdg_b, int &pdg_d, int &q_d)
std::string description_
String that contains a formula describing the reaction.
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.
static std::vector< std::unique_ptr< Reaction > > load_from_file(const std::string &filename, StructureDatabase &db, CoulombCorrector::CoulombMode coulomb_mode, const JSON &ff_config)
int pdg_c_
PDG code for the ejectile.
const std::string source_file_
Resolved path of the reaction data file.
ProcessType process_type() const
Get the process type for this reaction.
int pdg_d_
PDG code for the residue.
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.
virtual double threshold_kinetic_energy() const =0
Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed...
int pdg_a() const
Get the projectile PDG code.
int pdg_b_
PDG code for the target.
double ma_
Projectile mass (MeV)
int pdg_b() const
Get the target PDG code.
double mb_
Target mass (MeV)
Container for nuclear structure information organized by nuclide.
An atomic target for a lepton scattering reaction.