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