13 #ifndef ROOT_Fit_LogLikelihoodFCN
14 #define ROOT_Fit_LogLikelihoodFCN
16 #include "Fit/BasicFCN.h"
40 template<
class DerivFunType,
class ModelFunType = ROOT::Math::IParamMultiFunction>
45 typedef typename ModelFunType::BackendType
T;
46 typedef BasicFCN<DerivFunType,ModelFunType,UnBinData>
BaseFCN;
58 LogLikelihoodFCN (
const std::shared_ptr<UnBinData> & data,
const std::shared_ptr<IModelFunction> & func,
int weight = 0,
bool extended =
false, const ::ROOT::Fit::ExecutionPolicy &executionPolicy = ::ROOT::Fit::ExecutionPolicy::kSerial) :
63 fGrad ( std::vector<double> ( func->NPar() ) ),
70 LogLikelihoodFCN (
const UnBinData & data,
const IModelFunction & func,
int weight = 0,
bool extended =
false, const ::ROOT::Fit::ExecutionPolicy &executionPolicy = ::ROOT::Fit::ExecutionPolicy::kSerial) :
75 fGrad ( std::vector<double> ( func.NPar() ) ),
88 BaseFCN(f.DataPtr(), f.ModelFunctionPtr() ),
101 SetData(rhs.DataPtr() );
102 SetModelFunction(rhs.ModelFunctionPtr() );
121 virtual double DataElement(
const double * x,
unsigned int i,
double * g)
const {
122 if (i==0) this->UpdateNCalls();
127 virtual void Gradient(
const double *x,
double *g)
const {
155 virtual double DoEval (
const double * x)
const {
156 this->UpdateNCalls();
161 virtual double DoDerivative(
const double * x,
unsigned int icoord )
const {
163 return fGrad[icoord];
virtual BaseFunction * Clone() const
clone the function (need to return Base for Windows)
LogLikelihoodFCN & operator=(const LogLikelihoodFCN &rhs)
BaseObjFunction::BaseFunction BaseFunction
virtual BaseObjFunction::Type_t Type() const
get type of fit method function
virtual double DoDerivative(const double *x, unsigned int icoord) const
::ROOT::Math::IParamMultiFunctionTempl< T > IModelFunction
LogLikelihoodFCN(const LogLikelihoodFCN &f)
BasicFCN< DerivFunType, ModelFunType, UnBinData > BaseFCN
ModelFunType::BackendType T
virtual double DataElement(const double *x, unsigned int i, double *g) const
i-th likelihood contribution and its gradient
void UseSumOfWeightSquare(bool on=true)
::ROOT::Fit::ExecutionPolicy fExecutionPolicy
virtual void Gradient(const double *x, double *g) const
::ROOT::Math::BasicFitMethodFunction< DerivFunType > BaseObjFunction
LogLikelihoodFCN(const UnBinData &data, const IModelFunction &func, int weight=0, bool extended=false, const ::ROOT::Fit::ExecutionPolicy &executionPolicy=::ROOT::Fit::ExecutionPolicy::kSerial)
virtual ~LogLikelihoodFCN()
virtual unsigned int NFitPoints() const
LogLikelihoodFCN(const std::shared_ptr< UnBinData > &data, const std::shared_ptr< IModelFunction > &func, int weight=0, bool extended=false, const ::ROOT::Fit::ExecutionPolicy &executionPolicy=::ROOT::Fit::ExecutionPolicy::kSerial)
std::vector< double > fGrad
BaseObjFunction::Type_t Type_t
virtual double DoEval(const double *x) const
Type_t
enumeration specyfing the possible fit method types
FunctionType::BaseFunc BaseFunction
double EvaluatePdf(const IModelFunction &func, const UnBinData &data, const double *x, unsigned int ipoint, double *g=0)
LogLikelihoodFCN< ROOT::Math::IMultiGenFunction, ROOT::Math::IParamMultiFunction > LogLikelihoodFunction
LogLikelihoodFCN< ROOT::Math::IMultiGradFunction, ROOT::Math::IParamMultiFunction > LogLikelihoodGradFunction
static double EvalLogL(const IModelFunctionTempl< double > &func, const UnBinData &data, const double *p, int iWeight, bool extended, unsigned int &nPoints, ROOT::Fit::ExecutionPolicy executionPolicy, unsigned nChunks=0)
static void EvalLogLGradient(const IModelFunctionTempl< double > &func, const UnBinData &data, const double *p, double *g, unsigned int &nPoints, ROOT::Fit::ExecutionPolicy executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial, unsigned nChunks=0)