13 #ifndef ROOT_Fit_PoissonLikelihoodFCN
14 #define ROOT_Fit_PoissonLikelihoodFCN
16 #include "Fit/BasicFCN.h"
47 template<
class DerivFunType,
class ModelFunType = ROOT::Math::IParamMultiFunction>
51 typedef typename ModelFunType::BackendType
T;
52 typedef BasicFCN<DerivFunType,ModelFunType,BinData>
BaseFCN;
63 PoissonLikelihoodFCN (
const std::shared_ptr<BinData> & data,
const std::shared_ptr<IModelFunction> & func,
int weight = 0,
bool extended =
true, const ::ROOT::Fit::ExecutionPolicy &executionPolicy = ::ROOT::Fit::ExecutionPolicy::kSerial ) :
68 fGrad ( std::vector<double> ( func->NPar() ) ),
80 fGrad ( std::vector<double> ( func.NPar() ) ),
94 BaseFCN(f.DataPtr(), f.ModelFunctionPtr() ),
106 SetData(rhs.DataPtr() );
107 SetModelFunction(rhs.ModelFunctionPtr() );
123 virtual double DataElement(
const double * x,
unsigned int i,
double * g)
const {
124 if (i==0) this->UpdateNCalls();
129 virtual void Gradient(
const double *x,
double *g)
const
164 virtual double DoEval (
const double * x)
const {
165 this->UpdateNCalls();
171 virtual double DoDerivative(
const double * x,
unsigned int icoord )
const {
173 return fGrad[icoord];
virtual unsigned int NFitPoints() const
PoissonLikelihoodFCN(const BinData &data, const IModelFunction &func, int weight=0, bool extended=true, const ::ROOT::Fit::ExecutionPolicy &executionPolicy=::ROOT::Fit::ExecutionPolicy::kSerial)
::ROOT::Math::IParamMultiFunctionTempl< T > IModelFunction
virtual double DoDerivative(const double *x, unsigned int icoord) const
virtual double DataElement(const double *x, unsigned int i, double *g) const
i-th likelihood element and its gradient
::ROOT::Math::BasicFitMethodFunction< DerivFunType > BaseObjFunction
PoissonLikelihoodFCN(const PoissonLikelihoodFCN &f)
void UseSumOfWeightSquare(bool on=true)
virtual BaseFunction * Clone() const
clone the function (need to return Base for Windows)
virtual ~PoissonLikelihoodFCN()
virtual double DoEval(const double *x) const
PoissonLikelihoodFCN(const std::shared_ptr< BinData > &data, const std::shared_ptr< IModelFunction > &func, int weight=0, bool extended=true, const ::ROOT::Fit::ExecutionPolicy &executionPolicy=::ROOT::Fit::ExecutionPolicy::kSerial)
BaseObjFunction::BaseFunction BaseFunction
virtual void Gradient(const double *x, double *g) const
evaluate gradient
::ROOT::Fit::ExecutionPolicy fExecutionPolicy
BaseObjFunction::Type_t Type_t
PoissonLikelihoodFCN & operator=(const PoissonLikelihoodFCN &rhs)
ModelFunType::BackendType T
BasicFCN< DerivFunType, ModelFunType, BinData > BaseFCN
std::vector< double > fGrad
virtual BaseObjFunction::Type_t Type() const
get type of fit method function
Type_t
enumeration specyfing the possible fit method types
FunctionType::BaseFunc BaseFunction
PoissonLikelihoodFCN< ROOT::Math::IMultiGradFunction, ROOT::Math::IParamMultiFunction > PoissonLLGradFunction
PoissonLikelihoodFCN< ROOT::Math::IMultiGenFunction, ROOT::Math::IParamMultiFunction > PoissonLLFunction
static double EvalPoissonBinPdf(const IModelFunctionTempl< double > &func, const BinData &data, const double *p, unsigned int i, double *g)
evaluate the pdf (Poisson) contribution to the logl (return actually log of pdf) and its gradient
static double EvalPoissonLogL(const IModelFunctionTempl< double > &func, const BinData &data, const double *p, int iWeight, bool extended, unsigned int &nPoints, ROOT::Fit::ExecutionPolicy executionPolicy, unsigned nChunks=0)
static void EvalPoissonLogLGradient(const IModelFunctionTempl< double > &func, const BinData &data, const double *p, double *g, unsigned int &nPoints, ROOT::Fit::ExecutionPolicy executionPolicy=ROOT::Fit::ExecutionPolicy::kSerial, unsigned nChunks=0)