EMS Data Processing Components
Flux Drift Correction
Purpose:
This component removes the linear drift from the flux arrays. Several methods
are available to do this.
Assumptions:
-
Input arrays are from a quasi-periodic signal with period give by npts.
The algorithm assumes that a linear non-periodic trend is caused by drift
and removes it. If there is nonperiodic behavior which is non-linear, it
will cause systematic errors in the data processing.
Input:
-
int npts: number of data points per single probe rotation
-
int nrot: number of complete probe rotations forming this data set.
-
double flux[npts][nCoils][nrot]: flux arrays output by one or more
consecutive passes through the PDI Signal Conditioning component, one array
per coil.
-
double time[npts][nrot]: time array output by PDI Signal Conditioning
component.
-
double current[nrot]: currents output by Current Conditioning component,
1 average current per rotation.
Input Assertions:
-
nrot >= 1, except for full-cycle correction scheme, in which case nrot
>= 2.
Properties:
-
double driftErrorLimit: warning will be generated if calculated
drift error is larger than this value.
-
RMS error limit when multiple points/rotations used to determine drift
(?)
-
boolean useBuffer: Buffering option; if true, then reuse portion
of data in next call to this component.
-
int nBuffer: if useBuffer is true, include the last nBuffer points
in the input arrays in the first part of the inout arrays in the next call
to this component.
-
int iMethod: algorithm processing option:
iMethod = 1: n point correction (specify number of points to use
for drift correction)
iMethod = 2: last n point correction (use m-n...m points for correction)
(note that for asynch triggering may not always have the same
number of point in a complete cycle but know that the last point is at
the same position as first (e.g. for SSW data acq); data object knows M
for each of the asynch data cycles)
iMethod = 3: full-cycle correction. Choose between two submethods:
int multiMode = 1: use multiple complete cycles and return first
cycle
int multiMode = 2: use multiple complete cycles and return average
of all corrected cycles
iMethod = 4: full-cycle extrapolated correction to fixed time (useful
for fast ramp rate)
Output:
-
double outFlux[npts][nCoils]: drift corrected arrays of length npts.
-
int npts, passed along as part of data stream
-
avgCurrent: current value ‘averaged’ over number of rotations used
-
some numbers that characterize how well the drift correction worked (be
more specific), including driftError, which is compared with
driftErrorLimit.
Output Assertions:
-
warning if driftError > driftErrorLimit. This often indicates a
hardware problem.