Astro-FITS-HdrTrans
view release on metacpan or search on metacpan
lib/Astro/FITS/HdrTrans/GEMINI.pm view on Meta::CPAN
package Astro::FITS::HdrTrans::GEMINI;
=head1 NAME
Astro::FITS::HdrTrans::GEMINI - Base class for translation of Gemini instruments
=head1 SYNOPSIS
use Astro::FITS::HdrTrans::GEMINI;
=head1 DESCRIPTION
This class provides a generic set of translations that are common to
instrumentation from the Gemini Observatory. It should not be used
directly for translation of instrument FITS headers.
=cut
use 5.006;
use warnings;
use strict;
use Carp;
# Inherit from the Base translation class and not HdrTrans itself
# (which is just a class-less wrapper).
use base qw/ Astro::FITS::HdrTrans::FITS /;
use Scalar::Util qw/ looks_like_number /;
use Astro::FITS::HdrTrans::FITS;
our $VERSION = "1.66";
# in each class we have three sets of data.
# - constant mappings
# - unit mappings
# - complex mappings
# for a constant mapping, there is no FITS header, just a generic
# header that is constant
my %CONST_MAP = (
);
# unit mapping implies that the value propogates directly
# to the output with only a keyword name change
my %UNIT_MAP = (
AIRMASS_END => "AMEND",
AIRMASS_START => "AMSTART",
DEC_BASE => "CRVAL2",
EXPOSURE_TIME => "EXPTIME",
EQUINOX => "EQUINOX",
INSTRUMENT => "INSTRUME",
NUMBER_OF_EXPOSURES => "NSUBEXP",
NUMBER_OF_EXPOSURES => "COADDS",
OBJECT => "OBJECT",
X_REFERENCE_PIXEL => "CRPIX1",
Y_REFERENCE_PIXEL => "CRPIX2"
);
# Create the translation methods
__PACKAGE__->_generate_lookup_methods( \%CONST_MAP, \%UNIT_MAP );
=head1 COMPLEX CONVERSIONS
These methods are more complicated than a simple mapping. We have to
provide both from- and to-FITS conversions All these routines are
methods and the to_ routines all take a reference to a hash and return
the translated value (a many-to-one mapping) The from_ methods take a
reference to a generic hash and return a translated hash (sometimes
these are many-to-many)
=over 4
=cut
# Note use list context as there are multiple CD matrices in
# the header. We want scalar context.
sub to_DEC_SCALE {
my $self = shift;
my $FITS_headers = shift;
my $cd11 = $FITS_headers->{"CD1_1"};
my $cd12 = $FITS_headers->{"CD1_2"};
my $cd21 = $FITS_headers->{"CD2_1"};
my $cd22 = $FITS_headers->{"CD2_2"};
my $sgn;
if ( ( $cd11 * $cd22 - $cd12 * $cd21 ) < 0 ) {
$sgn = -1;
} else {
( run in 1.349 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )