Astro-FITS-HdrTrans
view release on metacpan or search on metacpan
lib/Astro/FITS/HdrTrans/JCMT.pm view on Meta::CPAN
our $VERSION = '1.66';
use base qw/ Astro::FITS::HdrTrans::JAC /;
# Unit mapping implies that the value propogates directly
# to the output with only a keyword name change.
my %UNIT_MAP =
(
AIRMASS_START => 'AMSTART',
AZIMUTH_START => 'AZSTART',
ELEVATION_START => 'ELSTART',
FILENAME => 'FILE_ID',
DR_RECIPE => "RECIPE",
HUMIDITY => 'HUMSTART',
LATITUDE => 'LAT-OBS',
LONGITUDE => 'LONG-OBS',
OBJECT => 'OBJECT',
OBSERVATION_NUMBER => 'OBSNUM',
PROJECT => 'PROJECT',
SCAN_PATTERN => 'SCAN_PAT',
STANDARD => 'STANDARD',
TAI_UTC_CORRECTION => 'DTAI',
UT1_UTC_CORRECTION => 'DUT1',
WIND_BLIND => 'WND_BLND',
X_APERTURE => 'INSTAP_X',
Y_APERTURE => 'INSTAP_Y',
);
my %CONST_MAP = ();
# Create the translation methods
__PACKAGE__->_generate_lookup_methods( \%CONST_MAP, \%UNIT_MAP );
our $COORDS;
=head1 METHODS
=over 4
=item B<translate_from_FITS>
This routine overrides the base class implementation to enable the
caches to be cleared for target location.
This means that some conversion methods (in particular those using time in
a base class) may not work properly outside the context of a full translation
unless they have been subclassed locally.
Date fixups are handled in a super class.
=cut
sub translate_from_FITS {
my $class = shift;
my $headers = shift;
# clear cache
$COORDS = undef;
# Go to the base class
return $class->SUPER::translate_from_FITS( $headers, @_ );
}
=item B<to_UTDATE>
Converts the date in a date-obs header into a number of form YYYYMMDD.
=cut
sub to_UTDATE {
my $class = shift;
my $FITS_headers = shift;
$class->_fix_dates( $FITS_headers );
return $class->SUPER::to_UTDATE( $FITS_headers, @_ );
}
=item B<to_UTEND>
Converts UT date in a date-end header into C<Time::Piece> object
=cut
sub to_UTEND {
my $class = shift;
my $FITS_headers = shift;
$class->_fix_dates( $FITS_headers );
return $class->SUPER::to_UTEND( $FITS_headers, @_ );
}
=item B<to_UTSTART>
Converts UT date in a date-obs header into C<Time::Piece> object.
=cut
sub to_UTSTART {
my $class = shift;
my $FITS_headers = shift;
$class->_fix_dates( $FITS_headers );
return $class->SUPER::to_UTSTART( $FITS_headers, @_ );
}
=item B<to_RA_BASE>
Uses the elevation, azimuth, telescope name, and observation start
time headers (ELSTART, AZSTART, TELESCOP, and DATE-OBS headers,
respectively) to calculate the base RA.
Returns the RA in degrees.
=cut
sub to_RA_BASE {
my $self = shift;
my $FITS_headers = shift;
my $coords = $self->_calc_coords( $FITS_headers );
return undef unless defined $coords;
return $coords->ra( format => 'deg' );
}
=item B<to_DEC_BASE>
Uses the elevation, azimuth, telescope name, and observation start
time headers (ELSTART, AZSTART, TELESCOP, and DATE-OBS headers,
respectively) to calculate the base declination.
Returns the declination in degrees.
=cut
sub to_DEC_BASE {
my $self = shift;
my $FITS_headers = shift;
my $coords = $self->_calc_coords( $FITS_headers );
return undef unless defined $coords;
return $coords->dec( format => 'deg' );
}
=item B<to_TAU>
Use the average WVM tau measurements.
=cut
sub to_TAU {
my $self = shift;
my $FITS_headers = shift;
my $tau = undef;
for my $src (qw/ TAU225 WVMTAU /) {
my $st = $src . "ST";
my $en = $src . "EN";
my @startvals = $self->via_subheader_undef_check( $FITS_headers, $st );
my @endvals = $self->via_subheader_undef_check( $FITS_headers, $en );
my $startval = $startvals[0];
my $endval = $endvals[-1];
( run in 1.104 second using v1.01-cache-2.11-cpan-ceb78f64989 )