1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
|
.help asthedit Jan96 astutil
.ih
NAME
asthedit -- astronomical header editor
.ih
USAGE
asthedit images commands
.ih
PARAMETERS
.ls images
List of images to be used. The image header keywords are used in this task
as variables which are read, modified, created, or deleted. If the images
do not have write permission or the \fIupdate\fR parameter is "no" then the
image headers will not be modified. If no images are specified then this
task can be used as a calculator (though see \fBastcalc\fR).
.le
.ls commands
A file of commands using the simple syntax given in the DESCRIPTION. If no
file name is given then the commands are read interactively from the
standard input with a prompt given by the \fIprompt\fR parameter. The
command input ends with either EOF or "quit". If a list of images and/or a
table is specified the commands are repeated for each image or until the
end of the table is reached. Comments beginning with '#', blank lines, and
escaped newlines are allowed.
.le
.ls table = ""
Optional text file containing columns of values. The table consists of
one or more lines of whitespace separated columns of values. Note that a
string with whitespace needs to be quoted. One line of the table is
scanned for each image. There must be at lest as many fields as are
defined by the column names.
.le
.ls colnames = ""
List of whitespace separated column names. These are the names referenced
in the command file by $<name>. The leading '$' is not included in the
column name specification. There may be fewer columns than the number of
columns in the table. Dummy names must be used if some columns occur
before a column to be referenced.
.le
.ls prompt = "asthedit> "
When no command file is specified the input commands are read from the
standard input (the terminal) and the value of the \fIprompt\fR string is
printed as a prompt. Note that if the input command file is specified as
"STDIN" there will be no prompt even though commands will also be read from
the standard input.
.le
.ls update = yes
Update the image headers? If no then any new, modified, or deleted
keywords will not be recorded in the image headers. This allows using the
task only for computing and printing quantities. Also this allows
accessing read-only images.
.le
.ls verbose = no
Print each keyword added or modified?
.le
.ls oldstyle = no
Use the old style syntax of this task from versions prior to V2.11. This
parameter allows backward compatibility for command files previously
developed. Some aspects of the new syntax are still available.
.le
.ih
DESCRIPTION
\fBAsthedit\fR evaluates expressions using image header keywords, column
names from a text table, CL parameters, internal variables, constants, and
functions to create or modify image header keywords. This task is
particularly useful for adding keywords from a table and deriving keywords
used by IRAF tasks which are not present in the images. It differs from
\fBhedit\fR in that it includes astronomical functions, operates from a
command file which may perform many edits, and references columns from a
text table. The command file may be omitted in which case commands may be
entered interactively for the first image and then the same commands will
be repeated for any subsequent images.
This task may be used interactively or with input from a command file
(\fIcommands\fR). If no command file is specified a prompt (\fIprompt\fR)
is printed and commands are entered interactively. The input is terminated
with either the end-of-file character (EOF) or the command "quit". Input
command files simply contain the same input in a file and end with the end
of the file or "quit". The input commands, either those entered
interactively or from a file, are repeated for each image in the image list
and until the end of the input text table is reached, whichever comes
first. Generally this task is used on one or more images but if no
image is specified the commands are executed just once and task behaves
like an calculator.
The command input consists of statements with each statement on a
line by itself. However long statements may be broken up with
escaped newlines using the back-slash as the escape character;
i.e. \<newline>. Comments beginning with '#', blank lines,
and whitespace are ignored.
There are three types of statements: assignment, expressions, and
conditional. Each statement is on a line by itself though long statements
may be broken up with escaped newlines (\<newline>). Assignment statements
have an image header keyword name (or variable name beginning with $), an
equal sign (but see the \fIoldstyle\fR parameter), and an expression.
Expression statements consist of only the expression with the value of the
expression being ignored. Expression statements are generally used with
certain functions. Conditional statements are blocks of if-endif and
if-else-endif with assignment and expression statements between the
if-else-endif statements. These may not be nested.
In earlier versions of this task there were only assignment statements
and these did not use an equal sign; i.e. all statements consisted
of an image header keyword and an expression separated by whitespace
except that a keyword name by itself indicates deletion of a keyword.
In order to interpret old command files the \fIoldstyle\fR parameter
may be set to yes. This will insert an equal sign internally. It
also only allows a subset of statements to not begin with a keyword
or variable. These are if, else, endif, print, printf, and quit.
Note that with the old style syntax one may still include an equal
sign. It is recommended that the old style syntax not be used because
of the greater flexibility in the new syntax.
An image header keyword name is an arbitrary identifier which must begin
with an alphabetic character or '$' followed by an alphabetic character and
may use alphabetic characters, digits, or the characters '_', '$', or '.'.
Keyword names are case insensitive. Because some additional characters are
allowed in the FITS definition of keyword names, such names may be
referenced with the special '@' operator described below.
One may also use internal variables which have the same identifier rules
but begin with '$'. Note that these variables are case sensitive (as are
function names). There are a few special predefined variables: "$I"
contains the current image name, "$D" contains the current local date (in
old FITS DD/MM/YY format), "$T" contains the current local time, "$GMD"
contains the current Greenwich meridian date (in FITS YYYY-MM-DD format),
"$GMT" contains the current Greenwich meridian time, and "$GMDT" contains
the current date and time in FITS YYYY-MM-DDTHH:MM:SS format.
Before the commands are interpreted for each image a line of a text
file may be read. This occurs when a file is specified by the
\fItable\fR parameter. The line is scanned and the values of each
column are stored in the variable names specified by the \fIcolnames\fR
parameter. The values may be referenced in expressions by the
specified column name preceded with '$'. Note that additional lines
may be scanned with the "fscan" function. The user is then responsible
for the table containing the correct sequence of lines when there
are multiple images.
In \fBasthedit\fR identifiers are image header keywords and lines
for the table file are read automatically. A related task is \fBastcalc\fR.
In this task all variables are maintained internally and input and output
are performed explicitly by functions. There are functions to read,
write, and delete image header keywords from a list of images.
STATEMENTS
The following gives a more formal description of the statement syntax
and the special words "if", "else", "endif", and "quit".
.nf
<keyword>
<keyword> = <expression>
$<variable> = <expression>
<expression>
if (<expression>)
<statements>
endif
if (<expression>)
<statements>
else
<statements>
endif
quit
.fi
The result of the expression in the "if" statement is normally a logical
value. However, a numeric value of 0 is false while any other value is
true and any string beginning with either "y" or "Y" is true with
any other value being false; i.e. string values of yes and no may be used.
The old style syntax allows the following statements.
.nf
<keyword>
<keyword> <expression>
$<variable> <expression>
<keyword> = <expression>
$<variable> = <expression>
print (...)
printf (...)
if (<expression>)
<statements>
endif
if (<expression>)
<statements>
else
<statements>
endif
quit
.fi
Old style command files would only use the first two statements.
KEYWORD NAMES AND VARIABLES
Keyword names and variables may formally be defined as:
.nf
[$]{a-zA-Z}[{a-zA-Z0-9._$}]*
.fi
where [] indicate optional, {} indicates a class, - indicates an ASCII
range of characters, and * indicates zero or more occurrences. In words, a
keyword must begin with an alphabetic character, a variable or text file
column name begins with '$' and an alphabetic character, and both may be
followed by any combinations of alphabetic, digit, or '.', '_', and '$'
characters.
There are a few predefined variables which may be referenced in
expressions.
.nf
$I The name of the current image (if used)
$D The current date in the DD/MM/YY format
$T The current (local) time as a sexagesimal string
.fi
The date and time are set once at the beginning of execution.
Though not recommended it is possible to use any set of characters
for a variable provided the variable is referenced as @"<name>".
For example one could use @"date-obs" to include the character '-'.
This option is primarily used for FITS keywords that use '-' as
a hyphen character and must be escaped from interpretation as the
an arithmetic subtraction operator.
EXPRESSIONS
Expressions consist of operands and operators. The operands may be any
image header keyword, previously defined variable, column name, quoted
string constants, numeric constants, and functions. Values given as
sexagesimal strings are automatically converted to decimal numbers. The
operators are arithmetic, logical, and string. The expression syntax is
equivalent to that used in the CL and SPP languages.
Additional information may be found in the help for \fBhedit\fR except that
all unquoted nonnumeric strings are considered to be keywords or variables
and so the '(', ')' operators are not used. The "field" references are
not needed so the references "." and "$" are not used and are not legal
variable names in this task.
operators:
The following operators are recognized in expressions. With the exception
of the operators "?", "?=", and "@", the operator set is equivalent to that
available in the CL and SPP languages.
.nf
+ - * / arithmetic operators
** exponentiation
// string concatenation
! - boolean not, unary negation
< <= > >= order comparison (works for strings)
== != && || equals, not equals, and, or
?= string equals pattern
? : conditional expression
@ reference a variable
.fi
The operators "==", "&&", and "||" may be abbreviated as "=", "&", and "|"
if desired. The ?= operator performs pattern matching upon strings.
The @ operator is required to reference keywords with
one of the operator characters. This is most like to be used as:
@"date-obs"
A point to be aware of is that in the ?: conditional expression both
possible result values are evaluated though the result of the expression
is only one of them. This means that one should not use this to
call I/O functions that one wants to be executed only if a certain
condition holds.
intrinsic functions:
A number of standard intrinsic functions are recognized within expressions.
The set of functions currently supported is shown below.
.nf
abs atan2 deg log min real sqrt
acos bool double log10 mod short str
asin cos exp long nint sin tan
atan cosh int max rad sinh tanh
.fi
The trigonometric functions operate in units of radians.
The \fImin\fR and \fImax\fR functions may have any number of arguments up
to a maximum of sixteen or so (configurable). The arguments need not all
be of the same datatype.
A function call may take either of the following forms:
.nf
<identifier> '(' arglist ')'
or
<string_expr> '(' arglist ')'
.fi
The first form is the conventional form found in all programming languages.
The second permits the generation of function names by string valued
expressions and might be useful on rare occasions.
special functions:
In addition to the above intrinsic functions there are a number of
astronomical functions. More will be added in time. These are:
.nf
sexstr - convert a number to a sexagesimal string (xx:mm:ss.ss)
epoch - compute an epoch given a date and time
julday - compute a Julian day given a date and time
mst - compute a mean sidereal time given a date, time, and longitude
ra_precess - precess ra from one epoch to another
dec_precess - precess dec from one epoch to another
airmass - compute airmass given ra, dec, sidereal time, and latitude
eairmass - compute effective airmass given
ra, dec, sidereal time, exposure time, and latitude
obsdb - get parameters from the observatory database
.fi
.ls sexstr (number), sexstr (number, digits)
Convert a number to a sexagesimal string in the format X:MM:SS.SS. There
is an optional second argument (the default is 0) which is the number of
decimal digits in the seconds field.
.le
.ls epoch (date[, ut])
Compute an epoch given a date and time. The date is a string in the
format DD/MM/YY, YYYY-MM-DD, or YYYY-MM-DDTHH:MM:SS.
Typically this argument will be the standard FITS
keyword DATE-OBS. Because of possible confusion of the hyphen with
subtraction this keyword would be specified as @"date-obs". The time
argument is optional. If it is not given the time from the date
string will be used and if absent a time of 0h is used.
.le
.ls julday (date[, ut])
Compute a Julian day given a date and time. The date and time are
specified as described previously.
.le
.ls mst (date[, ut], longitude)
Compute a mean sidereal time given a date, time, and longitude in degrees. The
date and (optional) time are specified as described previously. The longitude
may be given as a constant or using the observatory database function
as shown in the examples. The returned value is a sexagesimal
string with two decimals in the seconds.
.le
.ls precess (ra, dec, epoch1, epoch2)
Precess coordinates from one epoch to another. The ra is the
right ascension in hours, the dec in the declination in degrees,
and the epochs are in years. This function returns a formatted string with
the precessed right ascension, declination, and epoch. Numerical
values for the right ascension and declination are obtained with the
functions ra_precess and dec_precess.
.le
.ls ra_precess (ra, dec, epoch1, epoch2)
Precess a right ascension from one epoch to another. The ra is the
input right ascension in hours, the dec is the declination in degrees,
and the epochs are in years. Because a function can return only one
value there is a second function to return the precessed declination.
The returned value is a sexagesimal string with two decimals in the seconds.
.le
.ls dec_precess (ra1, dec1, epoch1, epoch2)
Precess a declination from one epoch to another. The ra is the
input right ascension in hours, the dec is the declination in degrees,
and the epochs are in years. Because a function can return only one
value there is a second function to return the precessed right ascension.
The returned value is a sexagesimal string with two decimals in the seconds.
.le
.ls arcsep (ra1, dec1, ra2, dec2)
Compute the separation between two spherical coordinates. The parameters
ra1 and ra2 are coordinates in hours (right ascension, longitude, etc.)
and the dec1 and dec2 parameters are coordinates in degrees (declination,
latitude, etc.). The computed value is returned in seconds of arc.
.le
.ls airmass (ra, dec, st, latitude)
Compute an airmass given right ascension in hours, declination in
degrees, sidereal time in hours, and latitude in degrees. The latitude
is often specified using the observatory database function as shown
in the examples.
.le
.ls eairmass (ra, dec, st, exptime, latitude)
Compute an "effective" airmass given right ascension in hours, declination
in degrees, beginning sidereal time in hours, exposure time in seconds, and
latitude in degrees. The The latitude is often specified using the
observatory database function as shown in the examples. The effective
airmass is based on a Simpson's rule weighting of the beginning, middle,
and ending airmass (with no provision for paused exposure). The weights
are:
.nf
effective = beginning + 4 * middle + ending
.fi
.le
.ls obsdb (observatory, parameter)
Return a value from the observatory database. The observatory parameter is
a observatory identification string as defined in the database. Often this
is the value stored in the OBSERVAT keyword. Another special value is
"observatory" which then follows a name resolution scheme. The observatory
database mechanism is described by the help topic \fBobservatory\fR. The
parameter is a string given the quantity desired. Typically this would be
"longitude" or "latitude" but there are other possible parameters.
.le
input/output functions:
There are special functions for formatting, printing, error aborts,
reading, writing, and deleting image header keywords, reading a text file,
and reading and writing CL parameters. Note that in \fBasthedit\fR
one would not normally use the image input/output functions or
the text file scanning function since any keyword reference reads or
writes to the image header and one line of the text file is scanned
automatically for each image.
.nf
print - print a set of arguments with default format
printf - print a set arguments with specified format
format - format a string
error - print an error message and abort
clget - get a value from a CL parameter
clput - put a value to a CL parameter
scan - scan a string and parse into keywords or variables
fscan - scan a line of a text file
imget - get the value of an image header keyword
imput - put (add or modify) the value of an image header keyword
imdel - delete an image header keyword
.fi
.ls print ([argument, ...])
Print the arguments with default formats based on the type of value ending
with a newline. There may be zero or more arguments. With zero arguments
only a newline will be printed.
.le
.ls printf (fmt [, argument, ...])
Print a list of arguments using the formatting syntax described later.
Parameters to be formatted are given by the % fields and the values are
passed as further arguments in the order in which they are referenced.
There is no automatic newline so the format must include "\n" to
produce newlines.
.le
.ls error (message)
Print the "message", which can be any string variable such as might
be produced by "format", and abort the task. This is useful in
conjunction with the conditional operator to abort if a variable
takes an inappropriate value.
.le
.ls clget (parameter)
Get the value of a CL parameter. The argument must be a string. The
function value is the value of the parameter.
.le
.ls clput (parameter, value)
Put a value into a CL parameter. The parameter argument must be a
string and the value can be anything. The function returns a string
of the form "clput: parameter = value" where parameter and value are
the actual values.
.le
.ls scan (string, var, ...)
Parse a string of whitespace separated words into a list of
keywords or variables. The number of variables assigned is
the returned value of the function.
.le
.ls fscan (var, ...)
Scan a line of a text file into a list of keywords or variables. The arguments
are zero or more variable names to which to assign the values of
the whitespace separated fields. The number of variables assigned
is the returned value of the function.
.le
.ls imget (parameter)
Get the value of an image header keyword from the current image. The
argument must be a string. The function value is the value of the keyword.
.le
.ls imput (parameter, value)
Put a value into an image header keyword for the current image. The
parameter argument must be a string and the value can be anything. If the
keyword exists it will be modified and if it does not exist it will be
added. The function returns a string of the form "imput: parameter =
value" for new keywords or "imput: parameter = old_value -> value" for
modified keywords where parameter and value are the actual values.
.le
.ls imdel (parameter)
Delete an image header keyword. The parameter argument must be a string.
The returned values are the strings "imdel: parameter not found"
or "imdel: parameter = value (DELETED)" where parameter is the parameter
name and value is the old value.
.le
.ih
FORMATS
A format specification has the form "%w.dCn", where w is the field
width, d is the number of decimal places or the number of digits of
precision, C is the format code, and n is radix character for
format code "r" only. The w and d fields are optional. The format
codes C are as follows:
.nf
b boolean (YES or NO)
c single character (c or '\c' or '\0nnn')
d decimal integer
e exponential format (D specifies the precision)
f fixed format (D specifies the number of decimal places)
g general format (D specifies the precision)
h hms format (hh:mm:ss.ss, D = no. decimal places)
m minutes, seconds (or hours, minutes) (mm:ss.ss)
o octal integer
rN convert integer in any radix N
s string (D field specifies max chars to print)
t advance To column given as field W
u unsigned decimal integer
w output the number of spaces given by field W
x hexadecimal integer
z complex format (r,r) (D = precision)
Conventions for w (field width) specification:
W = n right justify in field of N characters, blank fill
-n left justify in field of N characters, blank fill
0n zero fill at left (only if right justified)
absent, 0 use as much space as needed (D field sets precision)
Escape sequences (e.g. "\n" for newline):
\b backspace (not implemented)
\f formfeed
\n newline (crlf)
\r carriage return
\t tab
\" string delimiter character
\' character constant delimiter character
\\ backslash character
\nnn octal value of character
Examples
%s format a string using as much space as required
%-10s left justify a string in a field of 10 characters
%-10.10s left justify and truncate a string in a field of 10 characters
%10s right justify a string in a field of 10 characters
%10.10s right justify and truncate a string in a field of 10 characters
%7.3f print a real number right justified in floating point format
%-7.3f same as above but left justified
%15.7e print a real number right justified in exponential format
%-15.7e same as above but left justified
%12.5g print a real number right justified in general format
%-12.5g same as above but left justified
%h format as nn:nn:nn.n
%15h right justify nn:nn:nn.n in field of 15 characters
%-15h left justify nn:nn:nn.n in a field of 15 characters
%12.2h right justify nn:nn:nn.nn
%-12.2h left justify nn:nn:nn.nn
%H / by 15 and format as nn:nn:nn.n
%15H / by 15 and right justify nn:nn:nn.n in field of 15 characters
%-15H / by 15 and left justify nn:nn:nn.n in field of 15 characters
%12.2H / by 15 and right justify nn:nn:nn.nn
%-12.2H / by 15 and left justify nn:nn:nn.nn
\n insert a newline
.fi
.ih
EXAMPLES
1. The following command file exercises the astronomical functions:
.nf
cl> type cmds
observat = "kpno"
time = sexstr (1.2345)
epoch = epoch (@'date-obs', ut)
jd = julday (@'date-obs', ut)
mst = mst (@'date-obs', ut, obsdb (observat, "longitude"))
rap = ra_precess (ra, dec, epoch, 1950)
dap = dec_precess (ra, dec, epoch, 1950)
airmass = airmass (ra, dec, mst, obsdb (observat, "latitude"))
airmass
airmass = " "
airmass = eairmass (ra, dec, mst, itime, obsdb (observat, "latitude"))
cl> imhead obj001 l+
...
DATE-OBS= '05/04/87' / DATE DD/MM/YY
RA = '13:29:24.00' / RIGHT ASCENSION
DEC = '47:15:34.00' / DECLINATION
UT = ' 9:27:27.00' / UNIVERSAL TIME
ITIME = 600 / REQUESTED INTEGRATION TIME (SECS)
...
cl> asthedit obj001 cmds table="" verbose+
obj001:
$I = pix
$D = 22/01/96
$T = 19:14:41
observat = kpno
time = 1:14:04
epoch = 1987.257752395672
jd = 2446890.894062519
mst = 14:53:39.81
rap = 13:27:49.84
dap = 47:27:05.72
airmass = 1.079684154511483
airmass = 1.07968415451148 -> DELETED
airmass =
airmass = -> 1.08519059292424
.fi
Note the use of the keyword deletion and syntax for adding an empty
value.
2. The following command file shows computing a mid-ut and using a table
of values.
.nf
cl> type cmds
midut = sexstr ($ut + $itime/3600./2.)
imagetyp = $imagetyp
cl> type table
object 9:27:27 600
comp 9:48:00 10
object 9:49:00 600
flat 12:00:00 2
cl> asthedit obj* cmds table=table colnames="imagetyp ut itime" verbose+
obj001.imh:
$I = obj001.imh
$D = 22/01/96
$T = 20:38:39
midut = 9:32:27
imagetyp = object
obj002.imh:
$I = obj002.imh
midut = 9:48:05
imagetyp = comp
...
.fi
3. The following example computes quantities used by some NOAO tasks from
a minimal ESO/IHAP header.
.nf
cl> type eso.dat
observat = "eso"
ut = sexstr ((@'tm-start'+0.1) / 3600.)
utend = sexstr ((@'tm-end'+0.1) / 3600.)
epoch = epoch (@'date-obs', ut)
st = mst (@'date-obs', ut, obsdb (observat, "longitude"))
exptime = (utend>ut)?(utend-ut)*3600.:(utend+24-ut)*3600.
ra = sexstr (@'postn-ra' / 15)
dec = sexstr (@'postn-dec')
airmass = airmass (ra, dec, st, obsdb (observat, "latitude"))
imagetyp = $imagetyp
filter = $filter
cl> type table.dat
object V
as> imhead eso
....
DATE-OBS= '12/12/92' / Date this data created dd/mm/yy
TM-START= 84854. / '23:34:14' measurement start time
TM-END = 84974. / '23:36:14' measurement end time (U
TIME-SID= 1. / '00:00:01' sidereal start time
POSTN-RA= 354.0709 / '23:36:17' tel. position right-asc
POSTN-DE= 6.556945 /'+06:33:25' tel. position declinati
....
as> asthedit eso eso.dat table=table.dat col="imagetyp filter" verbose+
eso:
$I = eso
$D = 23/01/96
$T = 09:02:55
observat = eso
ut = 23:34:14
utend = 23:36:14
epoch = 1992.948616307863
st = 0:18:56.76
exptime = 120.000000000006
ra = 23:36:17
dec = 6:33:25
airmass = 1.255875187126549
imagetyp = object
filter = V
as> imhead eso
...
DATE-OBS= '12/12/92' / Date this data created dd/mm/yy
TM-START= 84854. / '23:34:14' measurement start time
TM-END = 84974. / '23:36:14' measurement end time (U
TIME-SID= 1. / '00:00:01' sidereal start time
POSTN-RA= 354.0709 / '23:36:17' tel. position right-asc
POSTN-DE= 6.556945 /'+06:33:25' tel. position declinati
OBSERVAT= 'eso '
UT = '23:34:14'
UTEND = '23:36:14'
EPOCH = 1992.94861630786
ST = '0:18:56.76'
EXPTIME = 120.000000000006
RA = '23:36:17'
DEC = '6:33:25 '
AIRMASS = 1.25587518712655
IMAGETYP= 'object '
FILTER = 'V '
...
.fi
The 0.1 in the UT calculation are to account for round-off.
Note the use of the conditional expression for the exposure time.
4. The following example is for a case where there was no telescope
information but there is date and time information. This example is
relevant to data from the Kitt Peak Schmidt telescope circa 1993.
A table is prepared with the RA, Dec, and Epoch of each observation
and all other information is derived from the date, ut, and observatory
database.
.nf
cl> type table.dat
12:45:32 +49:34:12 1950
13:12:02 -01:12:05 1950
cl> type cmds.hast
epoch = epoch (@'date-obs', ut)
ra = ra_precess ($ra, $dec, $epoch, epoch)
dec = dec_precess ($ra, $dec, $epoch, epoch)
st = mst (@'date-obs', ut, obsdb (observat, "longitude"))
airmass = eairmass (ra, dec, st, exptime, obsdb (observat, "latitude"))
midut = sexstr (ut + exptime/3600./2.)
cl> asthedit *.imh cmds.hast table=table.dat colnames="ra dec epoch" ver+
sbs0119.imh:
$I = sbs0119.imh
$D = 23/01/96
$T = 10:38:32
epoch = 1987.257752395672
ra = 12:47:14.84
dec = 49:22:00.39
st = 14:53:39.81
airmass = 1.154765212092646
midut = 9:32:27
sbs0120.imh:
$I = sbs0120.imh
epoch = 1987.257752395672
ra = 13:13:56.90
dec = -1:23:54.30
st = 14:53:39.81
airmass = 1.336016291162518
midut = 9:32:27
.fi
Note the use of the table and image header epochs in the precession.
5. The following example shows the use of the printf function,
and a null image name, and interactive command input.
.nf
cl> asthedit "" ""
astcalc> ra = 12:20:30
astcalc> dec = 45:00:10
astcalc> ep1 = 1950
astcalc> ep2 = 2000
astcalc> ra1 = ra_precess (ra, dec, ep1, ep2)
astcalc> printf ("ra=%h dec=%h\n", ra1, dec_precess (ra, dec, ep1, ep2))
ra=12:22:57.4 dec=44:43:32.25
.fi
.ih
REVISIONS
.ls ASTHEDIT V2.11.2
Y2K update: The epoch, julday, and mst functions now take either the old
or new FITS style date strings. The time argument is optional and if
it is not specified the time from the date string is used and if neither
time is present a value of 0h is used. New internal variables $GMD,
$GMT, and $GMDT for the current time Greenwich time are defined.
.le
.ls ASTHEDIT V2.11
There are new astronomical functions and input/output functions.
The command syntax may now use "=" as a delimiter as well as the whitespace.
A new parameter "update" allows protecting images and accessing read-only
images for the purpose of calculating and printing quantities.
The special variable name "$I" has the value of the image name, $D
the current date, and $T the current time.
The case of no image name creates and deletes a temporary image so the
task can be used purely as a calculator (but see \fBastcalc\fR).
.le
.ih
SEE ALSO
astcalc, hedit, hfix, mkheader, setairmass, setjd, asttimes, precess,
observatory
.endhelp
|