Class Overview |
Since the Science Archive is based on an object-oriented database, we have classes for each object, not tables as opposed to objects in a relational database. The classes are linked to each other either by inheritance or by association.
Inheritance is a way to specialize a class. Every data member of the base class is also member of the inherited class, but the inherited class may have additional data members. In the schemata below, inheritance is represented by a large empty arrowhead between the classes.
Associations link classes to one another. There are one-to-one, one-to-many and many-to-many associations. Through the associations one can access the data members of the associated class through the dereferencing operator '.' (dot). In the schemata below, associations are the thick lines connecting classes, -to-many links represented as blobs at the corresponding end.
Objects of the photometric survey are all members of the base class PhotoObj. It is specialized into primary, secondary and bad objects:
PhotoPrimary objects are the primary survey catalog objects. Secondaries are secondary observations of objects (in the overlap area of the stripes). More than 10% of all objects have secondaries. There is a many-to-many link between primary and secondary objects. A secondary object may be associated to more than one primary if the secondary observation is of a bad quality and could not be resolved into two or more objects. And obviously primaries can have associations to several secondary observations.
The link of the PhotoObj to itself is the one-to-many parent-child link. Each object may belong to a family of objects (the deblender was at work here).
Bad objects are kept only if they are member of a family, for example
spiral arms of a galaxy that have been deblended.
The photometric survey is strucutred into Chunk > Segment > Field > PhotoObj, all linked by a one-to-many association. The Tag object contains the coordinates and model magnitudes of each object along with the object flags. Each PhotoObj object has exactly one Tag associated with it through a one-to-one link.
The SDSSConstants class contains global survey constants of interest.
There are two placeholder classes for photometric redshifts to come.
The Tag objects are specialized using inheritance into several classes depending on their type:
Tag objects are chosen based on the following selection criteria:
if ( ( ( ( obj->status & AR_OBJECT_STATUS_FIRST_FIELD ) && gotFirst_ ) || ( !( obj->status & AR_OBJECT_STATUS_FIRST_FIELD ) && !gotFirst_ ) ) && ( obj->status & AR_OBJECT_STATUS_PRIMARY ) && ( segH->status == AR_SEGMENT_STATUS_PRIMARY ) ) { ---> Primary if ( ( obj->objc_type == AR_OBJECT_TYPE_STAR) ) { ---> Star } else if ( ( obj->objc_type == AR_OBJECT_TYPE_GALAXY) ) { ---> Galaxy } else if ( ( obj->objc_type == AR_OBJECT_TYPE_SKY) ) { ---> Sky } else { ---> Unknown } } else if ( ( ( ( obj->status & AR_OBJECT_STATUS_FIRST_FIELD ) && gotFirst_ ) || ( !( obj->status & AR_OBJECT_STATUS_FIRST_FIELD ) && !gotFirst_ ) ) && ( obj->status & AR_OBJECT_STATUS_SECONDARY ) ) { ---> Secondary if ( ( obj->objc_type == AR_OBJECT_TYPE_STAR) ) { ---> StarSecondary } else if ( ( obj->objc_type == AR_OBJECT_TYPE_GALAXY) ) { ---> GalaxySecondary } else if ( ( obj->objc_type == AR_OBJECT_TYPE_SKY) ) { ---> SkySecondary } else { ---> UnknownSecondary } } else { --> Family }
Try to use the Tag object and its inherited classes whenever possible
as your query object.