BornAgain  1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType > Class Template Reference

Description

template<class DerivFunType, class ModelFunType = ROOT::Math::IParamMultiFunction>
class ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >

class evaluating the log likelihood for binned Poisson likelihood fits it is template to distinguish gradient and non-gradient case

Definition at line 48 of file PoissonLikelihoodFCN.h.

Inheritance diagram for ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >:
[legend]
Collaboration diagram for ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >:
[legend]

Public Types

typedef BasicFCN< DerivFunType, ModelFunType, BinDataBaseFCN
 
typedef BaseObjFunction::BaseFunction BaseFunction
 
typedef ::ROOT::Math::BasicFitMethodFunction< DerivFunType > BaseObjFunction
 
typedef ::ROOT::Math::IParamMultiFunctionTempl< TIModelFunction
 
typedef ModelFunType::BackendType T
 
typedef BaseObjFunction::Type_t Type_t
 

Public Member Functions

 PoissonLikelihoodFCN (const BinData &data, const IModelFunction &func, int weight=0, bool extended=true, const ::ROOT::Fit::ExecutionPolicy &executionPolicy=::ROOT::Fit::ExecutionPolicy::kSerial)
 
 PoissonLikelihoodFCN (const PoissonLikelihoodFCN &f)
 
 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)
 
virtual ~PoissonLikelihoodFCN ()
 
virtual BaseFunctionClone () const
 clone the function (need to return Base for Windows) More...
 
virtual double DataElement (const double *x, unsigned int i, double *g) const
 i-th likelihood element and its gradient More...
 
virtual void Gradient (const double *x, double *g) const
 evaluate gradient More...
 
bool IsWeighted () const
 
virtual unsigned int NFitPoints () const
 
PoissonLikelihoodFCNoperator= (const PoissonLikelihoodFCN &rhs)
 
virtual BaseObjFunction::Type_t Type () const
 get type of fit method function More...
 
void UseSumOfWeights ()
 
void UseSumOfWeightSquare (bool on=true)
 

Private Member Functions

virtual double DoDerivative (const double *x, unsigned int icoord) const
 
virtual double DoEval (const double *x) const
 

Private Attributes

::ROOT::Fit::ExecutionPolicy fExecutionPolicy
 
std::vector< double > fGrad
 
bool fIsExtended
 
unsigned int fNEffPoints
 
int fWeight
 

Member Typedef Documentation

◆ BaseFCN

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef BasicFCN<DerivFunType,ModelFunType,BinData> ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::BaseFCN

Definition at line 52 of file PoissonLikelihoodFCN.h.

◆ BaseFunction

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef BaseObjFunction::BaseFunction ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::BaseFunction

Definition at line 55 of file PoissonLikelihoodFCN.h.

◆ BaseObjFunction

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef ::ROOT::Math::BasicFitMethodFunction<DerivFunType> ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::BaseObjFunction

Definition at line 54 of file PoissonLikelihoodFCN.h.

◆ IModelFunction

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef ::ROOT::Math::IParamMultiFunctionTempl<T> ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::IModelFunction

Definition at line 57 of file PoissonLikelihoodFCN.h.

◆ T

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef ModelFunType::BackendType ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::T

Definition at line 51 of file PoissonLikelihoodFCN.h.

◆ Type_t

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
typedef BaseObjFunction::Type_t ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Type_t

Definition at line 58 of file PoissonLikelihoodFCN.h.

Constructor & Destructor Documentation

◆ PoissonLikelihoodFCN() [1/3]

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::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 
)
inline

Constructor from unbin data set and model function (pdf)

Definition at line 63 of file PoissonLikelihoodFCN.h.

63  :
64  BaseFCN( data, func),
65  fIsExtended(extended),
66  fWeight(weight),
67  fNEffPoints(0),
68  fGrad ( std::vector<double> ( func->NPar() ) ),
69  fExecutionPolicy(executionPolicy)
70  { }
::ROOT::Fit::ExecutionPolicy fExecutionPolicy
BasicFCN< DerivFunType, ModelFunType, BinData > BaseFCN

Referenced by ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Clone().

◆ PoissonLikelihoodFCN() [2/3]

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::PoissonLikelihoodFCN ( const BinData data,
const IModelFunction func,
int  weight = 0,
bool  extended = true,
const ::ROOT::Fit::ExecutionPolicy &  executionPolicy = ::ROOT::Fit::ExecutionPolicy::kSerial 
)
inline

Constructor from unbin data set and model function (pdf) managed by the users

Definition at line 75 of file PoissonLikelihoodFCN.h.

75  :
76  BaseFCN(std::shared_ptr<BinData>(const_cast<BinData*>(&data), DummyDeleter<BinData>()), std::shared_ptr<IModelFunction>(dynamic_cast<IModelFunction*>(func.Clone() ) ) ),
77  fIsExtended(extended),
78  fWeight(weight),
79  fNEffPoints(0),
80  fGrad ( std::vector<double> ( func.NPar() ) ),
81  fExecutionPolicy(executionPolicy)
82  { }
::ROOT::Math::IParamMultiFunctionTempl< T > IModelFunction

◆ ~PoissonLikelihoodFCN()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::~PoissonLikelihoodFCN ( )
inlinevirtual

Destructor (no operations)

Definition at line 88 of file PoissonLikelihoodFCN.h.

88 {}

◆ PoissonLikelihoodFCN() [3/3]

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::PoissonLikelihoodFCN ( const PoissonLikelihoodFCN< DerivFunType, ModelFunType > &  f)
inline

Copy constructor

Definition at line 93 of file PoissonLikelihoodFCN.h.

