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>, Paul T Baker <paul.baker@ligo.org>" 
 21   
 23           
 24          parameters = "ds_sq delta_t df dQ gQQ gff gtt gQf gtf gtQ a_snr b_snr coinc_snr choppedl snr_sq snr_ratio a_eff_D b_eff_D eff_D_ratio delta_eff_D"  
 25           
 26          select_count=""" 
 27                  SELECT 
 28                          COUNT(coinc_ringdown.coinc_event_id)""" 
 29          select_dimensions=""" 
 30                  SELECT 
 31                          coinc_ringdown.coinc_event_id, 
 32                          snglA.*, 
 33                          snglB.*, 
 34                          insp_coinc_event.time_slide_id, 
 35                          calc_delta_t(snglA.ifo, snglA.start_time, snglA.start_time_ns, snglB.ifo, snglB.start_time, snglB.start_time_ns, insp_coinc_event.time_slide_id), 
 36                          abs(snglA.frequency - snglB.frequency), 
 37                          abs(snglA.Quality - snglB.Quality), 
 38                          gQQ(snglA.Quality, snglB.Quality), 
 39                          gff(snglA.frequency, snglB.frequency, snglA.Quality, snglB.Quality), 
 40                          gtt(snglA.frequency, snglB.frequency, snglA.Quality, snglB.Quality), 
 41                          gQf(snglA.frequency, snglB.frequency, snglA.Quality, snglB.Quality), 
 42                          gtf(snglA.Quality, snglB.Quality), 
 43                          gtQ(snglA.frequency, snglB.frequency, snglA.Quality, snglB.Quality), 
 44                          snglA.snr, 
 45                          snglB.snr, 
 46                          coinc_ringdown.snr, 
 47                          coinc_ringdown.choppedl_snr, 
 48                          coinc_ringdown.snr_sq, 
 49                          max(snglA.snr/snglB.snr,snglB.snr/snglA.snr), 
 50                          snglA.eff_dist, 
 51                          snglB.eff_dist, 
 52                          max(snglA.eff_dist/snglB.eff_dist,snglB.eff_dist/snglA.eff_dist), 
 53                          abs(snglA.eff_dist - snglB.eff_dist)""" 
 54   
 55   
 56          add_select_injections=""" 
 57                  , coinc_ringdown.start_time+coinc_ringdown.start_time_ns*.000000001, 
 58                  process_params.value, 
 59                  sim_ringdown.distance""" 
 60          add_from_injections=""" 
 61                  FROM 
 62                          coinc_ringdown 
 63                          JOIN coinc_event_map AS mapA ON (mapA.coinc_event_id == coinc_ringdown.coinc_event_id) 
 64                          JOIN coinc_event_map AS mapB ON (mapB.coinc_event_id == coinc_ringdown.coinc_event_id) 
 65                          JOIN sngl_ringdown AS snglA ON (snglA.event_id == mapA.event_id) 
 66                          JOIN sngl_ringdown AS snglB ON (snglB.event_id == mapB.event_id) 
 67                          JOIN coinc_event_map AS mapC ON (mapC.event_id == coinc_ringdown.coinc_event_id) 
 68                          JOIN coinc_event_map AS mapD ON (mapD.coinc_event_id == mapC.coinc_event_id) 
 69                          JOIN sim_ringdown ON (sim_ringdown.simulation_id == mapD.event_id) 
 70                          JOIN coinc_event AS sim_coinc_event ON (sim_coinc_event.coinc_event_id == mapD.coinc_event_id) 
 71                          JOIN coinc_event AS insp_coinc_event ON (insp_coinc_event.coinc_event_id == mapA.coinc_event_id) 
 72                          JOIN coinc_definer ON (coinc_definer.coinc_def_id == sim_coinc_event.coinc_def_id) 
 73                          JOIN process_params ON (process_params.process_id == sim_ringdown.process_id) 
 74                  WHERE 
 75                          mapA.table_name == 'sngl_ringdown' 
 76                          AND mapB.table_name == 'sngl_ringdown' 
 77                          AND mapC.table_name == 'coinc_event' 
 78                          AND mapD.table_name == 'sim_ringdown' 
 79                          AND snglA.ifo == ? 
 80                          AND snglB.ifo == ? 
 81                          AND snglA.start_time > ? 
 82                          AND snglA.start_time < ? 
 83                          AND (  
 84                                  (process_params.program == 'rinj' AND process_params.param == '--waveform' ) 
 85                                  OR (process_params.program == 'inspinj'AND process_params.param == '--d-distr')  
 86                          )""" 
 87          add_where_all=""" 
 88                          AND coinc_definer.description == ? 
 89                  ORDER BY coinc_ringdown.start_time+coinc_ringdown.start_time_ns*.000000001""" 
 90          add_where_exact=""" 
 91                          AND coinc_definer.description == ? 
 92                  ORDER BY coinc_ringdown.start_time+coinc_ringdown.start_time_ns*.000000001""" 
 93          add_select_fulldata=""" 
 94                  , experiment_summary.datatype""" 
 95          add_from_fulldata=""" 
 96                  FROM 
 97                          coinc_ringdown 
 98                          JOIN coinc_event_map AS mapA ON (mapA.coinc_event_id == coinc_ringdown.coinc_event_id) 
 99                          JOIN coinc_event_map AS mapB ON (mapB.coinc_event_id == coinc_ringdown.coinc_event_id) 
100                          JOIN sngl_ringdown AS snglA ON (snglA.event_id == mapA.event_id) 
101                          JOIN sngl_ringdown AS snglB ON (snglB.event_id == mapB.event_id) 
102                          JOIN coinc_event AS insp_coinc_event ON (mapA.coinc_event_id == insp_coinc_event.coinc_event_id) 
103                          JOIN coinc_definer ON (coinc_definer.coinc_def_id == insp_coinc_event.coinc_def_id) 
104                          JOIN experiment_map ON (experiment_map.coinc_event_id == coinc_ringdown.coinc_event_id) 
105                          JOIN experiment_summary ON (experiment_summary.experiment_summ_id == experiment_map.experiment_summ_id) 
106                  WHERE 
107                          coinc_definer.search == 'ring' 
108                          AND coinc_definer.search_coinc_type == 0 
109                          AND mapA.table_name == 'sngl_ringdown' 
110                          AND mapB.table_name == 'sngl_ringdown' 
111                          AND snglA.ifo == ? 
112                          AND snglB.ifo == ? 
113                          AND snglA.start_time > ? 
114                          AND snglA.start_time < ?""" 
 115