74 return( (*a).x < (*b).x ? 1 : (*a).x > (*b).x ? -1 : 0 );
87 p1->len = p1->head.datalen /
sizeof(float);
91 for(i=0;i<p1->len;i++)
93 if(fabs(p1->data[i]) > 1.0e-20)
100 st_report(
"PD: Flagging X-Chan %3d: Value: %10.6f", i, p1->data[i]);
103 if(fabs(p2->
data[i]) > 1.0e-20)
110 st_report(
"PD: Flagging Y-Chan %3d: Value: %10.6f", i, p2->
data[i]);
128 p1->mean = p2->
mean = 0.0;
130 st_report(
"CM: Computing Pass: %d Mean", pass);
132 for(i=0,j=0;i<p1->len;i++)
134 if(p1->good[i] && p2->
good[i])
136 p1->mean += p1->data[i];
142 p1->mean /= (double)j;
143 p2->
mean /= (double)j;
145 st_report(
"CM: First-Pass: Mean-X = %10.6f, Mean-Y = %10.6f, %4d Good Channels",
146 p1->mean, p2->
mean, j);
159 st_report(
"Removing any Channels 10X Mean: Pass %d", pass);
161 for(i=0;i<p1->len;i++)
166 if((fabs(p1->data[i]) / fabs(p1->mean)) > 10.0)
168 st_report(
"Flagging X-Chan %3d: Value: %10.6f: Factor: %.2f",
169 i, p1->data[i], fabs(p1->data[i]) / fabs(p1->mean));
176 if((fabs(p2->
data[i]) / fabs(p2->
mean)) > 10.0)
178 st_report(
"Flagging Y-Chan %3d: Value: %10.6f: Factor: %.2f",
191 int i, j, n,
m, good, write_good, g;
212 for(i=0;i<p1->
len;i++)
220 for(i=0;i<p2->
len;i++)
246 st_report(
"Now Remove any Channels 5X the rms");
259 chans[j].
x = (double)p1->
data[i];
260 chans[j].
y = (
double)p2->
data[i];
261 chans[j].
c = (double)i;
267 st_report(
"Y-Channel %4d: %10.6f > Mean-Y: %10.6f", i, p2->
data[i], p2->
mean*5.0);
272 st_report(
"X-Channel %4d: %10.6f > Mean-X: %10.6f", i, p1->
data[i], p1->
mean*5.0);
277 st_report(
"Skipping Already Flagged Channel: %4d, %14.6f %14.6f",
297 st_report(
"Fitting linear regression using grace_fit()");
303 st_report(
"Ignoring Results with vaules 1.5 times rms: %10.6f", p2->
rms);
317 st_report(
"Found a Bad one: %d:", chans[i].
c);
324 if(chans[i].y < linear-p2->
rms)
326 st_report(
"Ignoring channel[%4d]: data %10.6f < %10.6f",
327 (
int)chans[i].
c, chans[i].
y, linear-p2->
rms);
331 if(chans[i].
y > linear+p2->
rms)
333 st_report(
"Ignoring channel[%4d]: data %10.6f > %10.6f",
334 (
int)chans[i].
c, chans[i].
y, linear+p2->
rms);
340 st_print(
"# Channel %4d\n", (
int)chans[i].
c);
341 st_print(
"%10.6f %10.6f %10.6f %10.6f %10.6f\n",
370 st_report(
"Wrote %d data points", write_good);
struct LP_IMAGE_INFO * h0
int hzero(struct LP_IMAGE_INFO *image)
int _copyImage(struct LP_IMAGE_INFO *i1, struct LP_IMAGE_INFO *i2)
int findMean(struct SCAN_INFO *p1, struct SCAN_INFO *p2, int pass)
struct CHANNELS chans[MAX_CHANS]
int prepareData(struct SCAN_INFO *p1, struct SCAN_INFO *p2)
int fitcurve(double *x, double *y, int n, int ideg, double *coeff)
int remove10X(struct SCAN_INFO *p1, struct SCAN_INFO *p2, int pass)
int sendImageStruct(struct LP_IMAGE_INFO *image, int mode)
int mySort(struct CHANNELS *a, struct CHANNELS *b)