36 void line(
double t,
const double *p,
double &
x,
double &
y,
double &
z) {
56 double distance2(
double x,
double y,
double z,
const double *p) {
70 double * x = fGraph->
GetX();
71 double * y = fGraph->
GetY();
72 double * z = fGraph->
GetZ();
73 int npoints = fGraph->
GetN();
75 for (
int i = 0; i < npoints; ++i) {
76 double d = distance2(x[i],y[i],z[i],par);
80 std::cout <<
"Total Initial distance square = " << sum << std::endl;
104 double p0[4] = {10,20,1,2};
126 SumDistance2 sdist(gr);
129 double pStart[4] = {1,1,1,1};
130 fitter.
SetFCN(fcn,pStart);
134 bool ok = fitter.
FitFCN();
136 Error(
"line3Dfit",
"Line3D Fit failed");
142 std::cout <<
"Total final distance square " << result.
MinFcnValue() << std::endl;
143 result.
Print(std::cout);
149 const double * parFit = result.
GetParams();
156 for (
int i = 0; i <
n;++i) {
157 double t = t0+ dt*i/
n;
159 line(t,parFit,x,y,z);
167 for (
int i = 0; i <
n;++i) {
168 double t = t0+ dt*i/
n;
static long int sum(long int i)
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Documentation for class Functor class.
R__EXTERN TStyle * gStyle
bool FitFCN(unsigned int npar, Function &fcn, const double *params=0, unsigned int dataSize=0, bool chi2fit=false)
Fit using the a generic FCN function as a C++ callable object implementing double () (const double *)...
virtual void Draw(Option_t *option="P0")
Specific drawing options can be used to paint a TGraph2D:
A 3-dimensional polyline.
double MinFcnValue() const
Return value of the objective function (chi2 or likelihood) used in the fit.
TRObject operator()(const T1 &t1) const
const ParameterSettings & ParSettings(unsigned int i) const
get the parameter settings for the i-th parameter (const method)
const FitResult & Result() const
get fit result
int main(int argc, char **argv)
const FitConfig & Config() const
access to the fit configuration (const method)
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Class describing a generic displacement vector in 3 dimensions.
void SetStepSize(double err)
set the step size
Fitter class, entry point for performing all type of fits.
void SetOptFit(Int_t fit=1)
The type of information about fit parameters printed in the histogram statistics box can be selected ...
const double * GetParams() const
parameter values (return const pointer)
T Mag2(const SVector< T, D > &rhs)
Vector magnitude square Template to compute .
R__EXTERN TRandom * gRandom
virtual void Draw(Option_t *option="")
Draw this 3-D polyline with its current attributes.
SVector< T, 3 > Cross(const SVector< T, 3 > &lhs, const SVector< T, 3 > &rhs)
Vector Cross Product (only for 3-dim vectors) .
class containg the result of the fit and all the related information (fitted parameter values...
virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z)
Set point n to x, y, z.
static const double x1[5]
virtual void SetPoint(Int_t point, Double_t x, Double_t y, Double_t z)
Sets point number n.
virtual Double_t Uniform(Double_t x1=1)
Returns a uniform deviate on the interval (0, x1).
you should not use this method at all Int_t Int_t z
bool SetFCN(unsigned int npar, Function &fcn, const double *params=0, unsigned int dataSize=0, bool chi2fit=false)
Set a generic FCN function as a C++ callable object implementing double () (const double *) Note that...
void Print(std::ostream &os, bool covmat=false) const
print the result and optionaly covariance matrix and correlations
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
SVector< T, D > Unit(const SVector< T, D > &rhs)
Unit.
Graphics object made of three arrays X, Y and Z with the same number of points each.
void Error(ErrorHandler_t func, int code, const char *va_(fmt),...)
Write error message and call a handler, if required.
static constexpr double g