93  :
94  BaseFCN(f.DataPtr(), f.ModelFunctionPtr() ),
95  fIsExtended(f.fIsExtended ),
96  fWeight( f.fWeight ),
97  fNEffPoints( f.fNEffPoints ),
98  fGrad( f.fGrad),
99  fExecutionPolicy(f.fExecutionPolicy)
100  { }

Member Function Documentation

◆ Clone()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual BaseFunction* ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Clone ( ) const
inlinevirtual

clone the function (need to return Base for Windows)

Definition at line 117 of file PoissonLikelihoodFCN.h.

117 { return new PoissonLikelihoodFCN(*this); }
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)

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::PoissonLikelihoodFCN().

Here is the call graph for this function:

◆ DataElement()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual double ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::DataElement ( const double *  x,
unsigned int  i,
double *  g 
) const
inlinevirtual

i-th likelihood element and its gradient

Definition at line 123 of file PoissonLikelihoodFCN.h.

123  {
124  if (i==0) this->UpdateNCalls();
125  return FitUtil::Evaluate<typename BaseFCN::T>::EvalPoissonBinPdf(BaseFCN::ModelFunction(), BaseFCN::Data(), x, i, g);
126  }
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
Definition: FitUtil.h:1493

References ROOT::Fit::FitUtil::Evaluate< T >::EvalPoissonBinPdf().

Here is the call graph for this function:

◆ DoDerivative()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual double ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::DoDerivative ( const double *  x,
unsigned int  icoord 
) const
inlineprivatevirtual

Definition at line 171 of file PoissonLikelihoodFCN.h.

171  {
172  Gradient(x, &fGrad[0]);
173  return fGrad[icoord];
174  }
virtual void Gradient(const double *x, double *g) const
evaluate gradient

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fGrad, and ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Gradient().

Here is the call graph for this function:

◆ DoEval()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual double ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::DoEval ( const double *  x) const
inlineprivatevirtual

Evaluation of the function (required by interface)

Definition at line 164 of file PoissonLikelihoodFCN.h.

164  {
165  this->UpdateNCalls();
166  return FitUtil::Evaluate<T>::EvalPoissonLogL(BaseFCN::ModelFunction(), BaseFCN::Data(), x, fWeight, fIsExtended,
168  }
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)
Definition: FitUtil.h:1468

References ROOT::Fit::FitUtil::Evaluate< T >::EvalPoissonLogL(), ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fExecutionPolicy, ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fIsExtended, ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fNEffPoints, and ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fWeight.

Here is the call graph for this function:

◆ Gradient()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual void ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Gradient ( const double *  x,
double *  g 
) const
inlinevirtual

evaluate gradient

Definition at line 129 of file PoissonLikelihoodFCN.h.

130  {
131  // evaluate the Poisson gradient
132  FitUtil::Evaluate<typename BaseFCN::T>::EvalPoissonLogLGradient(BaseFCN::ModelFunction(), BaseFCN::Data(), x, g,
134  }
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)
Definition: FitUtil.h:1498

References ROOT::Fit::FitUtil::Evaluate< T >::EvalPoissonLogLGradient(), ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fExecutionPolicy, and ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fNEffPoints.

Referenced by ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::DoDerivative().

Here is the call graph for this function:

◆ IsWeighted()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
bool ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::IsWeighted ( ) const
inline

Definition at line 139 of file PoissonLikelihoodFCN.h.

139 { return (fWeight != 0); }

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fWeight.

◆ NFitPoints()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual unsigned int ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::NFitPoints ( ) const
inlinevirtual

◆ operator=()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
PoissonLikelihoodFCN& ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::operator= ( const PoissonLikelihoodFCN< DerivFunType, ModelFunType > &  rhs)
inline

Assignment operator

Definition at line 105 of file PoissonLikelihoodFCN.h.

105  {
106  SetData(rhs.DataPtr() );
107  SetModelFunction(rhs.ModelFunctionPtr() );
108  fNEffPoints = rhs.fNEffPoints;
109  fGrad = rhs.fGrad;
110  fIsExtended = rhs.fIsExtended;
111  fWeight = rhs.fWeight;
112  fExecutionPolicy = rhs.fExecutionPolicy;
113  }

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fExecutionPolicy, ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fGrad, ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fIsExtended, ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fNEffPoints, and ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fWeight.

◆ Type()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
virtual BaseObjFunction::Type_t ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::Type ( ) const
inlinevirtual

◆ UseSumOfWeights()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
void ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::UseSumOfWeights ( )
inline

Definition at line 142 of file PoissonLikelihoodFCN.h.

142  {
143  if (fWeight == 0) return; // do nothing if it was not weighted
144  fWeight = 1;
145  }

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fWeight.

◆ UseSumOfWeightSquare()

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
void ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::UseSumOfWeightSquare ( bool  on = true)
inline

Definition at line 149 of file PoissonLikelihoodFCN.h.

149  {
150  if (fWeight == 0) return; // do nothing if it was not weighted
151  if (on) fWeight = 2;
152  else fWeight = 1;
153  }

References ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fWeight.

Member Data Documentation

◆ fExecutionPolicy

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
::ROOT::Fit::ExecutionPolicy ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fExecutionPolicy
private

◆ fGrad

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
std::vector<double> ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fGrad
mutableprivate

◆ fIsExtended

template<class DerivFunType , class ModelFunType = ROOT::Math::IParamMultiFunction>
bool ROOT::Fit::PoissonLikelihoodFCN< DerivFunType, ModelFunType >::fIsExtended
private

◆ fNEffPoints

◆ fWeight


The documentation for this class was generated from the following file: