Get in memory an histogram from a root file and fit a user defined function.
Note that a user defined function must always be defined as in this example:
- first parameter: array of variables (in this example only 1-dimension)
- second parameter: array of parameters Note also that in case of user defined functions, one must set an initial value for each parameter.
****************************************
Minimizer is Minuit2 / Migrad
Chi2 = 36.7428
NDf = 47
Edm = 2.03167e-06
NCalls = 101
Constant = 797.969 +/- 6.79742
Mean_value = -7.42918e-05 +/- 0.00734861
Sigma = 0.998754 +/- 0.0071337
Integral of function = 1907.36
#include <cmath>
double fitf(
double *
x,
double *par)
{
double arg = 0;
if (par[2] != 0) arg = (
x[0] - par[1])/par[2];
double fitval = par[0]*std::exp(-0.5*arg*arg);
return fitval;
}
void myfit()
{
if (!hsimpleFile) return;
TF1 *func =
new TF1(
"fitf",fitf,-2,2,3);
printf(
"Integral of function = %g\n",func->
Integral(-2,2));
}
TObject * Get(const char *namecycle) override
Return pointer to object identified by namecycle.
virtual Double_t Integral(Double_t a, Double_t b, Double_t epsrel=1.e-12)
IntegralOneDim or analytical integral.
virtual void SetParameters(const Double_t *params)
virtual void SetParNames(const char *name0="p0", const char *name1="p1", const char *name2="p2", const char *name3="p3", const char *name4="p4", const char *name5="p5", const char *name6="p6", const char *name7="p7", const char *name8="p8", const char *name9="p9", const char *name10="p10")
Set up to 10 parameter names.
A ROOT file is composed of a header, followed by consecutive data records (TKey instances) with a wel...
1-D histogram with a float per channel (see TH1 documentation)}
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.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
TString & Append(const char *cs)
- Author
- Rene Brun
Definition in file myfit.C.