Peakalizer.cxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "Peakalizer.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025 namespace CLAM
00026 {
00027
00028 namespace Hidden
00029 {
00030 static const char * metadata[] = {
00031 "key", "Peakalizer",
00032 "category", "Spectral Transformations",
00033 "description", "Peakalizer",
00034 0
00035 };
00036 static FactoryRegistrator<ProcessingFactory, Peakalizer> reg = metadata;
00037 }
00038
00039 bool Peakalizer::Do(const Spectrum& in, Spectrum& out)
00040 {
00041 if (!mConfig.GetPreserveOuts())
00042 {
00043 out = in;
00044 }
00045 DataArray& inMag = in.GetMagBuffer();
00046 DataArray& outMag = out.GetMagBuffer();
00047
00048 int spectrumSize = in.GetSize();
00049 mMag.Resize(spectrumSize);
00050 mMag.SetSize(spectrumSize);
00051
00052
00053 TData threshold = log2lin(mThresholdCtl.GetLastValue());
00054
00055 TData spectralResolution = spectrumSize/in.GetSpectralRange();
00056 int bandwidth = Round(mBandWidthCtl.GetLastValue()* spectralResolution*0.5);
00057
00058 int i,n;
00059
00060 for(i = 0; i<spectrumSize; i++)
00061 {
00062 mMag[i] = 0.;
00063 }
00064 for(i = 0; i<spectrumSize; i++)
00065 {
00066 if(inMag[i] > threshold)
00067 {
00068 for(n = i-bandwidth; n < i+bandwidth; n++)
00069 {
00070 mMag[n] = inMag[n];
00071 }
00072 }
00073 }
00074 out.SetMagBuffer(mMag);
00075 return true;
00076 }
00077
00078
00079
00080 }
00081