MARLEY (Model of Argon Reaction Low Energy Yields) v2.0.0
A Monte Carlo event generator for tens-of-MeV neutrino interactions
Loading...
Searching...
No Matches
NuclearReaction.hh
1
4//
5// This file is part of MARLEY (Model of Argon Reaction Low Energy Yields)
6//
7// MARLEY is free software: you can redistribute it and/or modify it under the
8// terms of version 3 of the GNU General Public License as published by the
9// Free Software Foundation.
10//
11// For the full text of the license please see COPYING or
12// visit http://opensource.org/licenses/GPL-3.0
13//
14// Please respect the MCnet academic usage guidelines. See GUIDELINES
15// or visit https://www.montecarlonet.org/GUIDELINES for details.
16
17#pragma once
18#include <functional>
19#include <map>
20#include <memory>
21#include <regex>
22#include <string>
23#include <vector>
24
25#include "HepMC3/Attribute.h"
26#include "HepMC3/GenEvent.h"
27#include "HepMC3/GenParticle.h"
28#include "marley/DecayScheme.hh"
29#include "marley/Level.hh"
30#include "marley/MassTable.hh"
31#include "marley/MatrixElement.hh"
32#include "marley/Reaction.hh"
33#include "marley/StructureDatabase.hh"
34
35namespace marley {
36
37 class Generator;
38
40 class NuclearReaction : public Reaction {
41
42 public:
43
51 NuclearReaction( ProcessType pt, int pdg_a, int pdg_b, int pdg_c,
52 int pdg_d, int q_d, const std::string& source_file );
53
54 inline virtual marley::TargetAtom atomic_target() const override final
55 { return marley::TargetAtom( pdg_b_ ); }
56
60 double threshold_kinetic_energy() const override;
61
65 double max_level_energy( double KEa ) const;
66
72 double weak_nuclear_charge() const;
73
74 protected:
75
78 virtual void set_description();
79
82 void set_charge_attributes( std::shared_ptr< HepMC3::GenEvent >& event )
83 const;
84
93 const std::shared_ptr< HepMC3::GenParticle >& residue,
94 double E_level, int twoJ, const marley::Parity& P ) const;
95
114 virtual std::shared_ptr< HepMC3::GenEvent > make_nuclear_event_object(
115 double KEa, double pc_cm, double cos_theta_c_cm, double phi_c_cm,
116 double Ec_cm, double Ed_cm, double E_level, int twoJ,
117 const marley::Parity& P ) const;
118
129 virtual std::shared_ptr< HepMC3::GenEvent > make_nuclear_event_object(
130 double KEa, const std::shared_ptr< HepMC3::GenParticle >& ejectile,
131 const std::shared_ptr< HepMC3::GenParticle >& residue,
132 double E_level, int twoJ, const marley::Parity& P ) const;
133
134 double md_gs_;
135
136 int Zi_;
137 int Ai_;
138 int Zf_;
139 int Af_;
140
143 int q_d_;
144
149 };
150
151}
The MARLEY Event generator.
Definition Generator.hh:54
int Ai_
Target mass number.
double weak_nuclear_charge() const
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 ( , , and parity) needed to keep track of the ...
double threshold_kinetic_energy() const override
Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed...
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.
virtual void set_description()
Creates the description string based on the PDG code values for the initial and final particles.
double max_level_energy(double KEa) const
Get the maximum possible excitation energy (MeV) of the final-state residue that is kinematically all...
int q_d_
Net charge of the residue (in units of the proton charge) following this reaction.
NuclearReaction(ProcessType pt, int pdg_a, int pdg_b, int pdg_c, int pdg_d, int q_d, const std::string &source_file)
int Zi_
Target atomic number.
virtual marley::TargetAtom atomic_target() const override final
Returns the target atom involved in this reaction.
int Af_
Residue mass number.
double KEa_threshold_
Lab-frame kinetic energy of the projectile at threshold for this reaction (i.e., the residue is produ...
int Zf_
Residue atomic number.
double md_gs_
Ground state mass (MeV) of the residue.
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...
Type-safe representation of a parity value (either +1 or -1)
Definition Parity.hh:25
Reaction(const std::string &source_file)
Construct a Reaction with the resolved path of the data file.
Definition Reaction.cc:362
ProcessType
Enumerated type describing the kind of scattering process represented by a Reaction.
Definition Reaction.hh:58
const std::string & source_file() const
Get the resolved path of the reaction data file used to construct this Reaction.
Definition Reaction.hh:104
int pdg_a() const
Get the projectile PDG code.
Definition Reaction.hh:109
int pdg_b_
PDG code for the target.
Definition Reaction.hh:143
int pdg_b() const
Get the target PDG code.
Definition Reaction.hh:112
An atomic target for a lepton scattering reaction.
Definition TargetAtom.hh:26