After a lot of experimentation, I have found a way to improve the attenuation of frequencies below 9 Hz in the calibration by 1-2 orders of magnitude, without significantly increasing the computational cost or latency of the pipeline. Here is a list of what I've changed and what I've kept the same:
Of all the things I tried, this is what worked the best. Reasons I did not make this even better include:
Several plots are attached to show the new features. The first 5 plots are the frequency responses and comparisons to the ideal models for each of the filters used. The last 3 plots are comparisons of C01 data with data produced using the new filters. The attenuation is better by about 1-2 orders of magnitude, and there is just a very small amount of ripple added below 20 Hz.
I have made some additional improvement in the high-pass filtering in the DCS filters. The additional changes I made were:
A similar set of plots is included, with several additions:
It's also worthwhile to remind ourselves of the list of reasons why we wanted to improve this filter/what we wanted to improve:
After further investigation, I've found that the the noted ~1% errors in the PUM/UIM stage filters just above 10 Hz are most likely due to notches in the actuation models at those frequencies, and do not seem to be affected by the high-pass filtering. One way to get rid of those errors is to remove the time-domain Tukey window from the filters. However, this generates a lot of noise in the spectrum due to the fact that the filters do not fall off smoothly.
I also found that the "shelf" seen at low frequency in the ASDs (the noise from DC to ~0.25 Hz) may be an artifact of the relatively low frequency resolution (I used 3-second FFTs, so 0.33 Hz resolution) in the calculation of the ASDs. I have produced another ASD from the same data using 64-second FFTs averaged over 12 hours. The "shelf" is not seen here. I also investigated the possibility that this is a DC component (in which case it would still be present in the new ASD I plotted, but not shown due to the higher resolution). I added a feature the the gstlal calibration pipeline that allows the option to remove a DC component from the data before filtering it. The method is to simply downsample the input data to 16 Hz (with high-quality anti-aliasing), take a running average of 16 seconds, and then upsample (with high-quality anti-imaging) and subtract the result from the input data. This can be done with zero latency by shifting the timestamps becuase the phase of a DC component is zero regardless of timestamp shifts. The result of removing the DC component before filtering was indistinguishable from not removing it, implying that this is not a DC component.
The attached plot shows a high-resolution spectrum comparison of C01 data to data produced using the new high-pass filters. There appears to be a line present around 3 Hz. The small differences between C01 and the new DCS data above 10 Hz are due to the fact that the kappas were not applied in producing the new data (I used the same data to produce the comparison to the modeled response function, which requires not applying the kappas).