1#ifndef __JMATH__JGAUSS__
2#define __JMATH__JGAUSS__
20namespace JPP {
using namespace JMATH; }
31 public JMath<JGauss_t>,
74 const double eps = std::numeric_limits<double>::min())
const
213 const double signal = 1.0,
280 const double umin = (zmin -
mean) /
sigma / sqrt(2.0);
281 const double umax = (zmax -
mean) /
sigma / sqrt(2.0);
285 if (std::isinf(zmin) && std::isinf(zmax)) {
289 }
else if (std::isinf(zmin)) {
291 I = 0.5 * (1 + erf(umax));
293 }
else if (std::isinf(zmax)) {
295 I = 0.5 * erfc(umin);
299 I = 0.5 * (erfc(umin) - erfc(umax));
335 const double w = 1.0 /
sigma;
336 const double u = (x -
mean) * w;
337 const double f0 =
get(u);
338 const double fs =
signal * f0;
357 inline double get(
const double u)
const
361 return exp(-0.5*u*u) / (sqrt(2.0*PI) *
sigma);
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Base class for data structures with artithmetic capabilities.
Exception for accessing a value in a collection that is outside of its range.
double gauss(const double x, const double sigma)
Gauss function (normalised to 1 at x = 0).
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Template definition of auxiliary base class for comparison of data structures.
JGauss_t & sub(const JGauss_t &gauss)
Subtract gauss.
JGauss_t(const double mean, const double sigma, const double signal, const double background)
Constructor.
friend std::istream & operator>>(std::istream &in, JGauss_t &gauss)
Write Gauss to input stream.
bool equals(const JGauss_t &gauss, const double eps=std::numeric_limits< double >::min()) const
Equality.
JGauss_t()
Default constructor.
friend std::ostream & operator<<(std::ostream &out, const JGauss_t &gauss)
Write Gauss to output stream.
JGauss_t & mul(const double factor)
Scale gauss.
JGauss_t & add(const JGauss_t &gauss)
Add gauss.
JGauss(const JGauss_t &gauss)
Copy constructor.
double operator()(const double x) const
Function value.
double JGauss_t::* parameter_type
Type definition of fit parameter.
double getDerivative(const double x) const
Derivative value.
JGauss()
Default constructor.
double getValue(const double x) const
Function value.
JGauss(const double mean, const double sigma, const double signal=1.0, const double background=0.0)
Constructor.
double getIntegral(const double xmin, const double xmax) const
Integral value.
double get(const double u) const
Get ordinate value.
const JGauss_t & getGradient(const double x) const
Get gradient.
Auxiliary base class for aritmetic operations of derived class types.