npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
MinuitUnbinnedFitFcn1D.hh
Go to the documentation of this file.
1 #ifndef NPSI_MINUITUNBINNEDFITFCN1D_HH_
2 #define NPSI_MINUITUNBINNEDFITFCN1D_HH_
3 
4 /*!
5 // \file MinuitUnbinnedFitFcn1D.hh
6 //
7 // \brief Unbinned fit of a parametric density by maximum likelihood
8 //
9 // Author: I. Volobouev
10 //
11 // July 2016
12 */
13 
14 #include <cfloat>
15 
16 #include "npstat/stat/FitUtils.hh"
17 
18 #include "Minuit2/FCNBase.h"
19 
20 namespace npsi {
21  /**
22  // Target minimization function adapter class for running maximum
23  // likelihood density fits to unbinned data by Minuit2.
24  //
25  // DensityConstructor is a functor which creates the necessary
26  // density function on the stack out of a vector of parameters.
27  // Must have "operator()(const std::vector<double>&) const"
28  // which returns an object (or a reference) of some class which
29  // was derived from AbsDistribution1D.
30  */
31  template <typename Numeric, class DensityConstructor>
32  class MinuitUnbinnedFitFcn1D : public ROOT::Minuit2::FCNBase
33  {
34  public:
35  /**
36  // This class will not assume ownership of any pointers or references.
37  */
38  inline MinuitUnbinnedFitFcn1D(const Numeric* sampleData,
39  const unsigned nSampleData,
40  const DensityConstructor& densityMaker,
41  const double minlog=log(DBL_MIN),
42  const double up=0.05)
43  : sampleData_(sampleData),
44  nSampleData_(nSampleData),
45  densityMaker_(densityMaker),
46  minlog_(minlog),
47  up_(up)
48  {
49  }
50 
51  inline virtual ~MinuitUnbinnedFitFcn1D() {}
52 
53  /** This method returns negative log likelihood */
54  inline virtual double operator()(const std::vector<double>& x) const
55  {
57  sampleData_, nSampleData_, densityMaker_(x), minlog_);
58  }
59 
60  inline double Up() const {return up_;}
61 
62  private:
63  const Numeric* sampleData_;
64  unsigned nSampleData_;
65  const DensityConstructor& densityMaker_;
66  double minlog_;
67  double up_;
68  };
69 }
70 
71 #endif // NPSI_MINUITUNBINNEDFITFCN1D_HH_
Utility functions which facilitate fitting of parametric distributions.
Definition: MinuitUnbinnedFitFcn1D.hh:33
MinuitUnbinnedFitFcn1D(const Numeric *sampleData, const unsigned nSampleData, const DensityConstructor &densityMaker, const double minlog=log(DBL_MIN), const double up=0.05)
Definition: MinuitUnbinnedFitFcn1D.hh:38
virtual double operator()(const std::vector< double > &x) const
Definition: MinuitUnbinnedFitFcn1D.hh:54
Definition: fitCompositeJohnson.hh:16
double unbinnedLogLikelihood1D(const Numeric *samplePonts, unsigned long sampleLength, const AbsDistribution1D &density, double minlog)