Hi Folks, 1) thanks to Rene and Martin for their help with TSpectrum. I moved ahead on my problem which is going fairly well with fake data. Not so good with real data though. The following code with comment-attached data at its end shows a situation where the eye can easily catch 5 peaks (at x = 3,6,12,15,18) and other peak-finding algorithm find 4 (x=6,12,15,18). In my use of TSpectrum I can only get 2 peaks (x=6,12). I wonder if there is a way to set a threshold so lower peaks can be detected. 2) A problem I have when using TGraph which can be seen in this example: Why can I zoom in X but not in Y in a TGraph? I can zoom in both on a histogram. #include "TCanvas.h" #include "TGraph.h" #include "TH1.h" #include "TSpectrum.h" #include <iostream> #include <fstream> using namespace std; const Int_t MAXNPT = 250; /* number of points */ Float_t x[MAXNPT],y[MAXNPT],z ; /* data arrays */ //___________________________________________________________________ search4() { Int_t n,npts; TCanvas *c1 = new TCanvas("c1","the fit canvas",800,600); // fills up the x and y reading file " ifstream infile("./peak.real") ; n = 0 ; while ( (infile >> x[n] >> y[n++]) ) npts = n; //TH1F *hpx = new TH1F("hpx","Peaks",npts,-0.5,npts-0.5); //for (Int_t j=0 ; j<npts ; j++) hpx->SetBinContent(j+1,y[j]) ; //hpx->Draw() ; Int_t npeaks ; TSpectrum *sp1 = new TSpectrum(); npeaks = sp1->Search1(y,npts,0.75) ; //sp1->Search(hpx,1.0,"") ; npeaks = sp1->GetNPeaks() ; cout << "Peaks found " << npeaks << endl ; Float_t *peaks ; peaks = sp1->GetPositionX() ; for (Int_t j=0 ; j<npeaks ; j++) cout << "Peak at = " << peaks[j] << endl ; // creates a TGraph object to display the computed curves TGraph *gr = new TGraph (npts, x, y); gr->Draw("AC*") ; return(0) ; } /* File peak.real to be read by the above code: 1 16020 2 14968 3 13199 4 14029 5 13545 6 15274 7 19903 8 17252 9 12782 10 11068 11 10640 12 14207 13 17253 14 14815 15 15847 16 17072 17 14595 18 15388 19 15183 20 11014 21 7766 */
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:47 MET