Astro-Catalog
view release on metacpan or search on metacpan
lib/Astro/Catalog/IO/LCOGTFITSTable.pm view on Meta::CPAN
$isoarea_value = $isoarea->[$i];
}
my $ell_value;
if ($ell_column != -1) {
$ell_value = $ell->[$i];
}
my $posang_value;
if ($posang_column != -1) {
$posang_value = $posang->[$i];
}
my $x_pos_value;
if ($x_column != -1) {
$x_pos_value = $x_pos->[$i];
}
my $y_pos_value;
if ($y_column != -1) {
$y_pos_value = $y_pos->[$i];
}
my $flags_value = 0;
if ($flag_column != -1) {
$flags_value = $flags->[$i];
}
# Create a temporary Astro::Catalog::Item object.
my $star = new Astro::Catalog::Item();
# Set up the Astro::Coords object, assuming our RA and Dec are in units
# of degrees.
my $coords;
if (defined($ra_value) && defined($dec_value)) {
$coords = new Astro::Coords(
ra => $ra_value,
dec => $dec_value,
units => 'degrees',
type => 'J2000',
);
$star->coords($coords);
}
if ($flag_column != -1) {
$star->quality($flags_value);
}
else {
$star->quality(0);
}
if ($id_column != -1) {
$star->id($id_value);
}
if ($x_column != -1) {
$star->x($x_pos_value);
}
if ($y_column != -1) {
$star->y($y_pos_value);
}
# Set up the Astro::Flux objects.
if ($iso_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $iso_flux_value);
my $flux_iso = new Astro::Flux($num, 'isophotal_flux', $waveband,
datetime => $datetime, obsid => $obsid);
$star->fluxes(new Astro::Fluxes($flux_iso));
}
if ($total_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $total_flux_value);
my $flux_total = new Astro::Flux($num, 'total_flux', $waveband,
datetime => $datetime, obsid => $obsid );
$star->fluxes(new Astro::Fluxes($flux_total));
}
if ($core_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $core_flux_value);
my $core_flux_obj = new Astro::Flux($num, 'core_flux', $waveband,
datetime => $datetime, obsid => $obsid );
$star->fluxes(new Astro::Fluxes($core_flux_obj));
}
if ($core1_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $core1_flux_value);
my $core1_flux_obj = new Astro::Flux($num, 'core1_flux', $waveband,
datetime => $datetime, obsid => $obsid );
$star->fluxes(new Astro::Fluxes($core1_flux_obj));
}
if ($core2_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $core2_flux_value);
my $core2_flux_obj = new Astro::Flux($num, 'core2_flux', $waveband,
datetime => $datetime, obsid => $obsid );
$star->fluxes(new Astro::Fluxes($core2_flux_obj));
}
if ($core3_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $core3_flux_value);
my $core3_flux_obj = new Astro::Flux($num, 'core3_flux', $waveband,
datetime => $datetime, obsid => $obsid );
$star->fluxes(new Astro::Fluxes($core3_flux_obj));
}
if ($core4_flux_column != -1) {
my $num;
$num = new Number::Uncertainty(Value => $core4_flux_value);
my $core4_flux_obj = new Astro::Flux($num, 'core4_flux', $waveband,
datetime => $datetime, obsid => $obsid);
$star->fluxes(new Astro::Fluxes($core4_flux_obj));
}
# Compute a magnitude and mag. error from the total flux value and total
# flux error (if available).
if ($total_flux_value > 0.0 and $total_flux_err_value > 0.0) {
my $mag = -2.5 * log10($total_flux_value);
my $num;
if ($total_flux_err_column != -1) {
my $magerr = 2.5 / log(10) * $total_flux_err_value / $total_flux_value;
$num = new Number::Uncertainty(
Value => $mag,
Error => 2.0 * $magerr);
}
else {
$num = new Number::Uncertainty(Value => $mag);
}
my $mag_obj = new Astro::Flux($num, 'MAG', $waveband,
datetime => $datetime, obsid => $obsid);
$star->fluxes(new Astro::Fluxes($mag_obj));
}
# And set up the Astro::Catalog::Item::Morphology object.
my $morphology = new Astro::Catalog::Item::Morphology(
area => $isoarea_value,
ellipticity => $ell_value,
position_angle_pixel => $posang_value,
);
$star->morphology($morphology);
# Push it onto the Astro::Catalog object.
$catalog->pushstar($star);
}
}
$status = 0;
# Move to the next one.
$fptr->movrel_hdu(1, $hdutype, $status);
last if ($status == END_OF_FILE);
# And set $hdu_pos.
$fptr->get_hdu_num($hdu_pos);
}
# Set the origin.
$catalog->origin('IO::LCOGTFITSTable');
# And return.
return $catalog;
}
=item B<_write_catalog>
Create an output catalog as a binary FITS table.
$ref = Astro::Catalog::IO::LCOGTFITSTable->_write_catalog($catalog);
Argument is an C<Astro::Catalog> object.
This method is not yet implemented.
=cut
sub _write_catalog {
croak "Not yet implemented.";
}
1;
__END__
=back
=head1 SEE ALSO
( run in 1.205 second using v1.01-cache-2.11-cpan-5a3173703d6 )