File Coverage

blib/lib/Astro/Catalog/Item/Morphology.pm
Criterion Covered Total %
statement 53 103 51.4
branch 9 42 21.4
condition 6 33 18.1
subroutine 12 19 63.1
pod 11 11 100.0
total 91 208 43.7


line stmt bran cond sub pod time code
1             package Astro::Catalog::Item::Morphology;
2              
3             =head1 NAME
4              
5             Astro::Catalog::Item::Morphology - Information about a star's morphology.
6              
7             =head1 SYNOPSIS
8              
9             $morphology = new Astro::Catalog::Item::Morphology( );
10              
11             =head1 DESCRIPTION
12              
13             Stores information about an astronomical object's morphology.
14              
15             =cut
16              
17 3     3   10296243 use 5.006;
  3         34  
  3         1468  
18 3     3   25 use strict;
  3         12  
  3         173  
19 3     3   69 use warnings;
  3         17  
  3         678  
20 3     3   21 use vars qw/ $VERSION /;
  3         7  
  3         709  
21 3     3   22 use Carp;
  3         6  
  3         602  
22              
23 3     3   3935 use Number::Uncertainty;
  3         10940  
  3         97  
24              
25 3     3   21 use warnings::register;
  3         6  
  3         3780  
26              
27             $VERSION = "4.31";
28              
29             =head1 METHODS
30              
31             =head2 Constructor
32              
33             =over 4
34              
35             =item B
36              
37             Create a new instance of an C object.
38              
39             $morphology = new Astro::Catalog::Item::Morphology( );
40              
41             This method returns a reference to an C
42             object.
43              
44             =cut
45              
46             sub new {
47 4     4 1 6940 my $proto = shift;
48 4   33     26 my $class = ref( $proto ) || $proto;
49              
50             # Retrieve the arguments.
51 4         12 my %args = @_;
52              
53             # Create the object.
54 4         13 my $obj = bless {}, $class;
55              
56             # Configure the object.
57 4         23 $obj->_configure( %args );
58              
59             # And return it.
60 4         13 return $obj;
61             }
62              
63             =back
64              
65             =head2 Accessor Methods
66              
67             =over 4
68              
69             =item B
70              
71             The ellipticity of the object.
72              
73             =cut
74              
75             sub ellipticity {
76 1     1 1 1 my $self = shift;
77 1 50       5 if( @_ ) {
78 1         2 my $ell = shift;
79 1 50 33     8 if( defined( $ell ) &&
80             ! UNIVERSAL::isa( $ell, "Number::Uncertainty" ) ) {
81 1         5 $ell = new Number::Uncertainty( Value => $ell );
82             }
83 1         29 $self->{ELLIPTICITY} = $ell;
84             }
85 1         5 return $self->{ELLIPTICITY};
86             }
87              
88             =item B
89              
90             Position angle using the pixel frame as a reference. Measured counter-
91             clockwise from the positive x axis.
92              
93             =cut
94              
95             sub position_angle_pixel {
96 1     1 1 2 my $self = shift;
97 1 50       4 if( @_ ) {
98 1         2 my $ang = shift;
99 1 50 33     10 if( defined( $ang ) &&
100             ! UNIVERSAL::isa( $ang, "Number::Uncertainty" ) ) {
101 0         0 $ang = new Number::Uncertainty( Value => $ang );
102             }
103 1         3 $self->{POSITION_ANGLE_PIXEL} = $ang;
104             }
105 1         36 return $self->{POSITION_ANGLE_PIXEL};
106             }
107              
108             =item B
109              
110             Position angle using the world coordinate system as a reference. Measured
111             east of north.
112              
113             =cut
114              
115             sub position_angle_world {
116 0     0 1 0 my $self = shift;
117 0 0       0 if( @_ ) {
118 0         0 my $ang = shift;
119 0 0 0     0 if( defined( $ang ) &&
120             ! UNIVERSAL::isa( $ang, "Number::Uncertainty" ) ) {
121 0         0 $ang = new Number::Uncertainty( Value => $ang );
122             }
123 0         0 $self->{POSITION_ANGLE_WORLD} = $ang;
124             }
125 0         0 return $self->{POSITION_ANGLE_WORLD};
126             }
127              
128             =item B
129              
130             Length of the semi-major axis in units of pixels.
131              
132             =cut
133              
134             sub major_axis_pixel {
135 0     0 1 0 my $self = shift;
136 0 0       0 if( @_ ) {
137 0         0 my $axis = shift;
138 0 0 0     0 if( defined( $axis ) &&
139             ! UNIVERSAL::isa( $axis, "Number::Uncertainty" ) ) {
140 0         0 $axis = new Number::Uncertainty( Value => $axis );
141             }
142 0         0 $self->{MAJOR_AXIS_PIXEL} = $axis;
143             }
144 0         0 return $self->{MAJOR_AXIS_PIXEL};
145             }
146              
147             =item B
148              
149             Length of the semi-minor axis in units of pixels.
150              
151             =cut
152              
153             sub minor_axis_pixel {
154 0     0 1 0 my $self = shift;
155 0 0       0 if( @_ ) {
156 0         0 my $axis = shift;
157 0 0 0     0 if( defined( $axis ) &&
158             ! UNIVERSAL::isa( $axis, "Number::Uncertainty" ) ) {
159 0         0 $axis = new Number::Uncertainty( Value => $axis );
160             }
161 0         0 $self->{MINOR_AXIS_PIXEL} = $axis;
162             }
163 0         0 return $self->{MINOR_AXIS_PIXEL};
164             }
165              
166             =item B
167              
168             Length of the semi-major axis in units of degrees.
169              
170             =cut
171              
172             sub major_axis_world {
173 0     0 1 0 my $self = shift;
174 0 0       0 if( @_ ) {
175 0         0 my $axis = shift;
176 0 0 0     0 if( defined( $axis ) &&
177             ! UNIVERSAL::isa( $axis, "Number::Uncertainty" ) ) {
178 0         0 $axis = new Number::Uncertainty( Value => $axis );
179             }
180 0         0 $self->{MAJOR_AXIS_WORLD} = $axis;
181             }
182 0         0 return $self->{MAJOR_AXIS_WORLD};
183             }
184              
185             =item B
186              
187             Length of the semi-minor axis in units of degrees.
188              
189             =cut
190              
191             sub minor_axis_world {
192 0     0 1 0 my $self = shift;
193 0 0       0 if( @_ ) {
194 0         0 my $axis = shift;
195 0 0 0     0 if( defined( $axis ) &&
196             ! UNIVERSAL::isa( $axis, "Number::Uncertainty" ) ) {
197 0         0 $axis = new Number::Uncertainty( Value => $axis );
198             }
199 0         0 $self->{MINOR_AXIS_WORLD} = $axis;
200             }
201 0         0 return $self->{MINOR_AXIS_WORLD};
202             }
203              
204             =item B
205              
206             Area of the object, usually by using isophotal techniques, in square
207             pixels.
208              
209             =cut
210              
211             sub area {
212 8     8 1 2216 my $self = shift;
213 8 100       24 if( @_ ) {
214 3         4 my $area = shift;
215 3 100 100     18 if( defined( $area ) &&
216             ! UNIVERSAL::isa( $area, "Number::Uncertainty" ) ) {
217 1         9 $area = new Number::Uncertainty( Value => $area );
218             }
219 3         91 $self->{AREA} = $area;
220             }
221 8         32 return $self->{AREA};
222             }
223              
224             =item B
225              
226             FWHM of the object in pixels.
227              
228             =cut
229              
230             sub fwhm_pixel {
231 0     0 1 0 my $self = shift;
232 0 0       0 if( @_ ) {
233 0         0 my $fwhm = shift;
234 0 0 0     0 if( defined( $fwhm ) &&
235             ! UNIVERSAL::isa( $fwhm, "Number::Uncertainty" ) ) {
236 0         0 $fwhm = new Number::Uncertainty( Value => $fwhm );
237             }
238 0         0 $self->{FWHM_PIXEL} = $fwhm;
239             }
240 0         0 return $self->{FWHM_PIXEL};
241             }
242              
243             =item B
244              
245             FWHM of the object in arcseconds.
246              
247             =cut
248              
249             sub fwhm_world {
250 0     0 1 0 my $self = shift;
251 0 0       0 if( @_ ) {
252 0         0 my $fwhm = shift;
253 0 0 0     0 if( defined( $fwhm ) &&
254             ! UNIVERSAL::isa( $fwhm, "Number::Uncertainty" ) ) {
255 0         0 $fwhm = new Number::Uncertainty( Value => $fwhm );
256             }
257 0         0 $self->{FWHM_WORLD} = $fwhm;
258             }
259 0         0 return $self->{FWHM_WORLD};
260             }
261              
262             =back
263              
264             =head1 PRIVATE METHODS
265              
266             =over 4
267              
268             =item B<_configure>
269              
270             Configure the object.
271              
272             =cut
273              
274             sub _configure {
275 4     4   6 my $self = shift;
276              
277 4         7 my %args = @_;
278 4         12 foreach my $key ( keys %args ) {
279 5 50       34 if( $self->can( lc( $key ) ) ) {
280 5         6 my $method = lc $key;
281 5         16 $self->$method( $args{$key} );
282             }
283             }
284             }
285              
286             =back
287              
288             =head1 REVISION
289              
290             $Id: Morphology.pm,v 1.4 2006/06/05 21:03:23 cavanagh Exp $
291              
292             =head1 COPYRIGHT
293              
294             Copyright (C) 2004 Particle Physics and Astronomy Research
295             Council. All Rights Reserved.
296              
297             =head1 AUTHORS
298              
299             Brad Cavanagh Eb.cavanagh@jach.hawaii.eduE
300              
301             =cut
302              
303             1;