created -9.82 59.8413 9
created -9.46 33.2452 5
created -9.1 26.5962 4
created -8.74 26.5962 4
created -8.38 6.64904 1
created -8.02 46.5433 7
created -7.66 19.9471 3
created -7.3 66.4904 10
created -6.94 46.5433 7
created -6.58 6.64904 1
created -6.22 19.9471 3
created -5.86 39.8942 6
created -5.5 39.8942 6
created -5.14 13.2981 2
created -4.78 13.2981 2
created -4.42 46.5433 7
created -4.06 53.1923 8
created -3.7 6.64904 1
created -3.34 53.1923 8
created -2.98 13.2981 2
created -2.62 59.8413 9
created -2.26 39.8942 6
created -1.9 26.5962 4
created -1.54 19.9471 3
created -1.18 66.4904 10
created -0.82 26.5962 4
created -0.46 33.2452 5
created -0.1 13.2981 2
created 0.26 66.4904 10
created 0.62 6.64904 1
created 0.98 19.9471 3
created 1.34 13.2981 2
created 1.7 13.2981 2
created 2.06 59.8413 9
created 2.42 46.5433 7
created 2.78 19.9471 3
created 3.14 53.1923 8
created 3.5 53.1923 8
created 3.86 19.9471 3
created 4.22 59.8413 9
created 4.58 53.1923 8
created 4.94 6.64904 1
created 5.3 6.64904 1
created 5.66 66.4904 10
created 6.02 6.64904 1
created 6.38 6.64904 1
created 6.74 53.1923 8
created 7.1 39.8942 6
created 7.46 13.2981 2
created 7.82 53.1923 8
created 8.18 6.64904 1
created 8.54 46.5433 7
created 8.9 19.9471 3
created 9.26 33.2452 5
created 9.62 59.8413 9
the total number of created peaks = 55 with sigma = 0.06
the total number of found peaks = 55 with sigma = 0.0600004 (+-1.65055e-05)
fit chi^2 = 3.44371e-06
found -7.3 (+-0.000150577) 66.4904 (+-0.164761) 10.0001 (+-0.000831091)
found -1.18 (+-0.000150307) 66.4902 (+-0.164726) 10 (+-0.000830911)
found 0.26 (+-0.0001497) 66.4901 (+-0.164651) 10 (+-0.000830536)
found 5.66 (+-0.000149502) 66.49 (+-0.164628) 10 (+-0.000830418)
found -9.82 (+-0.000158828) 59.8412 (+-0.156305) 9.00003 (+-0.000788434)
found -2.62 (+-0.000158578) 59.8413 (+-0.15629) 9.00005 (+-0.00078836)
found 2.06 (+-0.000158666) 59.8413 (+-0.156301) 9.00006 (+-0.000788415)
found 4.22 (+-0.000158907) 59.8414 (+-0.156329) 9.00007 (+-0.000788555)
found 9.62 (+-0.000157676) 59.8416 (+-0.156204) 9.00009 (+-0.000787924)
found 3.5 (+-0.00016868) 53.1924 (+-0.147403) 8.00007 (+-0.00074353)
found 4.58 (+-0.000168335) 53.1924 (+-0.147371) 8.00007 (+-0.000743368)
found -4.06 (+-0.000168165) 53.1923 (+-0.147351) 8.00005 (+-0.000743271)
found -3.34 (+-0.00016752) 53.1921 (+-0.147283) 8.00002 (+-0.000742927)
found 3.14 (+-0.00016868) 53.1924 (+-0.147403) 8.00007 (+-0.00074353)
found 6.74 (+-0.000168069) 53.1922 (+-0.147341) 8.00005 (+-0.000743217)
found 7.82 (+-0.00016752) 53.1921 (+-0.147283) 8.00002 (+-0.000742927)
found -6.94 (+-0.000180191) 46.5434 (+-0.137875) 7.00007 (+-0.000695472)
found 2.42 (+-0.000180589) 46.5435 (+-0.137908) 7.00008 (+-0.000695636)
found -8.02 (+-0.000179389) 46.5431 (+-0.137797) 7.00003 (+-0.000695078)
found -4.42 (+-0.000180294) 46.5434 (+-0.137881) 7.00007 (+-0.0006955)
found 8.54 (+-0.000179389) 46.5431 (+-0.137797) 7.00003 (+-0.000695078)
found -2.26 (+-0.000195476) 39.8945 (+-0.127712) 6.00009 (+-0.000644205)
found 7.1 (+-0.00019495) 39.8944 (+-0.12767) 6.00007 (+-0.000643994)
found -5.86 (+-0.000194943) 39.8944 (+-0.127667) 6.00006 (+-0.000643981)
found -5.5 (+-0.000194712) 39.8943 (+-0.12765) 6.00005 (+-0.000643891)
found -9.46 (+-0.000214464) 33.2455 (+-0.116608) 5.00009 (+-0.000588194)
found -0.46 (+-0.00021322) 33.2452 (+-0.116522) 5.00004 (+-0.00058776)
found 9.26 (+-0.000214244) 33.2455 (+-0.116593) 5.00008 (+-0.00058812)
found -9.1 (+-0.000239578) 26.5964 (+-0.104285) 4.00006 (+-0.000526035)
found -8.74 (+-0.000238296) 26.5962 (+-0.104217) 4.00003 (+-0.000525691)
found -1.9 (+-0.000239509) 26.5964 (+-0.104282) 4.00006 (+-0.000526019)
found -0.820001 (+-0.000240635) 26.5966 (+-0.104347) 4.0001 (+-0.000526346)
found -7.66 (+-0.000279196) 19.9477 (+-0.0904261) 3.00011 (+-0.000456128)
found -1.54 (+-0.000278411) 19.9476 (+-0.0903919) 3.00009 (+-0.000455956)
found 2.78 (+-0.000278826) 19.9477 (+-0.090409) 3.0001 (+-0.000456042)
found 3.86 (+-0.000279228) 19.9477 (+-0.0904273) 3.00011 (+-0.000456134)
found 8.9 (+-0.00027813) 19.9475 (+-0.090378) 3.00008 (+-0.000455886)
found -6.22 (+-0.000276238) 19.9473 (+-0.0903001) 3.00005 (+-0.000455493)
found 0.98 (+-0.000274945) 19.9471 (+-0.0902445) 3.00002 (+-0.000455212)
found -5.14 (+-0.000340342) 13.2983 (+-0.0737861) 2.00005 (+-0.000372193)
found -2.98 (+-0.000343726) 13.2987 (+-0.0738877) 2.00011 (+-0.000372705)
found 7.46 (+-0.000342836) 13.2986 (+-0.0738599) 2.00009 (+-0.000372565)
found -4.78 (+-0.00034066) 13.2984 (+-0.0737961) 2.00006 (+-0.000372243)
found -0.0999985 (+-0.000342989) 13.2987 (+-0.0738655) 2.0001 (+-0.000372593)
found 1.34 (+-0.000339096) 13.2982 (+-0.0737486) 2.00003 (+-0.000372004)
found 1.7 (+-0.000341213) 13.2985 (+-0.0738138) 2.00007 (+-0.000372332)
found -3.7 (+-0.000490693) 6.64971 (+-0.052321) 1.00011 (+-0.000263918)
found 0.619996 (+-0.000488207) 6.64958 (+-0.0522827) 1.00009 (+-0.000263725)
found 6.01999 (+-0.000485482) 6.6495 (+-0.0522439) 1.00008 (+-0.000263529)
found 8.18 (+-0.000490167) 6.64967 (+-0.0523123) 1.0001 (+-0.000263874)
found 4.94 (+-0.000484588) 6.6494 (+-0.0522283) 1.00006 (+-0.000263451)
found -6.58 (+-0.000486783) 6.64945 (+-0.0522584) 1.00007 (+-0.000263603)
found -8.38 (+-0.00048767) 6.64949 (+-0.052272) 1.00007 (+-0.000263671)
found 5.30001 (+-0.000485482) 6.6495 (+-0.0522439) 1.00008 (+-0.000263529)
found 6.38 (+-0.000484588) 6.6494 (+-0.0522283) 1.00006 (+-0.000263451)
#include <iostream>
TH1F *FitAwmi_Create_Spectrum(
void) {
delete gROOT->FindObject(
"h");
npeaks++;
std::cout << "created "
<< area << std::endl;
}
std::cout << "the total number of created peaks = " << npeaks
<<
" with sigma = " <<
sigma << std::endl;
}
void FitAwmi(void) {
TH1F *
h = FitAwmi_Create_Spectrum();
if (!cFit) cFit =
new TCanvas(
"cFit",
"cFit", 10, 10, 1000, 700);
for (
i = 0;
i < nbins;
i++) source[
i] =
h->GetBinContent(
i + 1);
for(
i = 0;
i < nfound;
i++) FixAmp[
i] = FixPos[
i] =
kFALSE;
for (
i = 0;
i < nfound;
i++) {
bin = 1 +
Int_t(Pos[
i] + 0.5);
Amp[
i] =
h->GetBinContent(bin);
}
delete gROOT->FindObject(
"d");
TH1F *
d =
new TH1F(*
h);
d->SetNameTitle(
"d",
"");
d->Reset(
"M");
for (
i = 0;
i < nbins;
i++)
d->SetBinContent(
i + 1, source[
i]);
sigma *= dx; sigmaErr *= dx;
std::cout << "the total number of found peaks = " << nfound
<<
" with sigma = " <<
sigma <<
" (+-" << sigmaErr <<
")"
<< std::endl;
std::cout <<
"fit chi^2 = " << pfit->
GetChi() << std::endl;
for (
i = 0;
i < nfound;
i++) {
bin = 1 +
Int_t(Positions[
i] + 0.5);
Pos[
i] =
d->GetBinCenter(bin);
Amp[
i] =
d->GetBinContent(bin);
Positions[
i] =
x1 + Positions[
i] * dx;
PositionsErrors[
i] *= dx;
std::cout << "found "
<< Positions[
i] <<
" (+-" << PositionsErrors[
i] <<
") "
<< Amplitudes[
i] <<
" (+-" << AmplitudesErrors[
i] <<
") "
<< Areas[
i] <<
" (+-" << AreasErrors[
i] <<
")"
<< std::endl;
}
d->SetLineColor(
kRed);
d->SetLineWidth(1);
if (pm) {
h->GetListOfFunctions()->Remove(pm);
delete pm;
}
h->GetListOfFunctions()->Add(pm);
delete pfit;
delete [] Amp;
delete [] FixAmp;
delete [] FixPos;
delete s;
delete [] source;
return;
}
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
Option_t Option_t TPoint TPoint const char x1
R__EXTERN TRandom * gRandom
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
void Clear(Option_t *option="") override
Remove all primitives from the canvas.
1-D histogram with a float per channel (see TH1 documentation)
A PolyMarker is defined by an array on N points in a 2-D space.
Advanced 1-dimensional spectra fitting functions.
void SetPeakParameters(Double_t sigma, Bool_t fixSigma, const Double_t *positionInit, const Bool_t *fixPosition, const Double_t *ampInit, const Bool_t *fixAmp)
This function sets the following fitting parameters of peaks:
Double_t * GetAmplitudesErrors() const
void FitAwmi(Double_t *source)
This function fits the source spectrum.
Double_t * GetAreasErrors() const
void GetSigma(Double_t &sigma, Double_t &sigmaErr)
This function gets the sigma parameter and its error.
Double_t * GetAreas() const
Double_t * GetAmplitudes() const
void SetFitParameters(Int_t xmin, Int_t xmax, Int_t numberIterations, Double_t alpha, Int_t statisticType, Int_t alphaOptim, Int_t power, Int_t fitTaylor)
This function sets the following fitting parameters:
Double_t * GetPositionsErrors() const
Double_t * GetPositions() const
Advanced Spectra Processing.
Int_t SearchHighRes(Double_t *source, Double_t *destVector, Int_t ssize, Double_t sigma, Double_t threshold, bool backgroundRemove, Int_t deconIterations, bool markov, Int_t averWindow)
One-dimensional high-resolution peak search function.
Double_t * GetPositionX() const
constexpr Double_t Sqrt2()
Double_t Sqrt(Double_t x)
Returns the square root of x.
constexpr Double_t TwoPi()