21 #include "marley/marley_utils.hh"
22 #include "marley/InterpolationGrid.hh"
57 inline virtual int get_pid()
const;
66 virtual double pdf(
double E)
const = 0;
95 static const std::set<int> pids_;
104 marley_utils::ELECTRON_NEUTRINO,
double E = 10.);
106 inline virtual double get_Emax()
const override;
108 inline virtual double get_Emin()
const override;
110 inline virtual double pdf(
double E)
const override;
134 = marley_utils::ELECTRON_NEUTRINO,
double Emin = 0.,
135 double Emax = 50.,
double temp = 3.5,
double eta = 0.);
137 inline virtual double get_Emin()
const override;
139 inline virtual double get_Emax()
const override;
141 virtual double pdf(
double E)
const override;
170 = marley_utils::ELECTRON_NEUTRINO,
double Emin = 0.,
171 double Emax = 50.,
double Emean = 13.,
double beta = 4.5);
173 inline virtual double get_Emin()
const override;
174 inline virtual double get_Emax()
const override;
176 virtual double pdf(
double E)
const override;
201 = marley_utils::ELECTRON_NEUTRINO,
double Emin = 0.,
double Emax = 50.,
202 std::function<
double(
double)> prob_dens_func
203 = [](
double) ->
double {
return 1.; });
205 inline virtual double get_Emax()
const override;
207 inline virtual double get_Emin()
const override;
209 inline virtual double pdf(
double E)
const override;
215 std::function<double(
double)> probability_density_;
231 = marley_utils::ELECTRON_NEUTRINO);
233 inline virtual double get_Emax()
const override;
235 inline virtual double get_Emin()
const override;
237 virtual double pdf(
double E)
const override;
241 static constexpr
double m_mu_ = marley_utils::m_mu
242 * marley_utils::micro_amu;
243 static constexpr
double m_mu_to_the_minus_four_
244 = 1. / (m_mu_ * m_mu_ * m_mu_ * m_mu_);
245 static constexpr
double Emin_ = 0.;
246 static constexpr
double Emax_ = m_mu_ / 2.;
260 = marley_utils::ELECTRON_NEUTRINO);
269 const std::vector<double>& PDs,
int particle_id
270 = marley_utils::ELECTRON_NEUTRINO, Method method
271 = Method::LinearLinear);
273 inline virtual double get_Emax()
const override;
275 inline virtual double get_Emin()
const override;
277 inline virtual double pdf(
double E)
const override;
285 void check_for_errors();
291 {
return (pids_.count(pdg) > 0); }
298 {
if (
energy_ == E)
return 1.;
else return 0.; }
309 if (E < Emin_ || E > Emax_)
return 0.;
310 else return probability_density_(E);
317 {
return grid_.
back().first; }
319 {
return grid_.
front().first; }
327 const std::vector<double>& prob_densities,
int particle_id, Method method)
329 { check_for_errors(); }
"Beta-fit" neutrino source
Definition: NeutrinoSource.hh:161
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.cc:95
double C_
dimensionless normalization constant
Definition: NeutrinoSource.hh:187
double Emax_
Definition: NeutrinoSource.hh:180
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:303
double Emean_
mean neutrino energy
Definition: NeutrinoSource.hh:185
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:304
double Emin_
minimum neutrino energy (MeV)
Definition: NeutrinoSource.hh:179
BetaFitNeutrinoSource(int particle_id=marley_utils::ELECTRON_NEUTRINO, double Emin=0., double Emax=50., double Emean=13., double beta=4.5)
Definition: NeutrinoSource.cc:72
double beta_
pinching parameter
Definition: NeutrinoSource.hh:186
Muon decay-at-rest neutrino source.
Definition: NeutrinoSource.hh:226
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:313
DecayAtRestNeutrinoSource(int particle_id=marley_utils::ELECTRON_NEUTRINO)
Definition: NeutrinoSource.cc:115
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.cc:128
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:314
Supernova cooling neutrino source approximated using a Fermi-Dirac distribution.
Definition: NeutrinoSource.hh:124
FermiDiracNeutrinoSource(int particle_id=marley_utils::ELECTRON_NEUTRINO, double Emin=0., double Emax=50., double temp=3.5, double eta=0.)
Definition: NeutrinoSource.cc:50
double eta_
dimensionless pinching parameter
Definition: NeutrinoSource.hh:148
double Emin_
minimum neutrino energy (MeV)
Definition: NeutrinoSource.hh:145
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:300
double C_
normalization constant (MeV2)
Definition: NeutrinoSource.hh:149
double Emax_
maximum neutrino energy (MeV)
Definition: NeutrinoSource.hh:146
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.cc:66
double temperature_
temperature (MeV)
Definition: NeutrinoSource.hh:147
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:301
Neutrino source with an arbitrary energy spectrum described by a std::function<double(double)> object...
Definition: NeutrinoSource.hh:192
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.hh:308
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:306
FunctionNeutrinoSource(int particle_id=marley_utils::ELECTRON_NEUTRINO, double Emin=0., double Emax=50., std::function< double(double)> prob_dens_func=[](double) -> double { return 1.;})
Definition: NeutrinoSource.cc:103
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:307
The MARLEY Event generator.
Definition: Generator.hh:42
Neutrino source that uses a tabulated energy spectrum.
Definition: NeutrinoSource.hh:250
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.hh:320
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:318
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:316
GridNeutrinoSource(const Grid &g, int particle_id=marley_utils::ELECTRON_NEUTRINO)
Definition: NeutrinoSource.hh:323
const OrderedPair & back() const
Returns a reference to the last ordered pair.
Definition: InterpolationGrid.hh:192
SecondNumericType interpolate(FirstNumericType x) const
Compute y(x) using the current InterpolationMethod.
Definition: InterpolationGrid.hh:273
InterpolationMethod
Method to use for interpolating between (x,y) grid points.
Definition: InterpolationGrid.hh:63
const OrderedPair & front() const
Returns a reference to the first ordered pair.
Definition: InterpolationGrid.hh:189
Monoenergetic neutrino source.
Definition: NeutrinoSource.hh:99
double energy_
neutrino energy (MeV)
Definition: NeutrinoSource.hh:113
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
Definition: NeutrinoSource.hh:297
virtual double get_Emax() const override
Get the maximum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:295
virtual double get_Emin() const override
Get the minimum neutrino energy (MeV) that can be sampled by this source.
Definition: NeutrinoSource.hh:296
MonoNeutrinoSource(int particle_id=marley_utils::ELECTRON_NEUTRINO, double E=10.)
Definition: NeutrinoSource.hh:293
Abstract base class for all objects that describe the incident neutrino energy distribution.
Definition: NeutrinoSource.hh:38
virtual double get_Emax() const =0
Get the maximum neutrino energy (MeV) that can be sampled by this source.
NeutrinoSource(int particle_id)
Definition: NeutrinoSource.cc:22
int pid_
PDG particle ID for the neutrinos produced by this source.
Definition: NeutrinoSource.hh:88
virtual double get_Emin() const =0
Get the minimum neutrino energy (MeV) that can be sampled by this source.
virtual double pdf(double E) const =0
Probability density function describing the incident neutrino energy distribution.
virtual double sample_incident_neutrino(int &pdg, marley::Generator &gen) const
Samples an incident neutrino energy and loads pdg with the PDG code of the appropriate neutrino type.
Definition: NeutrinoSource.cc:41
virtual int get_pid() const
Get the PDG particle ID for the neutrino type produced by this source.
Definition: NeutrinoSource.hh:289
static bool pdg_is_allowed(const int pdg)
Definition: NeutrinoSource.hh:290