Astro-Flux
view release on metacpan or search on metacpan
be passed as arguments.
=cut
sub pushfluxes {
my $self = shift;
foreach my $arg ( @_ ) {
if( UNIVERSAL::isa( $arg, "Astro::Flux" ) ) {
my $key = $arg->waveband()->natural();
push @{${$self->{FLUXES}}{$key}}, $arg;
push @{$self->{FLUX}}, $arg->waveband();
} elsif( UNIVERSAL::isa( $arg, "Astro::FluxColor" ) ) {
# Create an Misc::Quality object saying that these are derived
# magnitudes.
my $quality = new Misc::Quality( 'derived' => 1 );
# Create two flux objects, one for the lower and one for the upper.
my $num = new Number::Uncertainty( Value => $arg->quantity,
Error => $arg->error );
my ( $lower_flux, $upper_flux );
if ( defined $arg->datetime() ) {
$lower_flux = new Astro::Flux( $num , 'mag', $arg->lower,
quality => $quality,
reference_waveband => $arg->upper,
datetime => $arg->datetime );
$upper_flux = new Astro::Flux( -1.0 * $num, 'mag', $arg->upper,
quality => $quality,
reference_waveband => $arg->lower,
datetime => $arg->datetime );
} else {
$lower_flux = new Astro::Flux( $num , 'mag', $arg->lower,
quality => $quality,
reference_waveband => $arg->upper );
$upper_flux = new Astro::Flux( -1.0 * $num, 'mag', $arg->upper,
quality => $quality,
reference_waveband => $arg->lower );
}
my $lower_key = $lower_flux->waveband->natural;
my $upper_key = $upper_flux->waveband->natural;
push @{${$self->{FLUXES}}{$lower_key}}, $lower_flux;
push @{${$self->{FLUXES}}{$upper_key}}, $upper_flux;
my $color = $arg->upper() . "-" . $arg->lower();
push @{$self->{COLOR}}, $color;
}
}
return $self;
}
=item B<allfluxes>
Returns an array of all the C<Astro::Flux> objects contained in the
C<Astro::Fluxes> object,
@fluxes_not_dervied = $fluxes->allfluxes();
@fluxes_including_dervied = $fluxes->allfluxes( 'derived' );
by default this will not return the derived fluxes, however the method
takes an optional arguement of 'derived', in which case it will do.
=cut
sub allfluxes {
my $self = shift;
my $flag;
if ( @_ ) {
my $arg = shift;
if( $arg eq 'derived' ) {
$flag = 1;
}
}
my %fluxes = %{$self->{FLUXES}};
my @allfluxes;
foreach my $key ( keys %fluxes ) {
#print "\n KEY = $key \n";
my $value = $fluxes{$key};
foreach my $i ( 0 ... $#{$value} ) {
my $flux = ${$value}[$i];
# push derived fluxes only if we were asked to...
my $quality = $flux->quality();
my $derived = $quality->query('derived') if defined $quality;
#print " $i, $derived\n";
if ( defined $derived ) {
push @allfluxes, $flux if defined $flag;
} else {
push @allfluxes, $flux;
}
$quality = undef;
$derived = undef;
}
}
return @allfluxes;
}
=item B<fluxesbywaveband>
Returns an hash of all the C<Astro::Flux> objects contained in the
C<Astro::Fluxes> object,
@fluxes = $fluxes->fluxesbywaveband( waveband => 'J' );
=cut
sub fluxesbywaveband {
my $self = shift;
my %args = @_;
my $result;
if( ! defined( $args{'waveband'} ) ) {
( run in 0.858 second using v1.01-cache-2.11-cpan-99c4e6809bf )