MARLEY (Model of Argon Reaction Low Energy Yields)
v1.2.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
|
Abstract base class that represents a two-two scattering reaction. More...
#include <Reaction.hh>
Public Types | |
enum | ProcessType { NeutrinoCC = 0 , AntiNeutrinoCC = 1 , NC = 2 , NuElectronElastic = 3 } |
Enumerated type describing the kind of scattering process represented by a Reaction. More... | |
Public Member Functions | |
virtual marley::TargetAtom | atomic_target () const =0 |
Returns the target atom involved in this reaction. More... | |
virtual marley::Event | create_event (int pdg_a, double KEa, marley::Generator &gen) const =0 |
Create an event object for this reaction. More... | |
virtual double | diff_xs (int pdg_a, double KEa, double cos_theta_c_cm) const =0 |
Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2) More... | |
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. | |
virtual double | threshold_kinetic_energy () const =0 |
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. | |
virtual double | total_xs (int pdg_a, double KEa) const =0 |
Compute the reaction's total cross section (MeV -2) More... | |
Static Public Member Functions | |
static int | get_ejectile_pdg (int pdg_a, ProcessType proc_type) |
static std::vector< std::unique_ptr< Reaction > > | load_from_file (const std::string &filename, marley::StructureDatabase &db) |
static std::string | proc_type_to_string (const ProcessType &pt) |
Protected Member Functions | |
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 |
Helper function that makes an event object. More... | |
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. More... | |
Static Protected Member Functions | |
static const std::vector< int > & | get_projectiles (ProcessType proc_type) |
Protected Attributes | |
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. | |
Abstract base class that represents a two-two scattering reaction.
This class models a reaction of the form a + b → c + d. The projectile (particle a) is taken to have lab-frame kinetic energy KEa and to be traveling toward the target along the positive z direction. The target (particle b) is taken to be at rest in the lab frame.
Enumerated type describing the kind of scattering process represented by a Reaction.
|
pure virtual |
Returns the target atom involved in this reaction.
For nuclear reactions, this is identical to the pdg_b_ member variable. For electron reactions, it is distinct (since particle b is the initial struck electron).
Implemented in marley::NuclearReaction, and marley::ElectronReaction.
|
pure virtual |
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 |
Implemented in marley::NuclearReaction, and marley::ElectronReaction.
|
pure virtual |
Differential cross section \(d\sigma/d\cos\theta_{c}^{\mathrm{CM}}\) (MeV -2)
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 |
Implemented in marley::NuclearReaction, and marley::ElectronReaction.
|
static |
Function that returns the ejectile PDG code given the projectile PDG code and the ProcessType
|
staticprotected |
Returns a vector of PDG codes for projectiles that participate in a particular ProcessType
|
static |
Factory method called by JSONConfig to build Reaction objects given a file with matrix element data
|
protectedvirtual |
Helper function that makes an event object.
This function should be called by marley::Reaction::create_event() after CM frame scattering angles have been sampled for the ejectile. For reactions where the residue may be left in an excited state, the excitation energy should be recorded by supplying it as the final argument.
KEa | Lab-frame kinetic energy (MeV) of the projectile |
pc_cm | Ejectile 3-momentum magnitude (MeV) in the CM frame |
cos_theta_c_cm | Cosine of ejectile's CM frame polar angle |
phi_c_cm | Ejectile's CM frame azimuthal angle (radians) |
Ec_cm | Ejectile total energy (MeV) in the CM frame |
Ed_cm | Residue total energy (MeV) in the CM frame |
E_level | Residue excitation energy (MeV) |
twoJ | Two times the residue spin |
P | Intrinsic parity of the residue |
Reimplemented in marley::NuclearReaction.
|
pure virtual |
Compute the reaction's total cross section (MeV -2)
pdg_a | Projectile's PDG code |
KEa | Lab-frame kinetic energy of the incident projectile |
Implemented in marley::NuclearReaction, and marley::ElectronReaction.
|
protected |
Helper function that handles CM frame kinematics for the reaction.
KEa | Lab-frame kinetic energy (MeV) of the projectile | |
[out] | s | Mandelstam s (MeV2) |
[out] | Ec_cm | Ejectile total energy (MeV) in the CM frame |
[out] | pc_cm | Ejectile 3-momentum magnitude (MeV) in the CM frame |
[out] | Ed_cm | Residue total energy (MeV) in the CM frame |