57double f(
double *
x,
double * p) {
64 fitFunc =
new TF1(
"f",
f,0,1,NPAR);
67 double par[NPAR] = { 3.14, 1.};
72 auto fitResult =
h1->
Fit(fitFunc,
"S");
77 double integral = fitFunc->
Integral(0,1);
79 auto covMatrix = fitResult->GetCovarianceMatrix();
80 std::cout <<
"Covariance matrix from the fit ";
85 double sigma_integral = fitFunc->
IntegralError(0,1, fitResult->GetParams() , covMatrix.GetMatrixArray());
87 std::cout <<
"Integral = " << integral <<
" +/- " << sigma_integral
93 double ic = p[1]* (1-std::cos(p[0]) )/p[0];
94 double c0c = p[1] * (std::cos(p[0]) + p[0]*std::sin(p[0]) -1.)/p[0]/p[0];
95 double c1c = (1-std::cos(p[0]) )/p[0];
98 double sic = std::sqrt( c0c*c0c * covMatrix(0,0) + c1c*c1c * covMatrix(1,1)
99 + 2.* c0c*c1c * covMatrix(0,1));
101 if ( std::fabs(sigma_integral-sic) > 1.E-6*sic )
102 std::cout <<
" ERROR: test failed : different analytical integral : "
103 << ic <<
" +/- " << sic << std::endl;
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
virtual Double_t * GetParameters() const
virtual void SetParameters(const Double_t *params)
virtual void SetParameter(Int_t param, Double_t value)
virtual Double_t IntegralError(Double_t a, Double_t b, const Double_t *params=0, const Double_t *covmat=0, Double_t epsilon=1.E-2)
Return Error on Integral of a parametric function between a and b due to the parameter uncertainties ...
1-D histogram with a double per channel (see TH1 documentation)}
virtual void FillRandom(const char *fname, Int_t ntimes=5000, TRandom *rng=nullptr)
Fill histogram following distribution in function fname.
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
Fit histogram with function fname.
virtual void Draw(Option_t *option="")
Draw this histogram with options.