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
marley::FermiDiracNeutrinoSource Class Reference

Supernova cooling neutrino source approximated using a Fermi-Dirac distribution. More...

#include <NeutrinoSource.hh>

Inheritance diagram for marley::FermiDiracNeutrinoSource:
marley::NeutrinoSource

Public Member Functions

 FermiDiracNeutrinoSource (int particle_id=marley_utils::ELECTRON_NEUTRINO, double Emin=0., double Emax=50., double temp=3.5, double eta=0.)
 
virtual double get_Emax () const override
 Get the maximum neutrino energy (MeV) that can be sampled by this source.
 
virtual double get_Emin () const override
 Get the minimum neutrino energy (MeV) that can be sampled by this source.
 
virtual double pdf (double E) const override
 Probability density function describing the incident neutrino energy distribution.
 
- Public Member Functions inherited from marley::NeutrinoSource
 NeutrinoSource (int particle_id)
 
virtual int get_pid () const
 Get the PDG particle ID for the neutrino type produced by this source.
 
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.
 

Protected Attributes

double C_
 normalization constant (MeV2)
 
double Emax_
 maximum neutrino energy (MeV)
 
double Emin_
 minimum neutrino energy (MeV)
 
double eta_
 dimensionless pinching parameter
 
double temperature_
 temperature (MeV)
 
- Protected Attributes inherited from marley::NeutrinoSource
int pid_
 PDG particle ID for the neutrinos produced by this source.
 

Additional Inherited Members

- Static Public Member Functions inherited from marley::NeutrinoSource
static bool pdg_is_allowed (const int pdg)
 

Detailed Description

Supernova cooling neutrino source approximated using a Fermi-Dirac distribution.

Neutrino energies from this source are sampled from a Fermi-Dirac distribution with temperature \(T\) (MeV) and pinching parameter \(\eta\). The probability density function is given by

\begin{align*} P(E) &= \frac{C\,E^2} {T^4\left[1+\exp\left(\frac{E}{T} - \eta\right)\right]} & \text{E}_\text{min} \leq E \leq \text{E}_\text{max} \end{align*}

where \(C\) is a normalization constant.

Definition at line 124 of file NeutrinoSource.hh.

Constructor & Destructor Documentation

◆ FermiDiracNeutrinoSource()

marley::FermiDiracNeutrinoSource::FermiDiracNeutrinoSource ( int particle_id = marley_utils::ELECTRON_NEUTRINO,
double Emin = 0.,
double Emax = 50.,
double temp = 3.5,
double eta = 0. )
Parameters
particle_idPDG particle ID for the neutrinos produced by this source
Eminminimum allowed neutrino energy (MeV)
Emaxmaximum allowed neutrino energy (MeV)
temptemperature (MeV)
etapinching parameter

Definition at line 66 of file NeutrinoSource.cc.

68 : NeutrinoSource(particle_id), Emin_(Emin), Emax_(Emax), temperature_(temp),
69 eta_(eta), C_(1.)
70{
71 // Normalize the source spectrum (not strictly necessary, but having the
72 // spectrum approximately normalized makes the default rejection sampling
73 // tolerance of 1e-8 reliable for finding the maximum of the spectrum)
74 double integral = marley_utils::num_integrate(
75 [this](double E) -> double { return this->pdf(E); }, Emin_, Emax_);
76
77 // Update the normalization constant, thereby normalizing this object's
78 // pdf in the process.
79 C_ /= integral;
80}
double eta_
dimensionless pinching parameter
double Emin_
minimum neutrino energy (MeV)
double C_
normalization constant (MeV2)
double Emax_
maximum neutrino energy (MeV)
virtual double pdf(double E) const override
Probability density function describing the incident neutrino energy distribution.
double temperature_
temperature (MeV)
NeutrinoSource(int particle_id)

References marley::NeutrinoSource::NeutrinoSource(), C_, Emax_, Emin_, eta_, pdf(), and temperature_.

Member Function Documentation

◆ get_Emax()

double marley::FermiDiracNeutrinoSource::get_Emax ( ) const
inlineoverridevirtual

Get the maximum neutrino energy (MeV) that can be sampled by this source.

Implements marley::NeutrinoSource.

Definition at line 343 of file NeutrinoSource.hh.

343{ return Emax_; }

References Emax_.

◆ get_Emin()

double marley::FermiDiracNeutrinoSource::get_Emin ( ) const
inlineoverridevirtual

Get the minimum neutrino energy (MeV) that can be sampled by this source.

Implements marley::NeutrinoSource.

Definition at line 344 of file NeutrinoSource.hh.

344{ return Emin_; }

References Emin_.

◆ pdf()

double marley::FermiDiracNeutrinoSource::pdf ( double E) const
overridevirtual

Probability density function describing the incident neutrino energy distribution.

The neutrino spectrum produced by this source will be folded with the relevant cross sections by a Generator object during event creation

Parameters
Eneutrino energy (MeV)
Returns
Probability density (MeV -1)

Implements marley::NeutrinoSource.

Definition at line 82 of file NeutrinoSource.cc.

82 {
83 if (E < Emin_ || E > Emax_) return 0.;
84 else return (C_ / std::pow(temperature_, 4)) * (std::pow(E, 2)
85 / (1 + std::exp((E / temperature_) - eta_)));
86}

References C_, Emax_, eta_, and temperature_.

Referenced by FermiDiracNeutrinoSource().

Member Data Documentation

◆ C_

double marley::FermiDiracNeutrinoSource::C_
protected

normalization constant (MeV2)

Definition at line 149 of file NeutrinoSource.hh.

Referenced by FermiDiracNeutrinoSource(), and pdf().

◆ Emax_

double marley::FermiDiracNeutrinoSource::Emax_
protected

maximum neutrino energy (MeV)

Definition at line 146 of file NeutrinoSource.hh.

Referenced by FermiDiracNeutrinoSource(), get_Emax(), and pdf().

◆ Emin_

double marley::FermiDiracNeutrinoSource::Emin_
protected

minimum neutrino energy (MeV)

Definition at line 145 of file NeutrinoSource.hh.

Referenced by FermiDiracNeutrinoSource(), and get_Emin().

◆ eta_

double marley::FermiDiracNeutrinoSource::eta_
protected

dimensionless pinching parameter

Definition at line 148 of file NeutrinoSource.hh.

Referenced by FermiDiracNeutrinoSource(), and pdf().

◆ temperature_

double marley::FermiDiracNeutrinoSource::temperature_
protected

temperature (MeV)

Definition at line 147 of file NeutrinoSource.hh.

Referenced by FermiDiracNeutrinoSource(), and pdf().


The documentation for this class was generated from the following files: