idl routines for user projects

Last modified: Thu Mar 16 13:07:13 2023.


List of Routines


Routine Descriptions

A1963CHECKTIMES - EXAMPLE SCRIPT TO CHECK A1963 TIMES.

[Next Routine] [List of Routines]
NAME:
a1963checktimes - example script to check a1963 times.
SYNTAX: .run a1963checktimes.
ARGS:  none
DESCRIPTION:
   An example file to process a set of a1963 src files and compute
the amount of time available between source positions. You should
copy this file to a local directory and edit it to do what you
want..

After copying the file to a local directory:

 compute the times available given the az and ra (taken from the files)

 1. update todo array to include dates and files you want.
    to add to the end, just copy the last line, increment the index
    and fill in the two fields yymmdd and fname
 2. set makehardcopy=1 if you want hardcopy. You then need to
    define psfilename..
 
 The routine will :
 1. compute the info for each day using cmptimes
 2. plot all of the days 1 per page using plottimes
 3. print a list of the results to the screen.

 A simplified version of this file could be:

   srcfile='/usr/obs4/usr/a1963/n2903_nov30.dat'

   a1963cmptimes,041130,srcfile,datI       ; do the computatinos
   a1963plottimes,datI                     ; make the plots
   a1963printtimes,datI                    ; print the table

NOTE:
   Do @usrprojinit to include the path to this routine.

(See /pkg/rsi/local/libao/phil/usrproj/a1963checktimes.pro)


A1963CMPTIMES - A1963 COMPUTE TIMES GIVEN AZ,RA FROM SOURCE FILES

[Previous Routine] [Next Routine] [List of Routines]
NAME:
a1963cmptimes - a1963 compute times given az,ra from source files
SYNTAX: a1963cmptimes,yymmdd,srcfile,datI,srctime=srctime
ARGS:
   yymmdd: long    date (AST) for source file. It will find the first transit
                   of each position for this AST date.
  srcfile: string  the observing file used. It needs the ra,dec and the
                   AZ= in the comments field.
  srctime: long    number of seconds to track each source. The default
                   is 480 seconds.
RETURNS:
   dateI[n]:{}     structure holding the computed data. 1 entry per 
                   source position. The structure contains: 
  YYMMDD  LONG      41130        ; date user specified
   RAH    DOUBLE     9.4693056   ; ra in hours from file (J2000)
   DECD   DOUBLE    21.540556    ; dec in degrees from file (J2000) ;
   AZ     DOUBLE    252.47028    ; azimuth in degrees from file.
   ROTD   DOUBLE    -56.000000   ; rotation angle from file (degrees)
  srcTime double     480.        ; integration time in seconds.
   AZDIF  DOUBLE      0.00010479062 ; azRequested - azComputed in degrees
   ZA     DOUBLE     11.834881   ; zacomputed in degrees
   JD     DOUBLE     2453339.9   ; jd for the az,za computed
   lst    DOUBLE      0.         ; lst for this start time
   ASTH   DOUBLE     4.4785450   ; AST hour of day for computed time.

DESCRIPTION:
   A1963 is using the fixedazimuth pattern. They are using a source file
that contains and ra,dec and azimuth position for each drift. The datataking
starts when the source arrives at the specified azimuth. 
   This routine will verify that the azimuths/radecs are reasonable.
It will use the ra/dec and azimuth to backcompute the julian date
and za for the start of each drift. This information can then be used
to verify that there is enough time between sources.
   For each drift in a file the computation is:
1. compute The Jd for the start of the specified ast day (yymmdd)
2. compute the lst for this jd
3. precess the ra position to this jd.
4. compute the transit time of the source for this ast day
   (raCurrent- jdMidnite)
5. create an array of 300 jd times centered at the transit time and 
   spaced by 1 solar second.
6. use ao_radectoazza() to compute the az,za for each of these positions.
   Include the /nomodel keyword since a1963 is inputting az,za 
   without model corrections (they are included later).
7. find the azimuth that is closest to the requested azimuth.
8. store : ra,dec,az,rotation Angle from the srcfile as well as the computed:
           za,jd,lst,astHour, and the difference between the reqested
           and computed azimuth.
EXAMPLE:
   a1963cmptimes,041129,'/share/obs4/usr/a1963/n2903_nov29.cat',datI
   a1963plotpattm,datI         ; plot the data

NOTE:
   Do @usrprojinit to include the path to this routine.

WARNINGS:
1. This routine uses precess from the goddard routines.
   You need this in your path
   (eg. addpath,'/pkg/rsi/idl/locallib/astron/pro/astro/')

    
   The routine expects the source file to look like:
   srcname     ra       dec  coord
                               vel  
az252d2151  092809.5 +215126 j  0 # AZ=252.47028 rot_an=-56

    It needs the ra,dec,#,AZ=, and rot_an= in the file.
 It parses the line after the # looking for AZ= and rot_an=

