00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <muse.h>
00023 #include <string.h>
00024
00025
00062
00063
00066 #define PRINT_USAGE(rc) \
00067 fprintf(stderr, "Usage: %s [ -s1 first_slice ] [ -s2 last_slice ] " \
00068 "[ -n nifu ] TRACE_SAMPLES\n", argv[0]); \
00069 cpl_end(); return (rc);
00070
00071 int main(int argc, char **argv)
00072 {
00073 cpl_init(CPL_INIT_DEFAULT);
00074 muse_processing_recipeinfo(NULL);
00075
00076 if (argc <= 1) {
00077
00078 PRINT_USAGE(1);
00079 }
00080
00081 char *tsname = NULL;
00082 short slice1 = 1,
00083 slice2 = 48;
00084 unsigned char nifu = 0;
00085
00086
00087 int i;
00088 for (i = 1; i < argc; i++) {
00089 if (strncmp(argv[i], "-s1", 4) == 0) {
00090
00091 i++;
00092 if (i < argc) {
00093 slice1 = atoi(argv[i]);
00094 } else {
00095 PRINT_USAGE(2);
00096 }
00097 } else if (strncmp(argv[i], "-s2", 4) == 0) {
00098
00099 i++;
00100 if (i < argc) {
00101 slice2 = atoi(argv[i]);
00102 } else {
00103 PRINT_USAGE(3);
00104 }
00105 } else if (strncmp(argv[i], "-n", 3) == 0) {
00106
00107 i++;
00108 if (i < argc) {
00109 nifu = atoi(argv[i]);
00110 if (nifu == 0 || nifu > kMuseNumIFUs) {
00111 PRINT_USAGE(5);
00112 }
00113 } else {
00114 PRINT_USAGE(4);
00115 }
00116 } else if (strncmp(argv[i], "-", 1) == 0) {
00117 PRINT_USAGE(9);
00118 } else {
00119 if (tsname) {
00120 break;
00121 }
00122 tsname = argv[i];
00123 }
00124 }
00125
00126 int iext = 1;
00127 if (nifu) {
00128 iext = muse_utils_get_extension_for_ifu(tsname, nifu);
00129 }
00130 cpl_table *ts = cpl_table_load(tsname, iext, 1);
00131 if (!ts) {
00132 fprintf(stderr, "%s: %s: %s\n", argv[0], tsname, cpl_error_get_message());
00133
00134 PRINT_USAGE(10);
00135 }
00136 cpl_propertylist *header = cpl_propertylist_load(tsname, iext);
00137 char *extname = NULL;
00138 if (cpl_propertylist_has(header, "EXTNAME")) {
00139 extname = cpl_sprintf("[%s]", muse_pfits_get_extname(header));
00140 }
00141 printf("MUSE TRACE_SAMPLES table \"%s%s\", contains %"CPL_SIZE_FORMAT" rows\n",
00142 tsname, extname ? extname : "", cpl_table_get_nrow(ts));
00143 extname = NULL;
00144 cpl_propertylist_delete(header);
00145
00146 cpl_error_code rc = muse_trace_plot_widths(ts, slice1, slice2, nifu);
00147 switch (rc) {
00148 case CPL_ERROR_NONE:
00149 rc = 0;
00150 break;
00151 case CPL_ERROR_ILLEGAL_INPUT:
00152 fprintf(stderr, "%s: \"%s%s\" does not seem to contain a MUSE tracing "
00153 "samples table!\n", argv[0], tsname, extname ? extname : "");
00154 rc = 11;
00155 break;
00156 case CPL_ERROR_FILE_NOT_CREATED:
00157
00158 fprintf(stderr, "%s: %s (temporary file for plotting)\n",
00159 argv[0], cpl_error_get_message());
00160 rc = 12;
00161 break;
00162 case CPL_ERROR_UNSUPPORTED_MODE:
00163 fprintf(stderr, "%s: your platform does not seem to support pipes "
00164 "[popen()/pclose()]!\n", argv[0]);
00165 rc = 20;
00166 break;
00167 case CPL_ERROR_ASSIGNING_STREAM:
00168 fprintf(stderr, "%s: could not open gnuplot (this tool uses it for "
00169 "plotting)!\n", argv[0]);
00170 rc = 21;
00171 break;
00172 default:
00173 rc = 50;
00174 }
00175 cpl_free(extname);
00176
00177 cpl_table_delete(ts);
00178 cpl_end();
00179 return rc;
00180 }
00181