aboutsummaryrefslogtreecommitdiff
path: root/src/libcf/cf_set_user_gtis.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-03-04 21:21:30 -0500
commitd54fe7c1f704a63824c5bfa0ece65245572e9b27 (patch)
treeafc52015ffc2c74e0266653eecef1c8ef8ba5d91 /src/libcf/cf_set_user_gtis.c
downloadcalfuse-d54fe7c1f704a63824c5bfa0ece65245572e9b27.tar.gz
Initial commit
Diffstat (limited to 'src/libcf/cf_set_user_gtis.c')
-rw-r--r--src/libcf/cf_set_user_gtis.c100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/libcf/cf_set_user_gtis.c b/src/libcf/cf_set_user_gtis.c
new file mode 100644
index 0000000..54a88d5
--- /dev/null
+++ b/src/libcf/cf_set_user_gtis.c
@@ -0,0 +1,100 @@
+/*****************************************************************************
+ * Johns Hopkins University
+ * Center For Astrophysical Sciences
+ * FUSE
+ *****************************************************************************
+ *
+ * Synopsis: cf_set_user_gtis(fitsfile *infits, long nseconds,
+ * float *timeline_times,
+ * unsigned char *timeline_status);
+ *
+ * Description: Apply user-defined good time intervals to timeline table.
+ *
+ * Arguments: fitsfile *infits Input FITS file pointer
+ * long nseconds Number of points in the timeline table
+ * float *timeline_times Array of times
+ * unsigned char *timeline_status The status flag array
+ *
+ * Calls:
+ *
+ * Returns: 0 on success
+ *
+ * History: 09.10.03 1.1 bjg Initial coding
+ *
+ * 09.12.03 1.2 bjg Bug fix. When nusergti was zero or less
+ * this function set all the photons to
+ * bad. Now it doesn't change anything.
+ * 04.20.04 1.3 bjg Remove unused variables
+ * Change format to match arg type in
+ * sprintf.
+ *
+ *
+ ****************************************************************************/
+
+#include <string.h>
+#include <stdio.h>
+#include "calfuse.h"
+
+int
+cf_set_user_gtis(fitsfile *infits, long nseconds,
+ float *timeline_times, unsigned char *timeline_status)
+{
+ char CF_PRGM_ID[] = "cf_set_user_gtis";
+ char CF_VER_NUM[] = "1.3";
+
+ int errflg=0, status=0, nusergti;
+ long i,n;
+ char file_name[FLEN_VALUE];
+ float limit1,limit2;
+ char keywd1[FLEN_KEYWORD],keywd2[FLEN_KEYWORD];
+ fitsfile *scrnfits;
+
+ cf_error_init(CF_PRGM_ID, CF_VER_NUM, stderr);
+ cf_timestamp(CF_PRGM_ID, CF_VER_NUM, "Begin Processing");
+
+ if ((errflg = cf_proc_check(infits, CF_PRGM_ID) )) return errflg;
+
+ /*
+ * Open the screening parameters file and read the good time intervals.
+ */
+ FITS_read_key(infits, TSTRING, "SCRN_CAL", file_name, NULL, &status);
+ FITS_open_file(&scrnfits, cf_parm_file(file_name), READONLY, &status);
+
+ FITS_read_key(scrnfits, TINT, "NUSERGTI", &nusergti, NULL, &status);
+
+ if (nusergti>0){
+
+ i=0;
+
+ for (n=1;n<=nusergti;n++){
+ sprintf(keywd1, "GTIBEG%02ld",n);
+ FITS_read_key(scrnfits, TFLOAT, keywd1, &limit1, NULL, &status);
+ sprintf(keywd2, "GTIEND%02ld",n);
+ FITS_read_key(scrnfits, TFLOAT, keywd2, &limit2, NULL, &status);
+
+
+ while ((i<nseconds)&&(timeline_times[i]<limit1)) {
+ timeline_status[i] |= TEMPORAL_USER;
+ i++;
+ }
+
+ while ((i<nseconds)&&(timeline_times[i]<limit2)) {
+ i++;
+ }
+
+ }
+
+
+ while (i<nseconds){
+ timeline_status[i] |= TEMPORAL_USER;
+ i++;
+ }
+
+ }
+
+ FITS_close_file(scrnfits, &status);
+
+ cf_proc_update(infits, CF_PRGM_ID, "COMPLETE");
+ cf_timestamp(CF_PRGM_ID, CF_VER_NUM, "Done processing");
+ return status;
+}