162 for (
int i = 0; i<5; ++i)
fINDFLG[i] = 0;
221 gROOT->GetListOfSpecials()->Remove(
this);
353 if (
fFCN) (*fFCN)(npar,grad,fval,par,flag);
371 return f1->EvalPar(
X,
fA);
394 static TString clower =
"abcdefghijklmnopqrstuvwxyz";
395 static TString cupper =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
396 const Int_t nntot = 40;
397 const char *cname[nntot] = {
442 if (nargs<=0)
fCmPar[0] = 0;
445 if(i<nargs)
fCmPar[i] = args[i];
457 for (ind = 0; ind < nntot; ++ind) {
458 if (strncmp(ctemp.
Data(),cname[ind],3) == 0)
break;
460 if (ind==nntot)
return -3;
461 if (
fCword(0,4) ==
"MINO") ind=3;
463 case 0:
case 3:
case 2:
case 28:
485 if (nargs<1)
return -1;
486 for (i=0;i<nargs;i++) {
492 if (nargs<1)
return 0;
494 for (i=0;i<
fNpar;i++)
503 if (nargs<1)
return -1;
504 for (i=0;i<nargs;i++) {
517 Printf(
"SAVe command is obsolete");
522 {
if(nargs<1)
return -1;
543 case 26:
case 27:
case 29:
case 30:
case 31:
case 32:
545 case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
547 Printf(
"Obsolete command. Use corresponding SET command instead");
560 static Int_t nntot = 30;
561 static const char *cname[30] = {
593 TString cfname, cmode, ckind, cwarn, copt, ctemp, ctemp2;
596 for (ind = 0; ind < nntot; ++ind) {
600 if (strstr(ctemp2.
Data(),ckind.
Data()))
break;
603 if(ctemp2.
Contains(
"SET")) setCommand=
true;
606 if (ind>=nntot)
return -3;
610 if(!setCommand)
Printf(
"FCN=%f",
fS);
614 if (nargs<2 && setCommand)
return -1;
620 if(parnum<0 || parnum>=
fNpar)
return -2;
625 if(parnum<0 || parnum>=
fNpar)
return -2;
628 for (i=0;i<
fNpar;i++)
644 Printf(
"Limits for param %s: Low=%E, High=%E",
648 if(parnum<0 || parnum>=
fNpar)
return -1;
653 if(uplim==lolim)
return -1;
663 fAMN[parnum] = lolim;
664 fAMX[parnum] = uplim;
666 Printf(
"Limits for param %s Low=%E, High=%E",
673 if(setCommand)
return 0;
674 Printf(
"\nCovariant matrix ");
676 for (i=0;i<
fNpar;i++)
if(
fPL0[i]>0.) nn++;
678 for(;
fPL0[nnn]<=0.;nnn++) { }
679 printf(
"%5s: ",
fANames[nnn++].Data());
680 for (
Int_t j=0;j<=i;j++)
681 printf(
"%11.2E",
fZ[
l++]);
682 std::cout<<std::endl;
684 std::cout<<std::endl;
688 if(setCommand)
return 0;
689 Printf(
"\nGlobal correlation factors (maximum correlation of the parameter\n with arbitrary linear combination of other parameters)");
690 for(i=0;i<
fNpar;i++) {
691 printf(
"%5s: ",
fANames[i].Data());
694 std::cout<<std::endl;
699 if(!setCommand)
return 0;
703 if(!setCommand)
return 0;
715 if(!setCommand)
return 0;
719 if(!setCommand)
return 0;
736 Printf(
"Relative floating point precision RP=%E",
fRP);
740 if (pres<1e-5 && pres>1
e-34)
fRP=pres;
750 if(setCommand)
return 0;
751 Printf(
"FUMILI-ROOT version 0.1");
756 if(!setCommand)
return 0;
760 if(!setCommand)
return 0;
776 if(ipar>=0 && ipar<
fNpar &&
fPL0[ipar]>0.) {
797 if (i < 0 || i >=
fNpar || j < 0 || j >=
fNpar) {
798 Error(
"GetCovarianceMatrixElement",
"Illegal arguments i=%d, j=%d",i,j);
829 if (ipar<0 || ipar>=
fNpar)
return 0;
838 if (ipar<0 || ipar>=
fNpar)
return 0;
839 else return fA[ipar];
855 if (ipar<0 || ipar>=
fNpar) {
862 strcpy(cname,
fANames[ipar].Data());
875 if (ipar < 0 || ipar >
fNpar)
return "";
887 if (ipar<0 || ipar>=
fNpar) {
913 if(
fPL0[ii]>0.) nvpar++;
954 Int_t i, k,
l, ii, ki, li, kk, ni, ll, nk, nl, ir, lk;
963 ap = 1.0e0 / (aps * aps);
965 for (i = 1; i <=
n; ++i) {
968 if (pl_1[ir] <= 0.0e0)
goto L1;
971 ni = i * (i - 1) / 2;
974 if (z_1[ii] <= rp *
TMath::Abs(r_1[ir]) || z_1[ii] <= ap) {
977 z_1[ii] = 1.0e0 / sqrt(z_1[ii]);
980 if (nl - ni <= 0)
goto L5;
990 if (i -
n >= 0)
goto L12;
994 nk = k * (k - 1) / 2;
997 d = z_1[kk] * z_1[ii];
1003 z_1[ll] -= z_1[li] *
c;
1006 if (
l - i <= 0)
goto L9;
1011 z_1[ll] -= z_1[li] *
d;
1014 if (
l <= 0)
goto L10;
1018 if (k - i - 1 <= 0)
goto L11;
1024 for (i = 1; i <=
n; ++i) {
1025 for (k = i; k <=
n; ++k) {
1026 nl = k * (k - 1) / 2;
1029 for (
l = k;
l <=
n; ++
l) {
1032 d += z_1[li] * z_1[lk];
1035 ki = k * (k - 1) / 2 + i;
1044 for (i = 1; i <= k; ++i) {
1047 if (pl_1[ir] <= 0.0e0) {
1063 if(ipar < 0 || ipar >=
fNpar) {
1064 Warning(
"IsFixed",
"Illegal parameter number :%d",ipar);
1073 std::cout <<
name <<
" : {";
1074 for (
int i = 0; i <
n; i++)
1075 std::cout <<
" " <<
x[i];
1076 std::cout <<
" }\n";
1080 std::cout <<
name <<
" : \n";
1082 for (
int i = 0; i <
n; i++) {
1083 for (
int j = 0; j <= i; j++) {
1084 std::cout <<
" " <<
x[index];
1087 std::cout << std::endl;
1122 for( i = 0; i <
fNpar; i++) {
1127 Int_t nn2,
n, fixFLG, ifix1, fi, nn3, nn1, n0;
1151 for( i=0; i <
n; i++) {
1168 std::cout <<
"New iteration - nfcn " <<
fNfcn <<
" nn1 = " << nn1 <<
" fGT " <<
fGT <<
"\n";
1178 for( i = 0; i <
n; i++) {
1191 for( i=0; i < nn0; i++)
fZ[i]=0.;
1203 if(!ijkl)
return 10;
1211 for( i=0; i < nn0; i++)
fZ0[i] =
fZ[i];
1218 if (
fDEBUG) std::cout <<
" factor t is " << -
fGT/t << std::endl;
1219 if( 0.59*t < -
fGT)
goto L19;
1221 if (t < 0.25 ) t = 0.25;
1229 for( i = 0; i <
n; i++) {
1239 std::cout <<
"change all PL and steps by factor t " << t << std::endl;
1248 std::cout <<
"exit iteration (L19) t = " << t <<
" fGT = " <<
fGT << std::endl;
1253 printf(
"trying to execute an illegal jump at L85\n");
1264 for( i = 0; i <
n; i++) {
1271 if ((
fA[i] >=
fAMX[i] &&
fGr[i] < 0.) ||
1274 std::cout <<
"Fix parameters with values outside boundary and negative derivative " << std::endl;
1280 for( j=0; j <= i; j++) {
1285 fZ[k2 -1] =
fZ0[k1 -1];
1302 for( i = 0; i <
n; i++) {
1319 std::cout <<
"Some problems inverting the matrix - go back and try reducing again" << std::endl;
1323 fixFLG = fixFLG + 1;
1329 PrintMatrix(
"Approximate Covariance matrix (inverse of Hessian ) ",n0,
fZ);
1336 for( i = 0; i <
n; i++) {
1340 for(
l = 0;
l <
n;
l++) {
1344 if (i1 <= l1 ) k=l1*(l1-1)/2+i1;
1345 else k=i1*(i1-1)/2+l1;
1363 for( i = 0; i <
n; i++)
1381 std::cout <<
"Parameter " << i <<
" is outside bounds "
1382 << akap <<
" " << afix <<
" " << ifix << std::endl;
1391 fixFLG = fixFLG + 1;
1395 std::cout <<
"Parameter " << ifix <<
" is the worst - fix it and repeat step calculation " << std::endl;
1409 for( i = 0; i <
n; i++) {
1412 abi =
fA[i] +
fPL[i];
1416 abi =
fA[i] -
fPL[i];
1426 std::cout <<
"Reduce parallelepide for "
1427 << i <<
" from " <<
fPL[i] <<
" to " << bi << std::endl;
1435 std::cout <<
"step out of bound for " << i <<
" reduce to " << al << std::endl;
1449 std::cout <<
"Compute now corrected step - min found correction factor " << alambd <<
" max of akappa " <<
fAKAPPA <<
" nn2 " << nn2 << std::endl;
1454 if (alambd > .0) amb = 0.25/alambd;
1455 for( i = 0; i <
n; i++) {
1460 std::cout <<
"increase parallelipid 4-times for " << i << std::endl;
1473 std::cout <<
"after applying step reduction of " << alambd <<
" expected function change is " <<
fGT << std::endl;
1496 std::cout <<
"We have fixed some params - released and repeat " << std::endl;
1535 for ( i = 0; i <
n; i++)
fA[i] =
fA[i] +
fDA[i];
1536 if (imax >= 0)
fA[imax] = aiMAX;
1546 if(
fPL0[ip] > .0) {
1547 for(
Int_t jp = 0; jp <= ip; jp++) {
1558 std::cout <<
"Continue and repeat iteration " << std::endl;
1577 TString colhdu[3],colhdl[3],cx2,cx3;
1580 exitStatus=
"CONVERGED";
1583 exitStatus=
"CONST FCN";
1584 xsexpl=
"****\n* FUNCTION IS NOT DECREASING OR BAD DERIVATIVES\n****";
1587 exitStatus=
"ERRORS INF";
1588 xsexpl=
"****\n* ESTIMATED ERRORS ARE INfiNITE\n****";
1591 exitStatus=
"MAX ITER.";
1592 xsexpl=
"****\n* MAXIMUM NUMBER OF ITERATIONS IS EXCEEDED\n****";
1595 exitStatus=
"ZERO PROBAB";
1596 xsexpl=
"****\n* PROBABILITY OF LIKLIHOOD FUNCTION IS NEGATIVE OR ZERO\n****";
1599 exitStatus=
"UNDEfiNED";
1600 xsexpl=
"****\n* fiT IS IN PROGRESS\n****";
1605 colhdl[0] =
" ERROR ";
1606 colhdu[1] =
" PHYSICAL";
1607 colhdu[2] =
" LIMITS ";
1608 colhdl[1] =
" NEGATIVE ";
1609 colhdl[2] =
" POSITIVE ";
1613 colhdl[0] =
" ERROR ";
1614 colhdu[1] =
" INTERNAL ";
1615 colhdl[1] =
" STEP SIZE ";
1616 colhdu[2] =
" INTERNAL ";
1617 colhdl[2] =
" VALUE ";
1621 colhdl[0] =
" ERROR ";
1622 colhdu[1] =
" STEP ";
1623 colhdl[1] =
" SIZE ";
1624 colhdu[2] =
" fiRST ";
1625 colhdl[2] =
" DERIVATIVE";
1628 colhdu[0] =
" PARABOLIC ";
1629 colhdl[0] =
" ERROR ";
1630 colhdu[1] =
" MINOS ";
1631 colhdu[2] =
"ERRORS ";
1632 colhdl[1] =
" NEGATIVE ";
1633 colhdl[2] =
" POSITIVE ";
1636 Printf(
" FCN=%g FROM FUMILI STATUS=%-10s %9d CALLS OF FCN",
1639 Printf(
" EXT PARAMETER %-14s%-14s%-14s",
1640 (
const char*)colhdu[0].Data()
1641 ,(
const char*)colhdu[1].Data()
1642 ,(
const char*)colhdu[2].Data());
1643 Printf(
" NO. NAME VALUE %-14s%-14s%-14s",
1644 (
const char*)colhdl[0].Data()
1645 ,(
const char*)colhdl[1].Data()
1646 ,(
const char*)colhdl[2].Data());
1660 cx3 =
Form(
"%14.5e",
fA[i]);
1663 cx2 =
" *undefined* ";
1664 cx3 =
" *undefined* ";
1666 if(
fPL0[i]<=0.) { cx2=
" *fixed* ";cx3=
""; }
1667 Printf(
"%4d %-11s%14.5e%14.5e%-14s%-14s",i+1
1677 if(ipar>=0 && ipar<
fNpar &&
fPL0[ipar]<=0.) {
1732 if (ipar<0 || ipar>=
fNpar)
return -1;
1763 Int_t i,j,
l,k2=1,k1,ki=0;
1797 fS =
fS + (
y*
y/(sig*sig))*.5;
1800 for (i=0;i<
fNpar;i++) {
1803 fGr[i] += df[
n]*(
y/sig);
1810 fZ[
l++] += df[i]*df[j];
1845 npar =
f1->GetNpar();
1847 if(flag == 9)
return;
1858 if (nd > 2)
x[2] = cache[4];
1859 if (nd > 1)
x[1] = cache[3];
1863 fu =
f1->EvalPar(
x,u);
1870 for (j=0;j<npar;j++) {
1874 gin[j] += df[
n]*fsum;
1880 for (
Int_t k=0;k<=j;k++)
1881 zik[
l++] += df[j]*df[k];
1887 f1->SetNumberFitPoints(npfit);
1912 npar =
f1->GetNpar();
1914 if(flag == 9)
return;
1926 f1->SetParameters(u);
1928 fu =
f1->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3])/cache[3];
1929 }
else if (nd < 3) {
1930 fu = ((
TF2*)
f1)->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3],cache[4] - 0.5*cache[5],cache[4] + 0.5*cache[5])/(cache[3]*cache[5]);
1932 fu = ((
TF3*)
f1)->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3],cache[4] - 0.5*cache[5],cache[4] + 0.5*cache[5],cache[6] - 0.5*cache[7],cache[6] + 0.5*cache[7])/(cache[3]*cache[5]*cache[7]);
1940 for (j=0;j<npar;j++) {
1944 gin[j] += df[
n]*fsum;
1950 for (
Int_t k=0;k<=j;k++)
1951 zik[
l++] += df[j]*df[k];
1957 f1->SetNumberFitPoints(npfit);
1993 npar =
f1->GetNpar();
1995 if(flag == 9)
return;
1997 if (flag == 2)
for (j=0;j<npar;j++) dersum[j] = gin[j] = 0;
2004 if (nd > 2)
x[2] = cache[4];
2005 if (nd > 1)
x[1] = cache[3];
2009 fu =
f1->EvalPar(
x,u);
2012 for (j=0;j<npar;j++) {
2017 if (fu < 1.e-9) fu = 1.e-9;
2026 for (j=0;j<npar;j++) {
2028 df[
n] = df[j]*(icu/fu-1);
2037 for (
Int_t k=0;k<=j;k++)
2038 zik[
l++] += df[j]*df[k];
2045 f1->SetNumberFitPoints(npfit);
2078 npar =
f1->GetNpar();
2080 if(flag == 9) {
delete [] df;
return;}
2081 if (flag == 2)
for (j=0;j<npar;j++) dersum[j] = gin[j] = 0;
2088 if (nd > 2)
x[2] = cache[4];
2089 if (nd > 1)
x[1] = cache[3];
2094 fu =
f1->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3])/cache[3];
2095 }
else if (nd < 3) {
2096 fu = ((
TF2*)
f1)->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3],cache[4] - 0.5*cache[5],cache[4] + 0.5*cache[5])/(cache[3]*cache[5]);
2098 fu = ((
TF3*)
f1)->Integral(cache[2] - 0.5*cache[3],cache[2] + 0.5*cache[3],cache[4] - 0.5*cache[5],cache[4] + 0.5*cache[5],cache[6] - 0.5*cache[7],cache[6] + 0.5*cache[7])/(cache[3]*cache[5]*cache[7]);
2102 for (j=0;j<npar;j++) {
2107 if (fu < 1.e-9) fu = 1.e-9;
2116 for (j=0;j<npar;j++) {
2118 df[
n] = df[j]*(icu/fu-1);
2127 for (
Int_t k=0;k<=j;k++)
2128 zik[
l++] += df[j]*df[k];
2135 f1->SetNumberFitPoints(npfit);
2207 Int_t i, bin, npfits=0;
2217 npar =
f1->GetNpar();
2221 if(flag == 9)
return;
2229 for (bin=0;bin<
n;bin++) {
2231 if (!
f1->IsInside(
x))
continue;
2234 fu =
f1->EvalPar(
x,u);
2241 exh =
gr->GetErrorXhigh(bin);
2242 exl =
gr->GetErrorXlow(bin);
2243 ey =
gr->GetErrorY(bin);
2244 if (exl < 0) exl = 0;
2245 if (exh < 0) exh = 0;
2247 if (exh > 0 && exl > 0) {
2249 eux = 0.5*(exl + exh)*
f1->Derivative(
x[0], u);
2253 if (eu <= 0) eu = 1;
2258 fsum = (fu-cu)/eusq;
2259 for (i=0;i<npar;i++) {
2263 gin[i] += df[
n]*fsum;
2269 for (
Int_t j=0;j<=i;j++)
2270 zik[
l++] += df[i]*df[j];
2275 f1->SetNumberFitPoints(npfits);
int Int_t
Signed integer 4 bytes (int).
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
const char Option_t
Option string (const char).
static const Double_t gMAXDOUBLE
void H1FitChisquareFumili(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Chisquare method.
void PrintMatrix(const char *name, int n, double *x)
void GraphFitChisquareFumili(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for Graphs using a Chisquare method.
void H1FitLikelihoodFumili(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Likelihood method.
static const Double_t gMINDOUBLE
void PrintVector(const char *name, int n, double *x)
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
static void RejectPoint(Bool_t reject=kTRUE)
static Bool_t RejectedPoint()
Double_t GetParameter(Int_t ipar) const override
Return current value of parameter ipar.
void DeleteArrays()
Deallocates memory. Called from destructor TFumili::~TFumili.
Bool_t fNumericDerivatives
Double_t GetParError(Int_t ipar) const override
Return error of parameter ipar.
Bool_t IsFixed(Int_t ipar) const override
Return kTRUE if parameter ipar is fixed, kFALSE otherwise).
Int_t fNED2
K - Length of vector X plus 2 (for chi2).
Double_t GetCovarianceMatrixElement(Int_t i, Int_t j) const override
Return element i,j from the covariance matrix.
Int_t ExecuteCommand(const char *command, Double_t *args, Int_t nargs) override
Execute MINUIT commands.
Int_t fNpar
fNpar - number of parameters
void PrintResults(Int_t k, Double_t p) const override
Prints fit results.
Int_t GetNumberFreeParameters() const override
Return the number of free parameters.
Int_t GetNumberTotalParameters() const override
Return the total number of parameters (free + fixed).
Double_t * GetCovarianceMatrix() const override
Return a pointer to the covariance matrix.
virtual void FitLikelihood(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Likelihood method.
~TFumili() override
TFumili destructor.
Int_t GetStats(Double_t &amin, Double_t &edm, Double_t &errdef, Int_t &nvpar, Int_t &nparx) const override
Return global fit parameters.
Double_t * fEXDA
[fNED12] experimental data poInt_ter
Int_t SGZ()
Evaluates objective function ( chi-square ), gradients and Z-matrix using data provided by user via T...
void ReleaseParameter(Int_t ipar) override
Releases parameter number ipar.
virtual void FitChisquare(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Chisquare method.
const char * GetParName(Int_t ipar) const override
Return name of parameter ipar.
void FixParameter(Int_t ipar) override
Fixes parameter number ipar.
void Derivatives(Double_t *, Double_t *)
Calculates partial derivatives of theoretical function.
Double_t * fAMN
[fMaxParam] Minimum param value
TString * fANames
[fMaxParam] Parameter names
Double_t * GetPL0() const
Double_t * fPL
[fMaxParam] Limits for parameters step. If <0, then parameter is fixed
Int_t Eval(Int_t &npar, Double_t *grad, Double_t &fval, Double_t *par, Int_t flag)
Evaluate the minimisation function.
void SetParNumber(Int_t ParNum)
void SetData(Double_t *, Int_t, Int_t)
Sets pointer to data array provided by user.
Int_t fINDFLG[5]
internal flags;
Double_t EvalTFN(Double_t *, Double_t *)
Evaluate theoretical function.
Double_t * fParamError
[fMaxParam] Parameter errors
Double_t Chisquare(Int_t npar, Double_t *params) const override
return a chisquare equivalent
Int_t fENDFLG
End flag of fit.
Double_t * fR
[fMaxParam] Correlation factors
Double_t * fDA
[fMaxParam] Parameter step
void SetFitMethod(const char *name) override
ret fit method (chisquare or log-likelihood)
Int_t fNstepDec
fNstepDec - maximum number of step decreasing counter
Int_t GetErrors(Int_t ipar, Double_t &eplus, Double_t &eminus, Double_t &eparab, Double_t &globcc) const override
Return errors after MINOs not implemented.
Double_t * fZ0
[fMaxParam2] Matrix of approximate second derivatives of objective function This matrix is diagonal a...
Double_t * fPL0
[fMaxParam] Step initial bounds
Double_t * fA
[fMaxParam] Fit parameter array
Int_t Minimize()
Main minimization procedure.
Int_t fNmaxIter
fNmaxIter - maximum number of iterations
Int_t ExecuteSetCommand(Int_t)
Called from TFumili::ExecuteCommand in case of "SET xxx" and "SHOW xxx".
Double_t fS
fS - objective function value (return)
Double_t fEPS
fEPS - required precision of parameters. If fEPS<0 then
virtual void FitChisquareI(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Chisquare method.
Int_t fNfcn
Number of FCN calls;.
Int_t fLastFixed
Last fixed parameter number.
void BuildArrays()
Allocates memory for internal arrays.
Double_t * fZ
[fMaxParam2] Inverse fZ0 matrix - covariance matrix
Bool_t fLogLike
LogLikelihood flag.
Int_t fNED1
Number of experimental vectors X=(x1,x2,...xK).
void Clear(Option_t *opt="") override
Resets all parameter names, values and errors to zero.
Double_t * fGr
[fMaxParam] Gradients of objective function
Double_t fGT
Expected function change in next iteration.
Int_t SetParameter(Int_t ipar, const char *parname, Double_t value, Double_t verr, Double_t vlow, Double_t vhigh) override
Sets for parameter number ipar initial parameter value, name parname, initial error verr and limits v...
TString fCword
Command string.
virtual void FitLikelihoodI(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
Minimization function for H1s using a Likelihood method.
Double_t fRP
Precision of fit ( machine zero on CDC 6000) quite old yeh?
Double_t * fCmPar
[fMaxParam] parameters of commands
Double_t * fDF
[fMaxParam] First derivatives of theoretical function
Double_t GetSumLog(Int_t) override
Return Sum(log(i) i=0,n used by log-likelihood fits.
Double_t * fSumLog
[fNlog]
Double_t * fAMX
[fMaxParam] Maximum param value
Int_t fNlimMul
fNlimMul - after fNlimMul successful iterations permits four-fold increasing of fPL
Bool_t fGRAD
user calculated gradients
void InvertZ(Int_t)
Inverts packed diagonal matrix Z by square-root method.
TH1 is the base class of all histogram classes in ROOT.
virtual Int_t GetDimension() const
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
@ kInvalidObject
if object ctor succeeded but object should not be used
const char * Data() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Int_t fPointSize
Number of words per point in the cache.
virtual TObject * GetObjectFit() const
TObject * fUserFunc
Pointer to user theoretical function (a TF1*).
virtual Foption_t GetFitOption() const
virtual void SetFCN(void(*fcn)(Int_t &, Double_t *, Double_t &f, Double_t *, Int_t))
To set the address of the minimization objective function called by the native compiler (see function...
Double_t * fCache
[fCacheSize] Array of points data (fNpoints*fPointSize < fCacheSize words)
void(* fFCN)(Int_t &npar, Double_t *gin, Double_t &f, Double_t *u, Int_t flag)
static TVirtualFitter * GetFitter()
static: return the current Fitter
virtual TObject * GetUserFunc() const
Int_t fNpoints
Number of points to fit.
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Double_t Log(Double_t x)
Returns the natural logarithm of x.
Double_t Sqrt(Double_t x)
Returns the square root of x.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.