10 #ifndef ROOT_Minuit2_FumiliStandardChi2FCN
11 #define ROOT_Minuit2_FumiliStandardChi2FCN
43 class FumiliStandardChi2FCN :
public FumiliChi2FCN {
65 FumiliStandardChi2FCN(
const ParametricFunction& modelFCN,
const std::vector<double>& meas,
66 const std::vector<double>& pos,
67 const std::vector<double>& mvar)
69 this->SetModelFunction(modelFCN);
71 assert(meas.size() == pos.size());
72 assert(meas.size() == mvar.size());
74 std::vector<double> x(1);
75 unsigned int n = mvar.size();
76 fPositions.reserve( n);
79 for (
unsigned int i = 0; i < n; ++i)
82 fPositions.push_back(x);
87 fInvErrors[i] = 1.0/std::sqrt(mvar[i]);
110 FumiliStandardChi2FCN(
const ParametricFunction& modelFCN,
const std::vector<double>& meas,
111 const std::vector<std::vector<double> >& pos,
112 const std::vector<double>& mvar)
114 this->SetModelFunction(modelFCN);
116 assert(meas.size() == pos.size());
117 assert(meas.size() == mvar.size());
118 fMeasurements = meas;
121 unsigned int n = mvar.size();
122 fInvErrors.resize(n);
123 for (
unsigned int i = 0; i < n; ++i)
129 fInvErrors[i] = 1.0/std::sqrt(mvar[i]);
137 ~FumiliStandardChi2FCN() {}
160 std::vector<double> Elements(
const std::vector<double>& par)
const;
174 virtual const std::vector<double> & GetMeasurement(
int Index)
const;
186 virtual int GetNumberOfMeasurements()
const;
199 virtual void EvaluateAll(
const std::vector<double> & par );
205 std::vector<double> fMeasurements;
207 std::vector<std::vector<double> > fPositions;
208 std::vector<double> fInvErrors;
215 #endif // ROOT_Minuit2_FumiliStandardChi2FCN