72 #define SQR(a) (sqrarg=(a),sqrarg*sqrarg)
74 #define MAX_NUM_BEAM_SEP 2048
123 log_msg(
"do_addHeader(): Error adding scan %.2f, in ver %d", scan, ver);
127 return((
struct HEADER *)NULL);
138 if(scan_headers == NULL)
140 return((
struct HEADER *)NULL);
147 for(m=scan_headers;m->
next; m=m->
next)
167 return((
struct HEADER *)NULL);
179 if(scan_headers == NULL)
185 return((
struct HEADER *)NULL);
188 scan_headers->
ver = v;
189 scan_headers->
scan = s;
191 bcopy((
char *)head, (
char *)&scan_headers->
head,
sizeof(
struct HEADER));
193 scan_headers->
next = NULL;
195 return(&scan_headers->
head);
199 for(m=scan_headers;m->
next; m=m->
next)
209 return((
struct HEADER *)NULL);
215 bcopy((
char *)head, (
char *)&m->
next->
head,
sizeof(
struct HEADER));
229 for(p=scan_headers; p; p=q)
248 fprintf(stdout,
"%c[0m" , 0x1b);
250 fprintf(stdout,
"%c[2J", 0x1b);
260 fprintf(stdout,
"%c[%d;%dH" , 0x1b, y, x);
273 double g1, g2, y, dyda[4];
279 fprintf(stderr,
"Unable to open output file %s\n",
middleRowFname);
286 fgauss(xdata[i], aa1, &y, dyda);
289 fgauss(xdata[i], aa2, &y, dyda);
292 fprintf(fp,
"%f %f %f %f\n", xdata[i], ydata[i], g1, g2);
315 st_print(
"No Middle Row to Plot\n");
316 st_print(
"Have you done a 'gridmap' and a 'mapgauss'?\n");
336 sprintf(outfile,
"/tmp/%s/beam_map.dat",
session);
338 if((fp = fopen(outfile,
"w")) == NULL)
340 st_print(
"Unable to open output file %s\n", outfile);
372 char outfile[256],
source[80];
388 strncpy(source, h->
object, 16);
391 sprintf(outfile,
"%s-BeamMap-%.1f-IF%1d.csv", source, h->
restfreq / 1e3, (
int)round(
env->
if_feed * 100.0));
399 if(!strstr(outfile,
".csv"))
401 strcat(outfile,
".csv");
406 sprintf(outfile,
"beam_map.csv");
409 if((fp = fopen(outfile,
"w")) == NULL)
411 st_print(
"Unable to open output file %s\n", outfile);
417 fprintf(fp,
"# MAP Source (Name): %16.16s\n", h->
object);
418 fprintf(fp,
"# MAP X-Axis (Cols): %.0f\n", h->
noxpts);
419 fprintf(fp,
"# MAP Y-Axis (Rows): %.0f\n", h->
noypts);
420 fprintf(fp,
"# MAP Delta-X (Secs): %.0f\n", h->
deltaxr);
421 fprintf(fp,
"# MAP Delta-Y (Secs): %.0f\n", h->
deltayr);
422 fprintf(fp,
"# MAP Freq (GHz ): %.6f\n", h->
restfreq / 1e3);
423 fprintf(fp,
"# MAP Bk-End : %8.8s\n", h->
backend);
427 fprintf(fp,
"%.1f, ", (
float)y - (
float)
beam_map.
map_h / 2.0 + 0.5);
433 fprintf(fp,
"%f", pvalue);
457 int i, x, y, j, n, mid;
458 int plotval = 0, scanct = 0, scans = 0, tsys = 0,
459 rval = 0, itime = 0, offsets = 0, writeit = 0;
460 int xstart, xend, ystart, yend;
461 char fname[256], blanks[80];
527 st_report(
"gridMapStats(): Writing outputfile: %s", fname);
529 if((fp = fopen(fname,
"w") ) <= (FILE *)0)
531 st_fail(
"Unable to open %s", fname);
543 st_fail(
"Missing filename arg for '/w' flag");
553 n = 8 - strlen(bm->
source);
580 if((bm->
bmes[mid][i].
rval != 0.0) && (xstart == -1))
591 st_print(
"# MAP Start-X: %8d\n", xstart +1);
592 st_print(
"# MAP End-X: %8d\n", xend +1);
601 if((bm->
bmes[i][mid].
rval != 0.0) && (ystart == -1))
612 st_print(
"# MAP Start-Y: %8d\n", ystart +1);
613 st_print(
"# MAP End-Y: %8d\n", yend +1);
626 if((plotval + scanct + scans + tsys + rval + itime + offsets) == 0)
639 for(y=0;y<bm->
map_h;y++)
677 for(x=0;x<bm->
map_w;x++)
701 for(y=0;y<bm->
map_h;y++)
710 for(x=1;x<bm->
map_w;x++)
714 if(x < (bm->
map_w-1))
732 for(y=0;y<bm->
map_h;y++)
739 for(x=0;x<bm->
map_w;x++)
767 if(x < (bm->
map_w-1))
792 char source[80], fname[256], psfilename[256];
796 sprintf(fname,
"/tmp/%s/bmap.dem",
session);
797 if((fp = fopen(fname,
"w")) == NULL)
799 fprintf(stderr,
"Unable to open output file \"%s\"\n", fname);
813 fprintf(fp,
"reset\n");
814 fprintf(fp,
"set title \"Beam Map of %s\"\n", source);
815 fprintf(fp,
"set xlabel \"Map El Offset\"\n");
816 fprintf(fp,
"set ylabel \"Map Az Offset\"\n");
820 fprintf(fp,
"set border 4095\n");
821 fprintf(fp,
"set hidden3d\n");
828 fprintf(fp,
"set xrange [%.2f:%.2f]\n",
max / 2.0 -
max,
max / 2.0);
829 fprintf(fp,
"set yrange [%.2f:%.2f]\n",
max / 2.0 -
max,
max / 2.0);
854 fprintf(fp,
"set isosamples 60\n");
856 fprintf(fp,
"set ticslevel 0.1\n");
864 fprintf(fp,
"set pm3d at bs ");
868 fprintf(fp,
"set pm3d at sb ");
873 fprintf(fp,
"interpolate %d,%d\n", interp+1, interp+1);
883 fprintf(fp,
"unset pm3d\n");
887 fprintf(fp,
"set pm3d at s ");
891 fprintf(fp,
"interpolate %d,%d\n", interp+1, interp+1);
901 fprintf(fp,
"set palette color\n");
905 fprintf(fp,
"set palette defined\n");
910 fprintf(fp,
"set palette model RGB\n");
911 fprintf(fp,
"set palette defined ( 0 0 0 0, 1 0 0 1, 3 0 1 0, 4 1 0 0, 6 1 1 1 )\n");
916 fprintf(fp,
"set palette model HSV\n");
917 fprintf(fp,
"set palette defined ( 0 0 1 1, 1 1 1 1 )\n");
922 fprintf(fp,
"set palette model RGB\n");
923 fprintf(fp,
"set palette defined ( 0 0 0 0, 1 1 1 1 )\n");
927 fprintf(fp,
"set palette model RGB\n");
928 fprintf(fp,
"set palette defined ( 0 \"green\", 1 \"blue\", 2 \"red\", 3 \"orange\" )\n");
937 fprintf(fp,
"set palette gamma 1.0\n");
948 fprintf(fp,
"set terminal x11 enhanced %d size %d, %d position 500, 0\n", 21, 1024, 1080 );
952 fprintf(fp,
"set terminal x11 enhanced %d size %d, %d position 930, 0\n", 20, 1100, 1100 );
957 fprintf(fp,
"set terminal postscript enhanced size 17, 9.5625\n");
964 fprintf(fp,
"set contour surface\n");
969 fprintf(fp,
"set contour both\n");
973 fprintf(fp,
"set contour base\n");
980 st_print(
"Contour levels set to:\n");
988 if(i == 6 || i == 13)
1004 fprintf(fp,
"splot \"/tmp/%s/beam_map.dat\" every 1::0::1024 with lines\n",
session);
1009 sprintf(psfilename,
"/tmp/%s/ccal_plot.ps",
session);
1011 fprintf(fp,
"set out \"%s\"\n", psfilename);
1012 fprintf(fp,
"splot \"/tmp/%s/beam_map.dat\" every 1::0::1024 with lines\n",
session);
1015 st_print(
"\nMade PS file: %s\n\n", psfilename);
1048 st_report(
"Gridmap Plot Limits: Az: %d - %d; El: %d - %d",
1078 st_fail(
"xe val: %d, can not be same as xb: %d", xe, xb);
1099 st_fail(
"ye val: %d, can not be same as yb: %d", ye, yb);
1122 int i, j, x, y, indx1, indx2, ret, hm, glen, request;
1124 double arcsec, max1=0.0, max2=0.0;
1125 double xd[512], yd[512], sig[512];
1126 double aa1[4], aa2[4], peak1, peak2, beam1, beam2;
1127 char tbuf[256], ttbuf[256];
1132 st_print(
"\n No Map to fit a gaussian to\n");
1133 st_print(
"Have you done a 'gridmap' yet?\n\n");
1140 bzero((
char *)&xd[0],
sizeof(xd));
1141 bzero((
char *)&yd[0],
sizeof(yd));
1162 st_print(
"\n No Map in row %d to fit a gaussian to\n", y);
1174 strcat(tbuf, ttbuf);
1177 st_report(
"Fitting Gaussian Using Scan(s) %s; Row %d; Arcsec = %.1f", tbuf, (
int)p->
headers[0]->
ycell0-1, arcsec);
1181 xdata[
x] = (float)x * arcsec;
1208 if(max1 == 0.0 || max2 == 0.0)
1210 st_fail(
"No data to do gausfit");
1214 st_report(
"Guess, Plus Peak: %7.2f @ Sample %d or %.2f\"",
1215 max1, indx1, xdata[indx1]);
1216 st_report(
"Guess, Minus Peak: %7.2f @ Sample %d or %.2f\"",
1217 max2, indx2, xdata[indx2]);
1219 fabs(indx1-indx2) * arcsec);
1225 for(i=indx1-glen,j=0;i<indx1+glen;i++,j++)
1231 st_report(
"Fitting a %d Point Gauss to Plus Peak", j+1);
1233 aa1[2] = xdata[indx1];
1234 aa1[3] = (double)j * arcsec;
1240 st_fail(
"1st Half Gauss Fit Failed");
1244 st_print(
"%2d %4.1f %4.1f\n", i, xd[i], yd[i]);
1250 st_report(
"Found Plus Beam @ %7.2f\", Peak = %7.2f, Beam Width = %7.2f",
1251 aa1[2], aa1[1], fabs(aa1[3]));
1254 beam1 = fabs((aa1[2] - xdata[hm]));
1257 for(i=indx2-glen,j=0;i<indx2+glen;i++,j++)
1263 st_report(
"Fitting a %d Point Gauss to Minus Peak", j+1);
1265 aa2[2] = xdata[indx2];
1266 aa2[3] = (double)j * arcsec;
1272 st_fail(
"2nd Half Gauss Fit Failed");
1276 st_print(
"%2d %4.1f %4.1f\n", i, xd[i], yd[i]);
1282 st_report(
"Found Minus Beam @ %7.2f\", Peak = %7.2f, Beam Width = %7.2f",
1283 aa2[2], aa2[1], fabs(aa2[3]));
1286 beam2 = fabs((aa2[2] - xdata[hm]));
1288 st_report(
"Plus Beam +%7.2f\" From Center", beam2);
1289 st_report(
"Minus Beam -%7.2f\" From Center", beam1);
1290 st_report(
"Beam Sep: %7.2f\"", fabs(peak2-peak1));
1302 st_print(
" <- Neg Beam Stronger ");
1306 st_print(
" Pos Beam Stronger -> ");
1321 int gridmap_lsqfit(
x,
y,
bdata, ndata, sig, mwt, a, b, siga, sigb, chi2, q)
1322 double
x[],
y[], sig[], *a, *b, *siga, *sigb, *chi2, *q;
1323 int bdata, ndata, mwt;
1326 double wt, t, sxoss, sx=0.0, sy=0.0, st2=0.0,
ss, sigdat;
1334 for(i=bdata;i<ndata;i++)
1336 wt = 1.0 /
SQR(sig[i]);
1344 for(i=bdata;i<ndata;i++)
1357 for(i=bdata;i<ndata;i++)
1359 t = (x[i] - sxoss) / sig[i];
1361 *b += t * y[i] / sig[i];
1366 for(i=bdata;i<ndata;i++)
1375 *a = (sy - sx * (*b)) /
ss;
1376 *siga = sqrt((1.0 + sx*sx / (
ss * st2)) /
ss);
1377 *sigb = sqrt(1.0 / st2);
1382 for(i=bdata;i<ndata;i++)
1384 *chi2 +=
SQR(y[i] - (*a) - (*b) * x[i]);
1388 sigdat = sqrt((*chi2) / (ndata - bdata -2));
1451 int x,
y, j, start, end;
1452 double xd[32], yd[32], sig[512];
1453 double a, b, siga, sigb, chi2, q,
xdata[512];
1457 st_report(
"Baselines already removed from Map");
1464 st_report(
"mapbaselines set to 0; skipping removal");
1471 st_report(
"gridmap_removeBaselines(): Removing Linear Baseline Using Center %d samples", abs(nb));
1475 st_report(
"gridmap_removeBaselines(): Removing Linear Baseline Using %d samples on both ends", nb);
1478 bzero((
char *)&xd[0],
sizeof(xd));
1479 bzero((
char *)&yd[0],
sizeof(yd));
1495 for(x=start;x<end;x++)
1522 gridmap_lsqfit(xd, yd, 0, j-1, sig, 0, &a, &b, &siga, &sigb, &chi2, &q);
1524 if(a != 0.0 && b != 0.0)
1548 if(fabs(p->headers[i]->scan-scan) < 0.005)
1587 int x,
y, dlen, skip = 0;
1589 double iwt, owt, beamthrow;
1630 beamthrow = fabs(h->
mbeam[0]) + fabs(h->
pbeam[0]);
1641 if(y < 0 || y >= bm->
map_h)
1643 st_fail(
"Offset %d out of range of map %d", y, bm->
map_h);
1650 p = &bm->
bmes[y][0];
1653 st_report(
"gridmap_grid_data(): Gridding %d samples", dlen);
1655 for(x=0;x<dlen;x++,p++)
1677 p->
rval = (p->
rval * owt + ydata[x] * iwt) / (owt + iwt);
1734 int x, y, dBmap = 0, isnanCount=0;
1735 double pvalue, max_value = -1e9, min_value = 1e9, ylower, yupper;
1759 max_value = GSL_MAX(pvalue, max_value);
1760 min_value = GSL_MIN(pvalue, min_value);
1765 st_report(
"Corrected %d bad cells in Map", isnanCount);
1771 st_report(
"Raw: Min/Max Map Values: %f/%f", min_value, max_value);
1798 pvalue = log10(fabs(pvalue) / max_value) * 10.0;
1805 if(
env->
lowerdb < 0.0 && pvalue < env->lowerdb)
1825 double diff, closest = 1e9;
1829 st_report(
"findMapColIndx(%f, %d)", x1, y1);
1852 st_report(
"findMapColIndx(): Closest = %f, indx = %d", closest, indx);
1864 double diff, closest = 1e9;
1868 st_report(
"findMapRowIndx(%d, %f)", x1, y1);
1891 st_report(
"findMapRowIndx(): Closest = %f, indx = %d", closest, indx);
1900 int x, y, cr, start, end, dlen, old_plotstyle;
1901 double xb, xe, yb, ye;
1920 st_fail(
"No Grid Map Loaded");
1956 dlen = (end - start);
1966 dlen = (end - start);
1987 st_report(
"Start = %d, End = %d, Dlen = %d", start, end, dlen);
2002 st_fail(
"gmapSlice(): No header found");
2006 for(y=start;y<end;y++)
2027 st_fail(
"gmapSlice(): No header found");
2031 for(x=start;x<end;x++)
2039 for(x=start;x<end;x++)
2067 char name[256], sysBuf[256];
2178 st_fail(
"gridMapPlot(): Unable to determine GNUPLOT windo ID");
2187 sprintf(sysBuf,
"import -window 0x%x -silent %s", win, name);
2213 sprintf(sysBuf,
"xgraphic load '/tmp/%s/bmap.dem'",
session);
2217 st_report(
"Parsing Command: %s", sysBuf);
2225 st_warn(
"Have you done a 'gridmap'?");
2274 int i,
n=0, ret,
delay=0,
first = 1, w, h, append=0;
2286 st_warn(
"No data file loaded");
2317 if(strncmp(p->
obsmode,
"CONTMAP", 7))
2336 fprintf(stderr,
"Error in grid map size: %d %d\n", w, h);
2411 st_report(
"No Scans Matched Criteria or all already included");
2429 sprintf(sysBuf,
"xgraphic load '/tmp/%s/bmap.dem'",
session);
2446 if(bl > -10 && bl < 10)
2450 st_report(
"Setting Map Baseline Region to %d samples", bl);
2457 st_warn(
"Map Baselines of %d out of range: -10 to +10", bl);
2469 st_warn(
"Missing Args for mapangle");
2488 double bscan, escan;
2492 st_warn(
"Missing Args for center_row()");
2506 st_report(
"Analysing Center Map Row %.0f", scan);
2525 int i, n=0, pause = 0, ret,
first = 1;
2527 double bscan, escan, err, error;
2528 double bsep, bw1t, bw2t, peak1, peak2, ratio;
2534 st_warn(
"No data file loaded");
2557 if(strncmp(p->
obsmode,
"CONTMAP", 7))
2588 ret =
getYesNoQuit(
"Any key to continue; 'q' to quit: [*,q]?");
2617 st_report(
"Results of %d map scans", n);
2620 st_print(
" Scan# Seperation Error BW1 BW2 PK1 PK2 Ratio\n");
2624 peak1 = peak2 = ratio = 0.0;
2627 for(i=0;i<n;i++,bms++)
2631 peak1 += bms->
peak1;
2632 peak2 += bms->
peak2;
2633 ratio += bms->
ratio;
2645 for(i=0;i<n;i++,bms++)
2649 if(bms->
ratio < 0.995)
2654 if(bms->
ratio > 1.005)
2663 st_print(
"%.2f %.2f %6.2f %5.2f %5.2f %5.2f %5.2f %5.2f %s\n",
2679 st_print(
"---------------------------\n");
2681 st_print(
" %3d Scans: %.2f %7.3f %5.2f %5.2f %5.2f %5.2f %5.2f\n\n",
2682 n, bsep, error, bw1t, bw2t, peak1, peak2, ratio);
2686 st_fail(
"No Scans Matched Criteria");
2715 int i, j=0, nb, start, end;
2716 double xd[32], yd[32], sig[32];
2717 double a, b, siga, sigb, chi2, q;
2719 bzero((
char *)&xd[0],
sizeof(xd));
2720 bzero((
char *)&yd[0],
sizeof(yd));
2726 st_report(
"Not enough baseline cells definded: %d", nb);
2730 st_report(
"cont_removeBaselines(): Removing Cont Baseline On %d datapoints", len);
2734 st_report(
"cont_removeBaselines(): Removing Linear Baseline Using center %d samples", nb*-1);
2738 st_report(
"cont_removeBaselines(): Removing Linear Baseline Using %d samples on both ends", nb);
2748 for(i=start;i<end;i++)
2768 for(i=len-nb;i<len;i++)
2778 gridmap_lsqfit(xd, yd, 0, j-1, sig, 0, &a, &b, &siga, &sigb, &chi2, &q);
2780 if(a != 0.0 && b != 0.0)
2784 d[i] = d[i] -(a+b*(float)i);
2797 char pbuf[256], inbuf[256], *cp;
2800 sprintf(pbuf,
"/usr/bin/xwininfo -name 'GNUPLOT_%s %d' | grep 'Window id' | awk '{print $4}'",
session, w);
2802 if( (fp = popen(pbuf,
"r") ) <= (FILE *)0 )
2804 st_fail(
"getPlotWinId(): Unable to open %s", pbuf);
2809 bzero(inbuf,
sizeof(inbuf));
2811 while((cp = fgets(inbuf,
sizeof(inbuf), fp)) != NULL)
2826 int i, win, record = 0, keep = 0;
2828 char name[256], sysBuf[256];
2858 st_fail(
"gmapRotate(): Unable to determine GNUPLOT windo ID");
2863 st_report(
"gmapRotate(): Using Window ID: 0x%x, filenames: %s", win, name);
2881 st_report(
"Deleting any Leftover Intermidiate Frames: /tmp/%s.???.dpx", name);
2883 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
2911 st_print(
"Control-C hit; Stoping\n");
2915 st_report(
"Deleting Intermidiate Frames: /tmp/%s.???.dpx", name);
2917 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
2928 sprintf(sysBuf,
"import -window 0x%x -silent /tmp/%s.%03d.dpx", win, name, i);
2935 st_report(
"Deleting any Old Movie File: %s.m4v", name);
2937 sprintf(sysBuf,
"rm -f %s.m4v", name);
2940 st_report(
"Creating New Movie File: %s.m4v", name);
2942 sprintf(sysBuf,
"xterm -bg black -fg white -fn 10x20 -e /usr/bin/ffmpeg -r 8 \
2943 -i \"/tmp/%s.%%3d.dpx\" -crf 10 -vcodec h264 %s.m4v; sleep 5 &", name, name);
2951 st_report(
"Deleting Intermidiate Frames: /tmp/%s.???.dpx", name);
2953 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
2965 int i, lowerdb, maxdb, win, record = 0, keep = 0, indx = 0;
2966 double old_lowerdb, old_mapangle[2], old_zmin, old_zmax;
2967 char name[256], sysBuf[256];
3025 st_report(
"Deleting any Leftover Intermidiate Frames: /tmp/%s.???.dpx", name);
3027 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
3038 for(lowerdb=-1;lowerdb>-maxdb;lowerdb--)
3040 st_report(
"Using LowerDB's: %2d", lowerdb);
3052 st_fail(
"gmapRotate(): Unable to determine GNUPLOT windo ID");
3064 st_report(
"gmapRotate(): Using Window ID: 0x%x, filenames: %s", win, name);
3071 st_print(
"Control-C hit; Stoping\n");
3075 st_report(
"Deleting Intermidiate Frames: /tmp/%s.???.dpx", name);
3077 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
3095 sprintf(sysBuf,
"import -window 0x%x -silent /tmp/%s.%03d.dpx", win, name, indx);
3104 for(lowerdb=-maxdb;lowerdb<0;lowerdb++)
3106 st_report(
"Using LowerDB's: %2d", lowerdb);
3115 st_print(
"Control-C hit; Stoping\n");
3119 st_report(
"Deleting Intermidiate Frames: /tmp/%s.???.dpx", name);
3121 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
3139 sprintf(sysBuf,
"import -window 0x%x -silent /tmp/%s.%03d.dpx", win, name, indx);
3148 st_report(
"Deleting any Old Movie File: %s.m4v", name);
3150 sprintf(sysBuf,
"rm -f %s.m4v", name);
3153 st_report(
"Creating New Movie File: %s.m4v", name);
3155 sprintf(sysBuf,
"xterm -bg black -fg white -fn 10x20 -e /usr/bin/ffmpeg -r 8 \
3156 -i \"/tmp/%s.%%3d.dpx\" -crf 10 -vcodec h264 %s.m4v; sleep 5 &", name, name);
3167 st_report(
"Deleting Intermidiate Frames: /tmp/%s.???.dpx", name);
3169 sprintf(sysBuf,
"rm -f /tmp/%s.???.dpx", name);
3188 int i, j, x, n, indx1, indx2, ret, hm, glen;
3190 double arcsec, max1=0.0, max2=0.0;
3191 double xd[512], yd[512], sig[512];
3192 double aa1[4], aa2[4],
peak1,
peak2, beam1, beam2;
3193 double g1, g2, y, dyda[4];
3197 bzero((
char *)&xd[0],
sizeof(xd));
3198 bzero((
char *)&yd[0],
sizeof(yd));
3229 if(max1 == 0.0 || max2 == 0.0)
3231 st_fail(
"No data to do gausfit");
3235 st_report(
"Guess, Plus Peak: %7.2f @ Sample %d or %.2f\"", max1, indx1, xdata[indx1]);
3236 st_report(
"Guess, Minus Peak: %7.2f @ Sample %d or %.2f\"", max2, indx2, xdata[indx2]);
3237 st_report(
"Guess, Beam Sep: %7.2f\"", fabs(indx1-indx2) * arcsec);
3243 for(i=indx1-glen,j=0;i<indx1+glen;i++,j++)
3249 st_report(
"Fitting a %d Point Gauss to Plus Peak", j+1);
3251 aa1[2] = xdata[indx1];
3252 aa1[3] = (double)j * arcsec;
3258 st_fail(
"1st Half Gauss Fit Failed");
3262 st_print(
"%2d %4.1f %4.1f\n", i, xd[i], yd[i]);
3268 st_report(
"Found Plus Beam @ %7.2f\", Peak = %7.2f, Beam Width = %7.2f", aa1[2], aa1[1], fabs(aa1[3]));
3271 beam1 = fabs((aa1[2] - xdata[hm]));
3274 for(i=indx2-glen,j=0;i<indx2+glen;i++,j++)
3280 st_report(
"Fitting a %d Point Gauss to Minus Peak", j+1);
3282 aa2[2] = xdata[indx2];
3283 aa2[3] = (double)j * arcsec;
3289 st_fail(
"2nd Half Gauss Fit Failed");
3293 st_print(
"%2d %4.1f %4.1f\n", i, xd[i], yd[i]);
3299 st_report(
"Found Minus Beam @ %7.2f\", Peak = %7.2f, Beam Width = %7.2f", aa2[2], aa2[1], fabs(aa2[3]));
3302 beam2 = fabs((aa2[2] - xdata[hm]));
3304 st_report(
"Plus Beam +%7.2f\" From Center", beam2);
3305 st_report(
"Minus Beam -%7.2f\" From Center", beam1);
3306 st_report(
"Beam Sep: %7.2f\"", fabs(peak2-peak1));
3339 int x, j, n, start, end;
3341 double a, b, siga, sigb, chi2, q;
3350 st_report(
"mapbaselines set to 0; skipping removal");
3357 st_report(
"removeContMapBaselines(): Removing Linear Baseline Using Center %d samples", abs(nb));
3361 st_report(
"removeContMapBaselines(): Removing Linear Baseline Using %d samples on both ends + middle", nb);
3365 st_report(
"removeContMapBaselines(): Removing Linear Baseline Using %d samples on both ends", nb);
3368 bzero((
char *)&xd[0],
sizeof(xd));
3369 bzero((
char *)&yd[0],
sizeof(yd));
3377 start = (n / 2) - (abs(nb) / 2);
3378 end = (n / 2) + (abs(nb) / 2);
3380 for(x=start;x<end;x++)
3391 for(x=0;x<abs(nb);x++)
3399 start = (n / 2) - (abs(nb) / 2);
3400 end = (n / 2) + (abs(nb) / 2);
3402 for(x=start;x<end;x++)
3410 for(x=n-abs(nb);x<n;x++)
3437 gridmap_lsqfit(xd, yd, 0, j-1, sig, 0, &a, &b, &siga, &sigb, &chi2, &q);
3439 if(a != 0.0 && b != 0.0)
3474 sprintf(tbuf,
"get %.2f", scanno);
3477 strcpy(tbuf,
"show");
3510 st_report(
"Deleting Internal Grid Map");
3521 st_report(
"Skipping Grid Map Deleting");
struct LP_IMAGE_INFO * h0
int clearFillContStruct(struct HEADER *h, int dlen, char *xl, char *yl)
char * strcmprs(char *str)
int removeContMapBaselines(int pf, int nb)
struct PARSE_STACK * args
int interp(double *array, int nx, int ny, double *parray, int npx, int npy)
int deNewLineIt(char *buf)
int gridmap_showMiddleRow()
int printH_FlagHelp(char *cmd)
int gridmap_grid_data(float *data, struct HEADER *h)
float xdata[MAX_CONT_SAMPLES]
int setFlag(int flag, int state)
char glabels[MAX_GLABELS][80]
struct PARSE_FLAGS pflags[MAX_PARSE_FLAGS]
float ydata[MAX_CONT_SAMPLES]
struct BEAM_MAPS_SEP beam_map_sep[MAX_NUM_BEAM_SEP]
float global_gdata[MAX_CONT_SAMPLES]
struct SCAN_HEADERS * scan_headers
struct PARSE_FLAGS gmap_pflags[MAX_PARSE_FLAGS]
int processContinuum(struct HEADER *head, float *phases, float *data, int *dl, char *mode)
struct HEADER * checkScanHeader(int v, float s)
int log_msg(const char *fmt,...)
int gridmap_goWriteCenterRow(double *xdata, double *ydata, double *aa1, double *aa2, int n, double scanno)
int gridmap_write_datafile()
double limitValue(double l, double v, double u)
int findMapColIndx(double x1, int y1)
struct PARSE_FLAGS * findFirstFlag()
int meetsCritiria(struct HEADER *p, int mask)
int isScanIgnored(double scan)
struct CONTINUUM_PLAIN cont_plain_send
struct HEADER * headers[MAX_GMAP_SCANS]
struct BEAM_MAP_ELEM bmes[MAX_MAP_W][MAX_MAP_H]
int cont_removeBaselines(float *d, int len, double scan)
float bdata[MAX_ATM_ELEMENTS]
float xdata[MAX_ATM_ELEMENTS]
int gridmap_lsqfit(x, y, int bdata, int ndata, sig, int mwt,*a,*b,*siga,*sigb,*chi2,*q)
float gdata[MAX_CONT_SAMPLES]
void subArgs(int wt, const char *fmt,...)
struct HEADER * addScanHeader(int v, float s, struct HEADER *head)
int gmapFillOffsets(struct HEADER *h)
int findMapRowIndx(int x1, double y1)
int scanAlreadyLoaded(struct BEAM_MAP_ELEM *p, double scan)
float ydata[MAX_ATM_ELEMENTS]
struct HEADER * do_addHeader(int ver, float scan, struct HEADER *head)
int gridmap_writeDemFile(int off, int how)
int gridmap_removeBaselines(int nb)
int gridmap_write_csvfile()