package edu.sc.seis.sod.process.waveform;
import org.w3c.dom.Element;
import edu.iris.Fissures.IfSeismogramDC.RequestFilter;
import edu.iris.Fissures.network.ChannelImpl;
import edu.iris.Fissures.seismogramDC.LocalSeismogramImpl;
import edu.sc.seis.fissuresUtil.cache.CacheEvent;
import edu.sc.seis.sod.CookieJar;
import edu.sc.seis.sod.measure.ArrayMeasurement;
import edu.sc.seis.sod.measure.Measurement;
;
public class OregonDspFFT extends AbstractWaveformMeasure {
public OregonDspFFT(Element config) {
super(config);
}
@Override
Measurement calculate(CacheEvent event,
ChannelImpl channel,
RequestFilter[] original,
RequestFilter[] available,
LocalSeismogramImpl[] seismograms,
CookieJar cookieJar) throws Exception {
if (seismograms.length != 1) {
throw new Exception("Require continuous data, but num seismograms="+seismograms.length);
}
return new ArrayMeasurement(getName(), forward(seismograms[0].get_as_floats()));
}
public static float[] forward(float[] realData) {
return edu.sc.seis.fissuresUtil.bag.OregonDspFFT.forward(realData);
}
/**
* Performs the inverse fft operation of the realFFT call.
*/
public static float[] inverse(float[] realData) {
return edu.sc.seis.fissuresUtil.bag.OregonDspFFT.inverse(realData);
}
public static float[] correlate(float[] x, float[] y) {
return edu.sc.seis.fissuresUtil.bag.OregonDspFFT.correlate(x, y);
}
public static float[] convolve(float[] x, float[] y, float delta) {
return edu.sc.seis.fissuresUtil.bag.OregonDspFFT.convolve(x, y, delta);
}
}