10 #ifndef ROOT_Minuit2_FumiliChi2FCN
11 #define ROOT_Minuit2_FumiliChi2FCN
52 class FumiliChi2FCN :
public FumiliFCNBase {
58 virtual ~FumiliChi2FCN() {}
69 void SetModelFunction(
const ParametricFunction& modelFCN) { fModelFunction = &modelFCN; }
81 const ParametricFunction * ModelFunction()
const {
return fModelFunction; }
99 virtual std::vector<double> Elements(
const std::vector<double>& par)
const = 0;
115 virtual const std::vector<double> & GetMeasurement(
int Index)
const = 0;
127 virtual int GetNumberOfMeasurements()
const = 0;
146 double operator()(
const std::vector<double>& par)
const {
148 double chiSquare = 0.0;
149 std::vector<double> vecElements = Elements(par);
150 unsigned int vecElementsSize = vecElements.size();
152 for (
unsigned int i = 0; i < vecElementsSize; ++i)
153 chiSquare += vecElements[i]*vecElements[i];
166 virtual double Up()
const {
return 1.0; }
171 const ParametricFunction *fModelFunction =
nullptr;
181 #endif // ROOT_Minuit2_FumiliChi2FCN