{//------------------- test macro for the filter gROOT->Reset(); FrVect *lsc; FrFile *ifile; FrvRFFT *fft, *fft2, *fft3; FrvFilter2 *filter1, *filter2; TH1F *histo0, *histo1, *histo2, *histo3, *histo4, *histo5, *histo6; FrameH *frame = NULL; int nData, iVect, i; double dt, phase = 0; can = new TCanvas("can","RUN",600,800); can.Divide(1,3); can_1.SetGrid(); can_2.SetGrid(); can_3.SetGrid(); can_1.SetLogy(); nData = 500; dt = 5./nData; vect = FrVectNew1D("gaussian + sin(phase)",FR_VECT_8R, nData,dt, "time [s]","Volts"); fft1 = FrvRFFTNew("HAP", 0, 0); fft2 = FrvRFFTNew("HAP", 0, 0); FrvRFFTSetDecay(fft1, .999); FrvRFFTSetDecay(fft2, .999); filter1 = FrvFilter2New(0.,0.,1.,1./(6.14*30*6.14*30),1./(6.14*30.),1.); tf = FrvTFNew(0, 0, 0); FrvTFSetDecay(tf, .999); for(iVect = 0; iVect<1000; iVect++) {//----------- we loop on many vectors-- for(i=0; idataD[i] = gRandom->Gaus() + sin(phase);} FrvFilter2Proc(filter1, vect); FrvTFProc(tf, filter1->output, vect); FrvRFFTFor(fft1, vect); FrvRFFTFor(fft2, filter1->output); if(iVect % 50 != 0) continue; //------- to plot data only every 50 vectors for(i=0; i<1000000; i++) {;} can.cd(1); delete histo1; delete histo2; histo1 = FrVP(fft1->amplitudeA, "DRAW", 1); histo2 = FrVP(fft2->amplitudeA, "SAME", 2); histo1->SetMinimum(.001); histo1->SetMaximum(2.); can.cd(2); delete histo3; histo3 = FrVP(tf->modulus, "DRAW", 1); can.cd(3); delete histo5; histo5 = FrVP(tf->phase, "DRAW", 1); can->Modified(); can->Update();} }