1  import sqlite3 
  2  from glue.ligolw import dbtables 
  3  from glue.ligolw import table 
  4  from glue.ligolw import ilwd 
  5  from glue import segments 
  6  from pylal import SnglInspiralUtils 
  7  from pylal import db_thinca_rings 
  8  from pylal import git_version 
  9  from time import clock,time 
 10  from optparse import * 
 11  import glob 
 12  import sys 
 13  import random 
 14  import math 
 15   
 16  usage=""" 
 17  this is a module for use in mvsc_get_doubles 
 18  """ 
 19   
 20  __author__ = "Kari Hodge <khodge@ligo.caltech.edu>" 
 21   
 23           
 24          parameters = "ethinca delta_t ab_dmchirp_rel ab_deta_rel a_snr b_snr a_chisq_red b_chisq_red a_effective_snr b_effective_snr a_rsq_veto_duration b_rsq_veto_duration a_cont_chisq_red b_cont_chisq_red coinc_inspiral_snr sngl_gps_time_a sngl_gps_time_b" 
 25           
 26          select_count=""" 
 27                  SELECT 
 28                          COUNT(coinc_inspiral.coinc_event_id)""" 
 29          select_dimensions=""" 
 30                  SELECT 
 31                          coinc_inspiral.coinc_event_id, 
 32                          snglA.*, 
 33                          snglB.*, 
 34                          insp_coinc_event.time_slide_id, 
 35                          (snglA.end_time+1e-9*snglA.end_time_ns+tsA.offset)-(snglB.end_time+1e-9*snglB.end_time_ns+tsB.offset), 
 36                          abs(2*(snglA.mchirp - snglB.mchirp)/(snglA.mchirp+snglB.mchirp)), 
 37                          abs(2*(snglA.eta - snglB.eta)/(snglA.eta+snglB.eta)), 
 38                          snglA.snr, 
 39                          snglB.snr, 
 40                          snglA.chisq/(2*snglA.chisq_dof-2), 
 41                          snglB.chisq/(2*snglB.chisq_dof-2), 
 42                          calc_effective_snr(snglA.snr, snglA.chisq, snglA.chisq_dof), 
 43                          calc_effective_snr(snglB.snr, snglB.chisq, snglB.chisq_dof), 
 44                          snglA.rsqveto_duration, 
 45                          snglB.rsqveto_duration, 
 46                          CASE snglA.cont_chisq_dof 
 47                                  WHEN 0.0 THEN 1.0 
 48                                  ELSE snglA.cont_chisq/snglA.cont_chisq_dof END, 
 49                          CASE snglB.cont_chisq_dof 
 50                                  WHEN 0.0 THEN 1.0 
 51                                  ELSE snglB.cont_chisq/snglB.cont_chisq_dof END, 
 52                          coinc_inspiral.snr, 
 53                          snglA.end_time+snglA.end_time_ns*.000000001, 
 54                          snglB.end_time+snglB.end_time_ns*.000000001""" 
 55          add_select_injections=""" 
 56                  , coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001, 
 57                  process_params.value, 
 58                  sim_inspiral.distance""" 
 59          add_select_fulldata=""" 
 60                  , experiment_summary.datatype""" 
 61          add_from_injections=""" 
 62                  FROM 
 63                          coinc_inspiral 
 64                          JOIN coinc_event_map AS mapA ON (mapA.coinc_event_id == coinc_inspiral.coinc_event_id) 
 65                          JOIN coinc_event_map AS mapB ON (mapB.coinc_event_id == coinc_inspiral.coinc_event_id) 
 66                          JOIN sngl_inspiral AS snglA ON (snglA.event_id == mapA.event_id) 
 67                          JOIN sngl_inspiral AS snglB ON (snglB.event_id == mapB.event_id) 
 68                          JOIN coinc_event_map AS mapC ON (mapC.event_id == coinc_inspiral.coinc_event_id) 
 69                          JOIN coinc_event_map AS mapD ON (mapD.coinc_event_id == mapC.coinc_event_id) 
 70                          JOIN sim_inspiral ON (sim_inspiral.simulation_id == mapD.event_id) 
 71                          JOIN coinc_event AS sim_coinc_event ON (sim_coinc_event.coinc_event_id == mapD.coinc_event_id) 
 72                          JOIN coinc_event AS insp_coinc_event ON (insp_coinc_event.coinc_event_id == mapA.coinc_event_id) 
 73                          JOIN coinc_definer ON (coinc_definer.coinc_def_id == sim_coinc_event.coinc_def_id) 
 74                          JOIN process_params ON (process_params.process_id == sim_inspiral.process_id) 
 75                          JOIN time_slide AS tsA ON (tsA.time_slide_id=insp_coinc_event.time_slide_id) 
 76                          JOIN time_slide AS tsB ON (tsB.time_slide_id=insp_coinc_event.time_slide_id) 
 77                  WHERE 
 78                          mapA.table_name == 'sngl_inspiral' 
 79                          AND mapB.table_name == 'sngl_inspiral' 
 80                          AND mapC.table_name == 'coinc_event' 
 81                          AND mapD.table_name == 'sim_inspiral' 
 82                          AND tsA.instrument == snglA.ifo 
 83                          AND tsB.instrument == snglB.ifo 
 84                          AND snglA.ifo == ? 
 85                          AND snglB.ifo == ? 
 86                          AND (process_params.program == 'inspinj' AND process_params.param == '--m-distr')""" 
 87          add_where_all=""" 
 88                          AND coinc_definer.description == ? 
 89                  ORDER BY coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001""" 
 90          add_where_exact=""" 
 91                          AND coinc_definer.description == ? 
 92                  ORDER BY coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001""" 
 93          add_from_fulldata=""" 
 94                  FROM 
 95                          coinc_inspiral 
 96                          JOIN coinc_event_map AS mapA ON (mapA.coinc_event_id == coinc_inspiral.coinc_event_id) 
 97                          JOIN coinc_event_map AS mapB ON (mapB.coinc_event_id == coinc_inspiral.coinc_event_id) 
 98                          JOIN sngl_inspiral AS snglA ON (snglA.event_id == mapA.event_id) 
 99                          JOIN sngl_inspiral AS snglB ON (snglB.event_id == mapB.event_id) 
100                          JOIN coinc_event AS insp_coinc_event ON (mapA.coinc_event_id == insp_coinc_event.coinc_event_id) 
101                          JOIN coinc_definer ON (coinc_definer.coinc_def_id == insp_coinc_event.coinc_def_id) 
102                          JOIN experiment_map ON (experiment_map.coinc_event_id == coinc_inspiral.coinc_event_id) 
103                          JOIN experiment_summary ON (experiment_summary.experiment_summ_id == experiment_map.experiment_summ_id) 
104                          JOIN time_slide AS tsA ON (tsA.time_slide_id=insp_coinc_event.time_slide_id) 
105                          JOIN time_slide AS tsB ON (tsB.time_slide_id=insp_coinc_event.time_slide_id) 
106                  WHERE 
107                          coinc_definer.search == 'inspiral' 
108                          AND coinc_definer.search_coinc_type == 0 
109                          AND mapA.table_name == 'sngl_inspiral' 
110                          AND mapB.table_name == 'sngl_inspiral' 
111                          AND tsA.instrument == snglA.ifo 
112                          AND tsB.instrument == snglB.ifo 
113                          AND snglA.ifo == ? 
114                          AND snglB.ifo == ?""" 
 115                           
116