Astro-FITS-HdrTrans
view release on metacpan or search on metacpan
lib/Astro/FITS/HdrTrans/SCUBA.pm view on Meta::CPAN
OBJECT => "OBJECT",
OBSERVATION_NUMBER => "RUN",
POLARIMETER => "POL_CONN",
PROJECT => "PROJ_ID",
RA_TELESCOPE_OFFSET => "MAP_X",
SCAN_INCREMENT => "SAM_DX",
SEEING => "SEEING",
STANDARD => "STANDARD",
TAU => "TAU_225",
X_BASE => "LONG",
Y_BASE => "LAT",
X_OFFSET => "MAP_X",
Y_OFFSET => "MAP_Y"
);
# Create the translation methods
__PACKAGE__->_generate_lookup_methods( \%CONST_MAP, \%UNIT_MAP, \@NULL_MAP );
=head1 METHODS
=over 4
=item B<this_instrument>
The name of the instrument required to match (case insensitively)
against the INSTRUME/INSTRUMENT keyword to allow this class to
translate the specified headers. Called by the default
C<can_translate> method.
$inst = $class->this_instrument();
Returns "SCUBA".
=cut
sub this_instrument {
return "SCUBA";
}
=item B<can_translate>
The database tables do not include an instrument field so we need to determine
suitability by looking at other fields instead of using the base implementation.
$cando = $class->can_translate( \%hdrs );
For SCUBA we first check for BOLOMS and SCU# headers and then use the base
implementation that will look at the INSTRUME field.
=cut
sub can_translate {
my $self = shift;
my $headers = shift;
if (exists $headers->{BOLOMS} && defined $headers->{BOLOMS} &&
exists $headers->{"SCU#"} && defined $headers->{"SCU#"}) {
return 1;
} else {
return $self->SUPER::can_translate( $headers );
}
}
=back
=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
=item B<to_CHOP_COORDINATE_SYSTEM>
Uses the C<CHOP_CRD> FITS header to determine the chopper coordinate
system, and then places that coordinate type in the C<CHOP_COORDINATE_SYSTEM>
generic header.
A FITS header value of 'LO' translates to 'Tracking', 'AZ' translates to
'Alt/Az', and 'NA' translates to 'Focal Plane'. Any other values will return
undef.
=cut
sub to_CHOP_COORDINATE_SYSTEM {
my $self = shift;
my $FITS_headers = shift;
my $return;
if (exists($FITS_headers->{'CHOP_CRD'})) {
my $fits_eq = $FITS_headers->{'CHOP_CRD'};
if ( $fits_eq =~ /LO/i ) {
$return = "Tracking";
} elsif ( $fits_eq =~ /AZ/i ) {
$return = "Alt/Az";
} elsif ( $fits_eq =~ /NA/i ) {
$return = "Focal Plane";
}
}
return $return;
}
=item B<to_COORDINATE_TYPE>
Uses the C<CENT_CRD> FITS header to determine the coordinate type
(galactic, B1950, J2000) and then places that coordinate type in
the C<COORDINATE_TYPE> generic header.
=cut
sub to_COORDINATE_TYPE {
my $self = shift;
my $FITS_headers = shift;
my $return;
if (exists($FITS_headers->{'CENT_CRD'})) {
my $fits_eq = $FITS_headers->{'CENT_CRD'};
( run in 3.327 seconds using v1.01-cache-2.11-cpan-98e64b0badf )