fixthings (version 1.0)

You can also look at:
#! /usr/bin/ksh

###########################################################################
#
# 
# SYNTAX: fixthings
#
# BRIEFLY: Fix a number of minor spacecraft-related problems in the data.
#
# DESCRIPTION: This routine adjusts the unfiltered event files to correct for
# DESCRIPTION: various spacecraft problems.
# DESCRIPTION: Currently there are two such problems.
# DESCRIPTION: First between Feb 10, 1994 and Apr 8, 1994 some of the
# DESCRIPTION: GIS3 PHA telemetry bits were stuck in the "on" position.
# DESCRIPTION: The data from this period can be recovered, but with
# DESCRIPTION: some loss of spectral resolution. 
# DESCRIPTION: <p>
# DESCRIPTION: The second problem is that occaisionally the spacecraft is
# DESCRIPTION: switched into FAST mode before it is switched from 4 CCD
# DESCRIPTION: to 1 CCD mode. Data is actually taken on one CCD
# DESCRIPTION: (no guarantee that it is the correct one), but
# DESCRIPTION: the FITS keywords show 4 CCD mode. The fast4fix STOOL
# DESCRIPTION: adjusts the keywords to reflect the actual mode.
# DESCRIPTION: As of Feb 6, 1996 this only significantly affected three
# DESCRIPTION: sequences: 10010160, 40011000, and 41010000.
#
# VERSION: 1.0
#
# HISTORY: 0.0 -> 1.0 8/21/96 Now remove ascalin.par, flookup.par, and
# HISTORY: fparkey.par after gis3bitfix runs.
#
##############################################################################
#DEBUG=1

#####################
# 4CCD fast mode
#######################
list=$($UTIL/generate_filename unfiltered s[01] any 03 any )
list=$(ls $list 2>/dev/null )
if [ -n "$list" ]; then
     #############################
     # there are FAST mode files
     #############################
     $UTIL/milestone "Checking FAST mode files for correct CCD mode"

     for file in $list ; do

          $UTIL/log_entry "Checking $file"
          $STOOLS/fast4fix $file >stdout.log 2>stderr.log
          code=$?
          level=$code
          if [ $level -gt 2 -o $level -lt 0 ]; then
               level=2
          fi
          $UTIL/stool_test fast4fix $code $0 $level stdout.log stderr.log

     done
fi


#######################################
######################################
##
##  GIS3 stuck bit
##
#######################################
#######################################

###############################################
# read number of telemetry files from job par
##############################################
nfiles=$($UTIL/read_parfile $JOBPAR frfcnt)
if [ -z "$nfiles" ]; then
     nfiles=0
fi

if [ $nfiles -eq 0 ]; then
     $UTIL/exception $0 3 "Can't get non-zero number of frf files from $JOBPAR"
fi

#######################################################
# loop through the telemetry files
#######################################################
typeset -i i=1
while [ $i -le $nfiles ]; do
     number="$(echo $i | nawk '{printf ("%03d", $0)}')"
     telemetry=$($UTIL/read_parfile $JOBPAR frffile_$number)
     telemetry=${telemetry##*/}
     telemetry=${telemetry%.Z}

     date=${telemetry#ft}
     date=${date%_*}

     if [ $date -ge 940210 -a $date -le 940408 ]; then
          ###############################
          # GIS3 files have the problem
          ###############################
          $UTIL/milestone "Fixing stuck bits in GIS3 unfiltered event files"

          attitude=$($UTIL/read_parfile $JOBPAR attfile_$number)
          attitude=${attitude##*/}
          attitude=${attitude%.Z}



          list=$($UTIL/generate_filename unfiltered g3 any 70 any )
          list=$(ls $list 2>/dev/null)

          for file in $list ; do
               
               keyword=$($UTIL/read_fits_keyword $file[0] TLM_FILE )
 
               if [ "$keyword" = "$telemetry" ]; then
                    ###########################################
                    # event file has the right telemetry file
                    ###########################################
                    $UTIL/log_entry "Fixing $file"

                    index=$($UTIL/parse_filename index $file )
                    bitrate=$($UTIL/parse_filename bitrate $file )

                    rm -f file.tmp
                    echo $file >file.tmp
                    teldef=$($UTIL/generate_filename teldef \
                                                     g3 $index 70 $bitrate )

                    ghf=$(echo $telemetry | tr '.' '_').ghf

                   
                    $FTOOLS/gis3bitfix.e file.tmp $teldef $ghf $attitude \
                                            >stdout.log 2> stderr.log
                    $UTIL/ftool_test gis3bitfix.e $? $0 2 stdout.log stderr.log
                    rm -f file.tmp
                    rm -f ascalin.par
                    rm -f flookup.par
                    rm -f fparkey.par

                    #######################################################
                    # rename the fixed file to replace the original file
                    #######################################################
                    mv $file.fix $file
               fi
          done
     fi

     let i=$i+1
done

rm -f gis3bitfix.kw
                    

               
      
    




exit 0