Hi Kaz,
I suspect your request for FFT support may be related to the quadEM module. The following are from the release notes for the upcoming R7-0 release of quadEM. These
items are all currently available in the master branch of quadEM on github.
*******************************************
- Changed the time-series and FFT support. Previously the time-series used the drvFastSweep driver from the synApps "mca" module. FFTs were done by an SNL program in
the quadEM module. Now the time-series is done by the NDPluginTimeSeries plugin in areaDetector/ADCore. The FFT is now done by the NDPluginFFT plugin, also in ADCore. These changes mean that quadEM no longer depends on the mca or seq modules. They also add
some significant new capabilities. For example the drvFastSweep driver is limited to epicsInt32 data, while the NDPluginTimeSeries plugin can handle any data type, include epicsFloat64 which is what the quadEM driver produces.
- Improved the support for data acquisition applications, such as step-scan and on-the-fly scans using ion-chamber and photodiode detectors. This is particularly true for the TetrAMM model, using the new firmware version 2.9.08.
- Changed the AcquireMode choices from Continuous/One-shot to Continuous/Multiple/Single. Multiple will collect NumAcquire acquisitions and then stop. Single is the
same as the previous One-shot, but using the same terminology as areaDetector.
- Changed the TriggerMode choices from Internal/ExternalTrigger/ExternalGate to FreeRun/Software/ExternalTrigger/ExternalBulb/ExternalGate. These are explained in the quadEMDoc
documentation.
*******************************************
The documentation for the NDPluginFFT plugin mentioned my previous message is here:
http://cars.uchicago.edu/software/epics/NDPluginFFT.html
The documentation for the NDPluginTimeSeries plugin mentioned my previous message is here:
http://cars.uchicago.edu/software/epics/NDPluginTimeSeries.html
Mark
From: Mark Rivers
Sent: Sunday, March 27, 2016 12:27 PM
To: 'Gofron, Kazimierz'; '[email protected]'
Subject: RE: FFT and waveform
Hi Kaz,
This is from the areaDetector/ADCore release notes for the upcoming R2-5 release. These items are available now in the master branch on github.
****************************************
### NDPluginFFT
* New plugin to compute 1-D or 2-D Fast Fourier transforms. It exports 1-D or 2-D
NDArrays containing the absolute value of the FFT. It creates 1-D waveform
records of the input, and the real, imaginary, and absolute values of the first row of the FFT.
It also creates 1-D waveform records of the time and frequency axes, which are useful if the 1-D
input represents a time-series. The waveform records are convenient for plotting in OPI screens.
* The FFT algorithm requires that the input array dimensions be a power of 2, but the plugin
will pad the array to the next larger power of 2 if the input array does not meet this
requirement.
* The simDetector test application in
[areaDetector/ADExample](https://github.com/areaDetector/ADExample)
has a new simulation mode that generates images based on the sums and/or products of 4 sine waves.
This application is useful for testing and demonstrating the NDPluginFFT plugin.
****************************************
This is from the areaDetector/ADExample notes for the upcoming R2-2 release. These items are available now in the master branch on github.
****************************************
* Created a new driver in ADExample/exampleApp/ADCSimDetectorSrc.
This driver generates times-series data for 8 signals as a 2-D array [8, NumTimePoints].
The signals are common waveforms (sine, cosine, square wave, sawtooth, random noise, etc.)
The driver was written in part to test the new NDPluginTimeSeries and NDPluginFFT plugins
in ADCore R2-5. But it can also serve as a starting point for writing drivers that are used
to collect time-series data like ADCs, waveform digitizers, etc.
There is a new iocs/iocADCSimDetector directory that creates an application for testing
the driver.
* Added a new sine-wave simulation mode to simDetector. This simulation mode constructs images
as the sum or products of two sine waves in the X and Y directions. It was designed in part
to test the new NDPluginFFT plugin in ADCore R2-5.
****************************************
Mark
From: [email protected] [mailto:[email protected]] On Behalf Of Gofron, Kazimierz
Sent: Sunday, March 27, 2016 11:24 AM
To: '[email protected]'
Subject: FFT and waveform
Hi all,
My waveform (1024 current reading in [A], @1s) needs to be processed for frequencies using FFT method. The current values are in range between pA and mA ranges.
There is an existing tech-talk exchange on FFT from about 5 years ago that discuss FFT3, fftw, and waveProc.
FFT3 based:
http://www.aps.anl.gov/epics/tech-talk/2011/msg01143.php
http://www.fftw.org/fftw3_doc/Complex-DFTs.html#Complex-DFTs
The github fftw development:
https://github.com/FFTW/fftw3
The waveProc is bit dated (2004?)
http://www.aps.anl.gov/epics/download/modules/index.php
Any newer solutions and suggestions?
Kazimierz Gofron
NSLS-II Controls Group
Brookhaven National Laboratory
(p) +1 (631) 344 5283
(f) +1 (631) 344 8085
(e) [email protected]
(w) www.bnl.gov/nsls2