#include "TSpectrum2.h" #include "Riostream.h" #include "TH2F.h" #include "TCanvas.h" #include "TSpectrum2Fit.h" #include "TFile.h" void tutor1() { Int_t i, j, nfound; Int_t xbin, ybin; Int_t nbinsx = 500; Int_t nbinsy = 500; Float_t xmin = 1000.; Float_t xmax = 5000.; Float_t ymin = 0.; Float_t ymax = 7000.; Float_t ** source = new float *[nbinsx]; Float_t ** dest = new float *[nbinsx]; for (i=0;iGet("ht;1"); search->Print("base"); TCanvas *Searching = new TCanvas("Searching","Two-dimensional fitting using Stiefel-Hestens method",10,10,1000,700); TSpectrum2 *s = new TSpectrum2(); for (i = 0; i < nbinsx; i++){ for (j = 0; j < nbinsy; j++){ source[i][j] = (Float_t)search->GetBinContent(i + 1,j + 1); } } nfound = s->SearchHighRes(source, dest, nbinsx, nbinsy, 3, 20, kTRUE, 3, kFALSE, 3); printf("Found %d candidate peaks\n",nfound); Bool_t *FixPosX = new Bool_t[nfound]; Bool_t *FixPosY = new Bool_t[nfound]; Bool_t *FixAmp = new Bool_t[nfound]; Float_t *PosX = new Float_t[nfound]; Float_t *PosY = new Float_t[nfound]; Float_t *Amp = new Float_t[nfound]; Float_t *AmpXY = new Float_t[nfound]; PosX = s->GetPositionX(); PosY = s->GetPositionY(); s->Print(); cout<<"positions acquired!"<FitStiefel(source); cout <<"Fit finished"<SetBinContent(i + 1, j + 1,source[i][j]); } } search->Draw("SURF"); }