61 static float sinEl[] = {2.6, 2.3, 2.0, 1.7, 1.4, 1.1, 1.4, 1.7, 2.0, 2.3, 2.6};
74 for(i=0,j=0;i<dl;i+=2)
76 ydata[j] = (data[i] + data[i+1]) / 2.0;
84 for(i=0,j=0;i<dl;i+=4)
86 ydata[j] = (data[i] + data[i+1] + data[i+2] + data[i+3]) / 4.0;
92 for(i=0,j=0;i<dl;i+=2)
94 ydata[j] = (data[i] + data[i+1]) / 2.0;
105 float *tau0, *siga, *sigb;
114 float a1,b1,siga1,sigb1,chi2_1,q1,
115 a2,b2,siga2,sigb2,chi2_2,q2;
118 float sinel[11], delta_airmass, upper_airmass, lower_airmass;
120 dlen = (int)h->
noint;
129 ydata[j] = ydata[i] - ydata[i+1];
137 printf(
"Problems: datalen != 11: %d\n", dlen);
148 xdata[i] = (float)(i) + 1.0;
149 ydata[i] = log(ydata[i]);
169 delta_airmass = (upper_airmass - lower_airmass) / 5.0;
171 sinel[0] = sinel[10] = lower_airmass;
172 sinel[1] = sinel[ 9] = lower_airmass + delta_airmass * 1.0;
173 sinel[2] = sinel[ 8] = lower_airmass + delta_airmass * 2.0;
174 sinel[3] = sinel[ 7] = lower_airmass + delta_airmass * 3.0;
175 sinel[4] = sinel[ 6] = lower_airmass + delta_airmass * 4.0;
176 sinel[5] = upper_airmass;
187 sptip_lsqfit( sinel, &ydata[0], 0, 5, &sig[0], 0, &a1, &b1, &siga1, &sigb1, &chi2_1, &q1);
188 sptip_lsqfit( sinel, &ydata[0], 5, 10, &sig[0], 0, &a2, &b2, &siga2, &sigb2, &chi2_2, &q2);
190 a1 = (a1 + a2) / 2.0;
191 b1 = (b1 + b2) / -2.0;
194 *siga = (siga1 + siga2) / 2.0;
195 *sigb = (sigb1 + sigb2) / 2.0;
199 st_report(
"%.2f: %5.4f %f %f", h->
scan, *tau0, *siga, *sigb);
271 int ret, i, j, n = 0;
272 float tau0, siga, sigb, fscan;
273 double t_total = 0.0;
285 fscan = round(fscan);
287 st_report(
"Looking for all SPTIP scans starting with %.2f", fscan);
332 t_total /= (double)n;
376 st_report(
"DEBUG: Using Automatic tau0 = %.3f from scan %.0f",
384 st_warn(
"No Current Tau to Use");
395 printf(
"\nSPTIP Display Not Functional Yet\n\n");
401 #define SQR(a) (sqrarg=(a),sqrarg*sqrarg)
403 int sptip_lsqfit(x, y,
bdata, edata, sig, mwt, a, b, siga, sigb, chi2, q)
404 float x[], y[], sig[], *a, *b, *siga, *sigb, *chi2, *q;
405 int bdata, edata, mwt;
408 float wt, t, sxoss, sx=0.0, sy=0.0,
409 st2 = 0.0,
ss, sigdat;
417 for(i=bdata;i<edata;i++)
419 wt = 1.0 /
SQR(sig[i]);
427 for(i=bdata;i<edata;i++)
440 for(i=bdata;i<edata;i++)
442 t=(x[i]-sxoss)/sig[i];
449 for(i=bdata;i<edata;i++)
458 *a = (sy - sx * (*b)) /
ss;
460 *siga = sqrt((1.0 + sx*sx / (
ss * st2)) /
ss);
461 *sigb = sqrt( 1.0 / st2);
467 for(i=bdata;i<edata;i++)
469 *chi2 +=
SQR(y[i]-(*a)-(*b)*x[i]);
474 sigdat=sqrt((*chi2)/(edata-bdata-2));
struct LP_IMAGE_INFO * h0
struct PARSE_STACK * args
int zero_check(char *who, int dl, float *data)
int sptip_min_max(float *ydata, int dl, double scan)
struct CONTINUUM_SPTIP cont_sptip_send
#define VERBOSE_CALIBRATE
int sptip_lsqfit(float x[], float y[], int bdata, int edata, float sig[], int mwt, float *a, float *b, float *siga, float *sigb, float *chi2, float *q)
struct TIP_RESULTS results[4]
int sptip_display_sptip(float *tau0, float *siga, float *sigb, float *data, struct HEADER *h, int plot, int chan)
float bdata[MAX_ATM_ELEMENTS]
float xdata[MAX_ATM_ELEMENTS]
int cont_display_sptip(struct LP_IMAGE_INFO *image, int plot)
float ydata[MAX_ATM_ELEMENTS]
int sptip_bin_data(float *ydata, int dl, float *data, struct HEADER *h)