def calc_delta_t(trigger1_ifo, trigger1_end_time, trigger1_end_time_ns, trigger2_ifo, trigger2_end_time, trigger2_end_time_ns, time_slide_id, rings=rings, offset_vectors=offset_vectors): print("calculating delta_t", file=sys.stderr) trigger1_true_end_time = dbtables.lsctables.LIGOTimeGPS( trigger1_end_time, trigger1_end_time_ns) trigger2_true_end_time = dbtables.lsctables.LIGOTimeGPS( trigger2_end_time, trigger2_end_time_ns) # find the instruments that were on at trigger 1's end time and # find the ring that contains this trigger try: [ring] = [ segs[segs.find(trigger1_end_time)] for segs in rings.values() if trigger1_end_time in segs ] except ValueError: # FIXME THERE SEEMS TO BE A BUG IN THINCA! Occasionally thinca records a trigger on the upper boundary # of its ring. This would make it outside the ring which is very problematic. It needs to be fixed in thinca # for now we'll allow the additional check that the other trigger is in the ring and use it. print("trigger1 found not on a ring, trying trigger2", file=sys.stderr) [ring] = [ segs[segs.find(trigger2_end_time)] for segs in rings.values() if trigger2_end_time in segs ] # now we can unslide the triggers on the ring try: trigger1_true_end_time = SnglInspiralUtils.slideTimeOnRing( trigger1_true_end_time, offset_vectors[time_slide_id][trigger1_ifo], ring) trigger2_true_end_time = SnglInspiralUtils.slideTimeOnRing( trigger2_true_end_time, offset_vectors[time_slide_id][trigger2_ifo], ring) out = abs(trigger1_true_end_time - trigger2_true_end_time) return float(out) except: print("calc delta t failed", trigger1_true_end_time, trigger2_true_end_time, ring) return float( abs(trigger1_true_end_time - trigger2_true_end_time)) % 1
def calc_delta_t(trigger1_ifo, trigger1_end_time, trigger1_end_time_ns, trigger2_ifo, trigger2_end_time, trigger2_end_time_ns, time_slide_id, rings = rings, offset_vectors = offset_vectors): print >>sys.stderr, "calculating delta_t" trigger1_true_end_time = dbtables.lsctables.LIGOTimeGPS(trigger1_end_time, trigger1_end_time_ns) trigger2_true_end_time = dbtables.lsctables.LIGOTimeGPS(trigger2_end_time, trigger2_end_time_ns) # find the instruments that were on at trigger 1's end time and # find the ring that contains this trigger try: [ring] = [segs[segs.find(trigger1_end_time)] for segs in rings.values() if trigger1_end_time in segs] except ValueError: # FIXME THERE SEEMS TO BE A BUG IN THINCA! Occasionally thinca records a trigger on the upper boundary # of its ring. This would make it outside the ring which is very problematic. It needs to be fixed in thinca # for now we'll allow the additional check that the other trigger is in the ring and use it. print >>sys.stderr, "trigger1 found not on a ring, trying trigger2" [ring] = [segs[segs.find(trigger2_end_time)] for segs in rings.values() if trigger2_end_time in segs] # now we can unslide the triggers on the ring try: trigger1_true_end_time = SnglInspiralUtils.slideTimeOnRing(trigger1_true_end_time, offset_vectors[time_slide_id][trigger1_ifo], ring) trigger2_true_end_time = SnglInspiralUtils.slideTimeOnRing(trigger2_true_end_time, offset_vectors[time_slide_id][trigger2_ifo], ring) out = abs(trigger1_true_end_time - trigger2_true_end_time) return float(out) except: print "calc delta t failed",trigger1_true_end_time, trigger2_true_end_time, ring return float(abs(trigger1_true_end_time - trigger2_true_end_time)) % 1