10 #ifndef ROOT_Minuit2_FumiliMaximumLikelihoodFCN
11 #define ROOT_Minuit2_FumiliMaximumLikelihoodFCN
51 class FumiliMaximumLikelihoodFCN :
public FumiliFCNBase {
55 FumiliMaximumLikelihoodFCN() {}
57 virtual ~FumiliMaximumLikelihoodFCN() {}
68 void SetModelFunction(
const ParametricFunction& modelFCN) { fModelFunction = &modelFCN; }
80 const ParametricFunction* ModelFunction()
const {
return fModelFunction; }
98 virtual std::vector<double> Elements(
const std::vector<double>& par)
const = 0;
114 virtual const std::vector<double> & GetMeasurement(
int Index)
const = 0;
126 virtual int GetNumberOfMeasurements()
const = 0;
144 double operator()(
const std::vector<double>& par)
const {
146 double sumoflogs = 0.0;
147 std::vector<double> vecElements = Elements(par);
148 unsigned int vecElementsSize = vecElements.size();
150 for (
unsigned int i = 0; i < vecElementsSize; ++i) {
151 double tmp = vecElements[i];
154 sumoflogs -= ROOT::Math::Util::EvalLog(tmp);
170 virtual double Up()
const {
return 0.5; }
175 const ParametricFunction *fModelFunction;
183 #endif // ROOT_Minuit2_FumiliMaximumLikelihoodFCN