Tutorial for normalized sum of two functions Here: a background exponential and a crystalball function Parameters can be set:
- with the TF1 object before adding the function (for 3) and 4))
- with the TF1NormSum object (first two are the coefficients, then the non constant parameters)
- with the TF1 object after adding the function
Sum can be constructed by:
- by a string containing the names of the functions and/or the coefficient in front
- by a string containg formulas like expo, gaus...
- by the list of functions and coefficients (which are 1 by default)
- by a std::vector for functions and coefficients
Processing /mnt/build/workspace/root-makedoc-v612/rootspi/rdoc/src/v6-12-00-patches/tutorials/fit/fitNormSum.C...
Time to generate 1050000 events: Real time 0:00:00, CP time 0.150
****************************************
Minimizer is Minuit2 / Migrad
Chi2 = 1021.04
NDf = 993
Edm = 8.20921e-06
NCalls = 233
NSignal = 50083 +/- 1235.87
NBackground = 998896 +/- 1573.51
Mean = 2.99897 +/- 0.00224467
Sigma = 0.297886 +/- 0.00230899
Alpha = 2.12449 +/- 0.140022
N = 1.15624 +/- 0.474843
Slope = -0.300343 +/- 0.000644415
Time to fit using ROOT TF1Normsum: Real time 0:00:00, CP time 0.150
void fitNormSum()
{
const int nsig = 5.E4;
const int nbkg = 1.e6;
Int_t NEvents = nsig+nbkg;
double signal_mean = 3;
TF1 *f_cb =
new TF1(
"MyCrystalBall",
"crystalball",-5.,5.);
TF1 *f_exp =
new TF1(
"MyExponential",
"expo",-5.,5.);
TF1 * f_sum =
new TF1(
"fsum", *fnorm_exp_cb, -5., 5., fnorm_exp_cb->
GetNpar());
for (
int i = 2; i < f_sum->
GetNpar(); ++i)
TH1D *h_sum =
new TH1D(
"h_ExpCB",
"Exponential Bkg + CrystalBall function", NBins, -5., 5.);
for (int i=0; i<NEvents; i++)
{
h_sum -> Fill(f_sum -> GetRandom());
}
printf("Time to generate %d events: ",NEvents);
h_sum -> Sumw2();
h_sum -> Scale(1., "width");
auto result = h_sum ->
Fit(
"fsum",
"SQ");
printf("Time to fit using ROOT TF1Normsum: ");
std::vector<double> pref = {nsig, nbkg, signal_mean};
for (unsigned int i = 0; i< pref.size(); ++i) {
}
t2->Draw();
}
- Author
- Lorenzo Moneta
Definition in file fitNormSum.C.