1 #ifndef NPSTAT_SEMIMIXLOCALLOGLIKELIHOOD_HH_
2 #define NPSTAT_SEMIMIXLOCALLOGLIKELIHOOD_HH_
21 #include "npstat/nm/coordAndWeight.hh"
28 template <
typename Numeric,
typename WFcn>
29 inline double semiMixLocalLogLikelihood(
30 const std::vector<Numeric>& sortedCoords,
31 const AbsDistribution1D& signal,
33 const Functor1<double, double>& bgDensityFcn,
34 const WFcn& localizingWeight,
35 const double localizingWeightXmin,
36 const double localizingWeightXmax)
38 if (localizingWeightXmin >= localizingWeightXmax)
throw std::invalid_argument(
39 "In npstat::semiMixLocalLogLikelihood: invalid weight boundaries");
41 const double logMin = std::log(DBL_MIN);
43 long double sum = 0.0L;
44 const unsigned long sz = sortedCoords.size();
46 for (
unsigned long i=0; i<sz; ++i)
48 Private::coordAndWeight(sortedCoords[i], &x, &dummy);
53 if (x >= localizingWeightXmin && x <= localizingWeightXmax)
55 const double w = fcnOrConst(localizingWeight, x);
59 const double s = signal.density(x);
60 const double bg = bgDensityFcn(x);
61 const double d = alpha*s + (1.0-alpha)*bg;
62 const double logd = d > DBL_MIN ? std::log(d) : logMin;
Interface definition for 1-d continuous statistical distributions.
Interface definitions and concrete simple functors for a variety of functor-based calculations.
Templated utilities for use in various density estimation codes, etc.
Definition: AbsArrayProjector.hh:14