SMSOddEvenHarmonicRatio.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 "SMSOddEvenHarmonicRatio.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025
00026
00027 namespace CLAM
00028 {
00029
00030 namespace Hidden
00031 {
00032 static const char * metadata[] = {
00033 "key", "SMSOddEvenHarmonicRatio",
00034 "category", "SMS Transformations",
00035 "description", "SMSOddEvenHarmonicRatio",
00036 0
00037 };
00038 static FactoryRegistrator<ProcessingFactory, SMSOddEvenHarmonicRatio> reg = metadata;
00039 }
00040
00041
00042 bool SMSOddEvenHarmonicRatio::Do(const SpectralPeakArray& in, SpectralPeakArray& out)
00043 {
00044 out = in;
00045 DataArray& iMagArray=in.GetMagBuffer();
00046 DataArray& oMagArray=out.GetMagBuffer();
00047 TSize nPeaks=in.GetnPeaks();
00048 TData oddFactor=mOddFactor.GetLastValue()*0.5;
00049 TData evenFactor=-oddFactor;
00050
00051 for(int i=0;i<nPeaks-1;i+=2)
00052 {
00053 oMagArray[i]=std::min(iMagArray[i]+oddFactor,TData(0));
00054 oMagArray[i+1]=std::min(iMagArray[i+1]+evenFactor,TData(0));
00055 }
00056 return true;
00057 }
00058
00059 }
00060