(See /pkg/rsi/local/libao/phil/usrproj/a1963cmptimes.pro)


A1963PLOTTIMES - A1963 PLOT THE PATTERN TIMES.

[Previous Routine] [Next Routine] [List of Routines]
NAME:
a1963plottimes - a1963 plot the pattern times.
SYNTAX: a1963plottimes,datI,h1=h1,v1=v1,h2=h2,v2=v2,v3=v3,thick=thick,$
                hardcopy=hardcopy,psname=psname        
ARGS:
   datI[n]: {} Times computed be comptimes routine
KEYWORDS:
   h1[2]:  float [min,max] horizontal values for top plot on page
   v1[2]:  float [min,max] vertical   values for top plot on page
   h2[2]:  float [min,max] horizontal values for middle and bottom
                  plot on page
   v2[2]:  float [min,max] vertical   values for middle plot on page
   v3[2]:  float [min,max] vertical   values for bottom plot on page
   thick:  float line thickness for plots. Default value is 1. A larger
                 number will make the line thicker. Some laser printers
                 need this to be set to 2 so the line is visible.
hardcopy:        If set then write to psfile rather than screen.
                 default psfilename is 'idl.ps'
psname  : string If hardcopy is set then the routine writes to a psfile.
                 The default name is 'idl.ps'. You can change the name
                 using psname=filename

DESCRIPTION:
   Plot the position time info for a a1963 patterns. This information
is computed in the comptimes() routine and stored in the datI array
of strucutres.
   The routine makes 3 plots per page:

TOP PLOT:
    This is the azimuth, zenith angle for the start of each
drift in the map.

MIDDLE PLOT:
   It contains 3 plots in white, red, and green:
  white: the time available between each position. This is computed
         from the azimuths and ra,decs.
    red: the time needed to move between these az,za's
  green: the total time need between patterns. it includes the 
         requested integration times plus move times.
BOTTOM PLOT:
   The extra time available for between each pattern. It is
available time - (integration + movetime).

The values at location I are computed using the start of I - start(I-1)
(eg. data at 2 has the times from start of pat 1 to start of pat 2).

The move times use the slew rate. The actual time to move will take
longer so these estimates are minimum time needed.

EXAMPLES:
   a1963comptimes,041130,'/share/obs4/usr/a1963/n2903_nov30.cat',datI
   a1963plottimes,datI

   To make hard copy you can put 1 plot per file or multiple plots per
file:
   1 plot per file
   a1963plottimes,dati,/hardcopy,psname='a196330nov04.ps'

   multiple plots per file
   pscol,'a1963nov03',/full
   a1963plottimes,dati28
   a1963plottimes,dati29
   a1963plottimes,dati30
   hardcopy
   x
NOTE:
   Do @usrprojinit to include the path to this routine.

(See /pkg/rsi/local/libao/phil/usrproj/a1963plottimes.pro)


A1963PRINTTIMES - PRINT PATTERN TIMES TO STDOUT.

[Previous Routine] [List of Routines]
NAME:
a1963printtimes - print pattern times to stdout.
SYNTAX: printtimes,datI
ARGS:
   datI[n]: {} structure computed by comptimes()

DESCRIPTION 
   print out the a1963 timing information computed from the
routine times. The output goes to stdout (the terminal).
   The output consists of:

info for :       41202 integration time:       480.00000

Jd frac     lmst        ra        dec       az    availTm  ExtraTm
0.85170  084531.17  092809.50  211326.00  252.47      0.0    0.0
0.85692  085303.39  092809.50  210356.00  250.64    451.0  -70.7

 041202 is the date in yymmdd format.
    480 is the integration time in seconds.

col           description
JD fraction: the fraction of jd day
       lmst: the sidereal time start of strip. format is hhmmss.ss
         ra: J2000 ra  in hhmmss from the file
        dec: J2000 dec in ddmmss from the file
         az: azimuth in degrees from the file
    availTm: available time in seconds. Computes from the azimuths and ra,dec
    extraTm: extra time in seconds. This is the available time - 
             the (integration time + moveTime).
             This used the slew rates for the move time. It is probably
             a maximum value.

EXAMPLE:
   cmptimes,041130,'/share/obs4/usr/a1963/n2903_nov30.cat',datI
   printtimes,datI
info for :       41130 integration time:       480.00000
Jd frac     lmst        ra        dec       az    availTm  ExtraTm
0.84925  083405.83  092810.00  215126.00  252.46      0.0    0.0
0.85573  084327.36  092810.00  215126.00  249.87    560.0   29.5
0.86236  085301.93  092810.00  215126.00  245.80    573.0   42.5
 ...

NOTE:
   Do @usrprojinit to include the path to this routine.

(See /pkg/rsi/local/libao/phil/usrproj/a1963printtimes.pro)