25 """Produce LHO coherent and null data streams"""
26 __author__ =
"Madeline Wade <madeline.wade@ligo.org>"
32 gobject.threads_init()
39 from gstlal
import pipeparts
52 'LHO Coherent and Null Streams',
62 'block stride for fir bank',
63 1, gobject.G_MAXUINT, 1024,
64 gobject.PARAM_READWRITE
67 gobject.TYPE_PYOBJECT,
69 'impulse response for H1',
70 gobject.PARAM_READWRITE
73 gobject.TYPE_PYOBJECT,
75 'impulse response for H2',
76 gobject.PARAM_READWRITE
82 0, gobject.G_MAXUINT, 0,
83 gobject.PARAM_READWRITE
89 0, gobject.G_MAXUINT, 0,
90 gobject.PARAM_READWRITE
94 def do_set_property(self, prop, val):
95 if prop.name ==
"block-stride":
96 self.H1firfilter.set_property(
"block-stride", val)
97 self.H2firfilter.set_property(
"block-stride", val)
98 elif prop.name ==
"H1-impulse":
99 self.H1firfilter.set_property(
"fir-matrix", [val])
100 elif prop.name ==
"H2-impulse":
101 self.H2firfilter.set_property(
"fir-matrix", [val])
102 elif prop.name ==
"H1-latency":
103 self.H1firfilter.set_property(
"latency", val)
104 elif prop.name ==
"H2-latency":
105 self.H2firfilter.set_property(
"latency", val)
109 def do_get_property(self, prop):
110 if prop.name ==
"block-stride":
111 return self.H1firfilter.get_property(
"block-stride")
112 elif prop.name ==
"H1-impulse":
113 return self.H1firfilter.get_property(
"fir-matrix")[0]
114 elif prop.name ==
"H2-impulse":
115 return self.H2firfilter.get_property(
"fir-matrix")[0]
116 elif prop.name ==
"H1-latency":
117 return self.H1firfilter.get_property(
"latency")
118 elif prop.name ==
"H2-latency":
119 return self.H2firfilter.get_property(
"latency")
124 super(lal_lho_coherent_null, self).__init__()
127 H1tee = gst.element_factory_make(
"tee")
129 H2tee = gst.element_factory_make(
"tee")
132 self.add_pad(gst.GhostPad(
"H1sink", H1tee.get_pad(
"sink")))
133 self.add_pad(gst.GhostPad(
"H2sink", H2tee.get_pad(
"sink")))
136 self.
H1firfilter = H1head = pipeparts.mkfirbank(self, H1tee)
139 self.
H2firfilter = H2head = pipeparts.mkfirbank(self, H2tee)
145 COHhead = gst.element_factory_make(
"lal_adder")
146 COHhead.set_property(
"sync",
True)
148 pipeparts.mkqueue(self, H1head).link(COHhead)
149 pipeparts.mkqueue(self, H2head).link(COHhead)
155 NULLhead = gst.element_factory_make(
"lal_adder")
156 NULLhead.set_property(
"sync",
True)
158 pipeparts.mkqueue(self, H1tee).link(NULLhead)
159 pipeparts.mkaudioamplify(self, pipeparts.mkqueue(self, H2tee), -1).link(NULLhead)
161 self.add_pad(gst.GhostPad(
"COHsrc", COHhead.get_pad(
"src")))
162 self.add_pad(gst.GhostPad(
"NULLsrc", NULLhead.get_pad(
"src")))
164 gobject.type_register(lal_lho_coherent_null)
166 __gstelementfactory__ = (
167 lal_lho_coherent_null.__name__,
169 lal_lho_coherent_null