SMSResidualGain.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 "SMSResidualGain.hxx"
00023 #include "ProcessingFactory.hxx"
00024
00025
00026 namespace CLAM
00027 {
00028
00029 namespace Hidden
00030 {
00031 static const char * metadata[] = {
00032 "key", "SMSResidualGain",
00033 "category", "SMS Transformations",
00034 "description", "SMSResidualGain",
00035 0
00036 };
00037 static FactoryRegistrator<ProcessingFactory, SMSResidualGain> reg = metadata;
00038 }
00039
00040
00041 bool SMSResidualGain::Do(const Spectrum& in, Spectrum& out)
00042 {
00043 out = in;
00044 TSize spectrumSize = in.GetSize();
00045 if(in.GetScale()==EScale::eLinear)
00046 {
00047 TData amount = Lin(mGain.GetLastValue());
00048 for(int i=0;i<spectrumSize;i++)
00049 {
00050 out.SetMag(i,in.GetMag(i)*amount);
00051 }
00052 }
00053 else
00054 {
00055 TData amount = mGain.GetLastValue();
00056 for(int i=0;i<spectrumSize;i++)
00057 {
00058 out.SetMag(i,in.GetMag(i)+amount);
00059 }
00060 }
00061 return true;
00062 }
00063
00064 }
00065