============== PEMcheck task ============== This task seeks to answer the question: at what times and frequencies is there evidence for environmental noise contaminating the GW signal. The task reports the environmental channel which shows the highest likelihood of coupling measured by the :math:`c`-statistic and the most likely coupling time and frequency. On the DQR html report, the :math:`c`-statistic is given as the :math:`p`-value. The two statistics are similar, but differ in their particulars. Should the :math:`c`-statistic be less than :math:`0.2` for one or more channels, we recommend that the event be flagged for additional followup by the PEM team. However, we do not recommend a low :math:`c`-statistic to be the only reason for a retraction. ------------ Requirements ------------ This task requires the following packages that may not be included in the requirements list for `dqrtasks`: * `gwpy` * `gwdetchar` * `pycbc` * `pytables` (`tables` when installed with PyPi) ----------- Description ----------- Prior to O4, we will study the coupling between the LIGO detectors ad the environment through a noise injection campaign. A description of a typical injection campaign is found `here `_. A map and description of the various physical and environment monitors (PEM) is found at the `PEM website `_. The result is a coupling function between each PEM sensor and DARM, :math:`CF(f)=\sqrt{\frac{Y^2_{inj}(f)-Y^2_{bkgd}(f)}{X^2_{inj}(f)-X^2_{bkgd}(f)}}` with :math:`X(f)` the ASD of the PEM sensor and :math:`Y(f)` the ASD of DARM. The ASDs compared are from the times injections were made in the PEM sensors as well as quiet, representative background times in both DARM and the sensor. In cases where the injection was not seen by DARM, we establish an upper limit for the coupling instead :math:`CF(f)=\frac{Y^2_{bkgd}(f)}{\sqrt{X^2_{inj}(f)-X^2_{bkgd}(f)}}.` An example coupling function can be found `here `_. Using the coupling function and the data during a potential GW event, we can independently estimate each PEM channel's contribution to the GW data via :math:`Y_{\mathrm{from~noise}}(f)=\frac{CF(f)\times X(f)}{4000~\mathrm{m}}.` In cases where :math:`Y_{\mathrm{from~noise}}(f)` exceeds the actual ASD observed in the GW channel at a give frequency :math:`\tilde{f}`, we reduce the coupling function at that point such that the predicted :math:`Y_{\mathrm{from~noise}}(f)` equals :math:`Y(f)` from the GW data. An visual representation of this tuning process is found `here `_. For each PEM channel and the GW strain channel, we compute the spectrogram near the GW event. From the PEM-strain projection, we also compute the spectrogram of the expected noise (the "projected spectrogram") in the strain channel due to noise from the equation above. For each time-frequency tile in the projected spectrogram with PEM-projected strain :math:`\mu`, we identify the strain :math:`h` in the corresponding time-frequency tile of the strain spectrogram. We then compute the probability of observing of observing :math:`h` given :math:`\mu`. We call this the :math:`c`-statistic, or contamination statistic. It corresponds to the probability that there is not excess noise in the GW channel from any disturbances witnessed by the PEM sensors. For event validation, we discard all :math:`c`-statistics which were calculated in tiles that are far away from the predicted inspiral track or time-frequency window in the case of a burst-only detection. For each channel, we report the minimum :math:`c`-statistic as well as the time and frequency of that tile. We also report :math:`P(\mathrm{noise in h(t)})=1-c_{\mathrm{min}}.` For electronics bay magnetometers, environmental signals are often coherent between nearby magnetometers. In this case, we average the :math:`c`-statistic over the number of electronics bay magnetometers to act as a trials factor for what amounts to performing a handful of nearly-identical tests for the likelihood of environmental signals contaminating DARM. Here is an example of two magnetometers during GW190725 whose results are downweighted by the trials factor: the SEI rack magnetometer at EX at LHO has a :math:`c`-statistic of :math:`0.12` (for :math:`P(\mathrm{noise in h(t)})` of :math:`0.88`) with contamination of :math:`h(t)` most likely at :math:`675.3` Hz at the merger time. The plot of :math:`P` is shown `here `_. However, there is less of a chance of coupling according to the other magnetometer, whose plot is `here `_. This results in a total probability of contamination that is below the threshold for reporting, as shown in the downweighted plot `here `_. The red curve in these images is centered on the GW waveform identified in low-latency. We give each channel's :math:`P(\mathrm{noise in h(t)})` in the html report produced by PEMcheck. For the event we take the maximum :math:`P(\mathrm{noise in h(t)})`. The channel that produced this highest probability is listed first in the html report. In the case of GW190725 at LHO, this was a PSL accelerometer. The coupling plot is shown `here `_. and the coupling function tuning report is shown `here `_. Note the slight tuning present at around :math:`50` and :math:`500` Hz. If most points in the coupling function require tuning, this is a sign that something about the interferometer has changed since the engineering run and you should contact the PEM team. The full PEMcheck report for this event can be found `here `_. This event does not quite meet the requirements for contacting the PEM team. Should the :math:`c`-statistic be less than :math:`0.2` (i.e. the coupling probability exceeds 20%) for one or more channels, **please contact the PEM team** at adrian.helmling-cornell@ligo.org. See slides at https://dcc.ligo.org/G2200943 for more description. Be on the lookout for a paper soon... -------------------- Example command-line -------------------- This is the help message: .. .. command-output:: dqr-pemcheck --help -------------- Example config -------------- .. .. code-block:: ini [h1] iterator = 1 ifo = H1 cf_source = /home/philippe.nguyen/public_html/projects/dqrtasks/ex_configs/task_configs/H1-pemcheck-coupling-functions.h5 [l1] iterator = 1 ifo = L1 cf_source = /home/philippe.nguyen/public_html/projects/dqrtasks/ex_configs/task_configs/L1-pemcheck-coupling-functions.h5 [pemcheck] iterate = h1 l1 description = uses PEM coupling functions to predict strain noise librarian = philippe.nguyen@ligo.org include_in_dag = True out = pemcheck_dir tier = 1 question = Are known sources of noise without auxiliary witnesses active? executable = dqr-pemcheck request_memory = 400MB arguments ="${ifo} -v --graceid ${graceid} --gps ${t_0} --output-dir ${outdir} --cf-source ${cf_source}" -------------------- Example results page -------------------- .. .. raw:: html