diff --git a/gracedb/models.py b/gracedb/models.py index 508883d738ed0e9a9ae3e439e0dc09752a5da878..9e46ba2d2bb710e8ec5acb61f1ebba951434812b 100644 --- a/gracedb/models.py +++ b/gracedb/models.py @@ -1,6 +1,8 @@ from django.db import models from django.core.urlresolvers import reverse +from model_utils.managers import InheritanceManager + import datetime import thread import string @@ -49,6 +51,9 @@ class Label(models.Model): return self.name class Event(models.Model): + + objects = InheritanceManager() # Queries can return subclasses, if available. + ANALYSIS_TYPE_CHOICES = ( ("LM", "LowMass"), ("HM", "HighMass"), @@ -198,3 +203,36 @@ class Approval(models.Model): approvedEvent = models.ForeignKey(Event, null=False) approvingCollaboration = models.CharField(max_length=1, choices=COLLABORATION_CHOICES) + +## Analysis Specific Attributes. + +class InspiralEvent(Event): + ifos = models.CharField(max_length=20, default="") + end_time = models.PositiveIntegerField(null=True) + end_time_ns = models.PositiveIntegerField(null=True) + mass = models.FloatField(null=True) + mchirp = models.FloatField(null=True) + minimum_duration = models.FloatField(null=True) + snr = models.FloatField(null=True) + false_alarm_rate = models.FloatField(null=True) + combined_far = models.FloatField(null=True) + + +class BurstEvent(Event): + ifos = models.CharField(max_length=20, default="") + start_time = models.PositiveIntegerField(null=True) + start_time_ns = models.PositiveIntegerField(null=True) + duration = models.FloatField(null=True) + peak_time = models.PositiveIntegerField(null=True) + peak_time_ns = models.PositiveIntegerField(null=True) + central_freq = models.FloatField(null=True) + bandwidth = models.FloatField(null=True) + amplitude = models.FloatField(null=True) + snr = models.FloatField(null=True) + confidence = models.FloatField(null=True) + false_alarm_rate = models.FloatField(null=True) + ligo_axis_ra = models.FloatField(null=True) + ligo_axis_dec = models.FloatField(null=True) + ligo_angle = models.FloatField(null=True) + ligo_angle_sig = models.FloatField(null=True) +