13#ifndef CBM_RICH_RING_FITTER_ELLIPSE_MINUIT
14#define CBM_RICH_RING_FITTER_ELLIPSE_MINUIT
17#include "Math/IFunction.h"
29 FCNEllipse2(vector<Double_t>
x, vector<Double_t>
y) : ROOT::Math::IBaseFunctionMultiDim(),
fX(
x),
fY(
y) {}
34 for (UInt_t i = 0; i <
fX.size(); i++) {
41 Double_t
calcE(Int_t i,
const double* par)
const
43 Double_t d1 =
sqrt((
fX[i] - par[0]) * (
fX[i] - par[0]) + (
fY[i] - par[1]) * (
fY[i] - par[1]));
44 Double_t d2 =
sqrt((
fX[i] - par[2]) * (
fX[i] - par[2]) + (
fY[i] - par[3]) * (
fY[i] - par[3]));
45 Double_t ri = d1 + d2 - 2 * par[4];
49 unsigned int NDim()
const {
return 5; }
86 vector<double>
DoFit(
const vector<double>&
x,
const vector<double>&
y);
Base class for concrete ellipse fitting algorithms. Each derived class must implement the method DoFi...
friend fvec sqrt(const fvec &a)
Base class for concrete ellipse fitting algorithms. Each derived class must implement the method DoFi...
This is the implementation of ellipse fitting using MINUIT.
CbmRichRingFitterEllipseMinuit()
Default constructor.
virtual void DoFit(CbmRichRingLight *ring)
Inherited from CbmRichRingFitterBase.
virtual ~CbmRichRingFitterEllipseMinuit()
Standard destructor.
void TransformToRichRing(CbmRichRingLight *ring, const vector< double > &par)
Transform obtained parameters from MINUIT to CbmRichRingLight.
ROOT::Math::IBaseFunctionMultiDim * Clone() const
FCNEllipse2(vector< Double_t > x, vector< Double_t > y)
Double_t calcE(Int_t i, const double *par) const
unsigned int NDim() const
double DoEval(const double *x) const