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 calc_delta_t(snglA.ifo, snglA.end_time, snglA.end_time_ns, snglB.ifo, snglB.end_time, snglB.end_time_ns, insp_coinc_event.time_slide_id),
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 WHERE
76 mapA.table_name == 'sngl_inspiral'
77 AND mapB.table_name == 'sngl_inspiral'
78 AND mapC.table_name == 'coinc_event'
79 AND mapD.table_name == 'sim_inspiral'
80 AND snglA.ifo == ?
81 AND snglB.ifo == ?
82 AND process_params.program == 'inspinj' AND process_params.param == '--d-distr'"""
83 add_where_all="""
84 AND coinc_definer.coinc_def_id == "coinc_definer:coinc_def_id:12"
85 ORDER BY coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001"""
86 add_where_exact="""
87 AND coinc_definer.description == ?
88 ORDER BY coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001"""
89 add_from_fulldata="""
90 FROM
91 coinc_inspiral
92 JOIN coinc_event_map AS mapA ON (mapA.coinc_event_id == coinc_inspiral.coinc_event_id)
93 JOIN coinc_event_map AS mapB ON (mapB.coinc_event_id == coinc_inspiral.coinc_event_id)
94 JOIN sngl_inspiral AS snglA ON (snglA.event_id == mapA.event_id)
95 JOIN sngl_inspiral AS snglB ON (snglB.event_id == mapB.event_id)
96 JOIN coinc_event AS insp_coinc_event ON (mapA.coinc_event_id == insp_coinc_event.coinc_event_id)
97 JOIN coinc_definer ON (coinc_definer.coinc_def_id == insp_coinc_event.coinc_def_id)
98 JOIN experiment_map ON (experiment_map.coinc_event_id == coinc_inspiral.coinc_event_id)
99 JOIN experiment_summary ON (experiment_summary.experiment_summ_id == experiment_map.experiment_summ_id)
100 WHERE
101 coinc_definer.search == 'inspiral'
102 AND coinc_definer.search_coinc_type == 0
103 AND mapA.table_name == 'sngl_inspiral'
104 AND mapB.table_name == 'sngl_inspiral'
105 AND snglA.ifo == ?
106 AND snglB.ifo == ?
107 ORDER BY coinc_inspiral.end_time+coinc_inspiral.end_time_ns*.000000001"""
108