Example to illustrate the 2-d peak finder (class TSpectrum2).
This script generates a random number of 2-d gaussian peaks The position of the peaks is found via TSpectrum2 To execute this example, do:
The script will iterate generating a new histogram having between 5 and the maximun number of peaks specified. Double Click on the bottom right corner of the pad to go to a new spectrum To Quit, select the "quit" item in the canvas "File" menu
{
for (
Int_t p = 0; p < npeaks; p++) {
}
return result;
}
void findPeak2()
{
printf("Generating histogram with %d peaks\n", npeaks);
delete h2;
for (p = 0; p < npeaks; p++) {
par[5 * p + 0] =
gRandom->Uniform(0.2, 1);
par[5 * p + 2] =
gRandom->Uniform(dx, 5 * dx);
par[5 * p + 4] =
gRandom->Uniform(dy, 5 * dy);
}
c1 =
new TCanvas(
"c1",
"c1", 10, 10, 1000, 700);
for (p = 0; p < npeaks; p++) {
for (pf = 0; pf < nfound; pf++) {
if (diffx < 2 * dx && diffy < 2 * dy)
ngood++;
}
}
if (ngood > nfound)
ngood = nfound;
for (pf = 0; pf < nfound; pf++) {
for (p = 0; p < npeaks; p++) {
if (diffx < 2 * dx && diffy < 2 * dy)
nf++;
}
if (nf == 0)
nghost++;
}
printf("Gener=%d, Found=%d, Good=%d, Ghost=%d\n", npeaks, nfound, ngood, nghost);
printf("\nDouble click in the bottom right corner of the pad to continue\n");
}
}
void peaks2(
Int_t maxpeaks = 50)
{
for (int i = 0; i < 10; ++i) {
findPeak2();
}
}
int Int_t
Signed integer 4 bytes (int).
double Double_t
Double 8 bytes.
virtual void SetNpx(Int_t npx=100)
virtual void SetParameters(const Double_t *params)
virtual void SetNpy(Int_t npy=100)
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
2-D histogram with a float per channel (see TH1 documentation)
void FillRandom(TF1 *function, Int_t ntimes=5000, TRandom *rng=nullptr) override
Fill histogram following distribution in function function.
Advanced 2-dimensional spectra processing.
Double_t * GetPositionY() const
Double_t * GetPositionX() const
void Print(Option_t *option="") const override
Print the array of positions.
virtual Int_t Search(const TH1 *hist, Double_t sigma=2, Option_t *option="", Double_t threshold=0.05)
This function searches for peaks in source spectrum in hin The number of found peaks and their positi...
Double_t Gaus(Double_t x, Double_t mean=0, Double_t sigma=1, Bool_t norm=kFALSE)
Calculates a gaussian function with mean and sigma.
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.