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
ElectronReaction.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 <string>
20
21#include "MassTable.hh"
22#include "Reaction.hh"
23
24namespace marley {
25
26 class Generator;
27
28 // Represents a reaction in which an incident (anti)neutrino of any flavor
29 // elastically scatters off of an electron originally bound to an atom with
30 // atomic number Z_atom_. The cross section computed for this reaction is
31 // computed per atom (scaled up from the single-electron cross section by the
32 // atomic number Z_atom_, which is the same as the number of electron targets
33 // bound to the atom). The small binding energy of the electrons is currently
34 // neglected.
35 class ElectronReaction : public marley::Reaction {
36
37 public:
38
39 ElectronReaction(int pdg_a, int target_atom_pdg,
40 const std::string& source_file);
41
42 inline virtual marley::TargetAtom atomic_target() const override final
43 { return atom_; }
44
45 // Total reaction cross section (in MeV^(-2)) for an incident
46 // projectile with lab-frame kinetic energy Ea
47 virtual double total_xs(int pdg_a, double KEa) const override;
48
49 // Differential cross section (MeV^(-2)) in the CM frame
50 virtual double diff_xs(int pdg_a, double KEa, double cos_theta_c_cm)
51 const;
52
53 // Creates an event object for this reaction using the generator gen
54 virtual std::shared_ptr< HepMC3::GenEvent > create_event(
55 int particle_id_a, double KEa, marley::Generator& gen) const override;
56
57 inline virtual double threshold_kinetic_energy() const override
58 { return KEa_threshold_; }
59
60 inline double g1() const { return g1_; }
61 inline double g2() const { return g2_; }
62
63 private:
64
65 // Atomic target involved in this reaction
66 marley::TargetAtom atom_;
67
68 // Coupling constants to use for cross section calculations (updated
69 // each time based on the projectile's particle ID)
70 double g1_, g2_;
71
72 // Threshold kinetic energy of the projectile
73 double KEa_threshold_;
74
79 void set_coupling_constants();
80
81 // Sample a CM frame scattering cosine for the ejectile. The first
82 // argument is Mandelstam s. This function assumes that the coupling
83 // constants g1 and g2 have already been updated, so make sure to use it
84 // only after calling determine_coupling_constants.
85 double sample_cos_theta_c_cm(double s, marley::Generator& gen);
86 };
87
88}
virtual double threshold_kinetic_energy() const override
Get the minimum lab-frame kinetic energy (MeV) of the projectile that allows this reaction to proceed...
virtual marley::TargetAtom atomic_target() const override final
Returns the target atom involved in this reaction.
virtual double diff_xs(int pdg_a, double KEa, double cos_theta_c_cm) const
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.
virtual double total_xs(int pdg_a, double KEa) const override
Compute the reaction's total cross section (MeV -2)
The MARLEY Event generator.
Definition Generator.hh:54
Abstract base class that represents a 2 → 2 scattering reaction.
Definition Reaction.hh:46
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
An atomic target for a lepton scattering reaction.
Definition TargetAtom.hh:26