PulsarCrossCorr_v2: fixes and enhancements related to timestamps
Description
This is a series of fixes to the CrossCorr resampling code that improve and rationalize the handling of timestamps. The standard CrossCorr resampling pipeline replaces loops over pairs of SFT times with loops over "TShort" segments, which typically have a length equal to the coherence time (Tmax) of the search. The most obvious problem with this is that the metric for the search was being computed using only the TShort timestamps, which led to parameter space grids which could be far too coarse. This has been fixed by adding a command line option --accurateResampMetric
which ensures the original SFT timestamps are used. Another problem was that the TShort segments were not aligned from detector to detector, which violated some expectations for the behavior of TShort pairs. This is fixed via the command line option --alignTShorts
. If the code is run without either of these options, it reverts to the old behavior.
Investigation and diagnosis of these problems is in the issues
- https://git.ligo.org/LMXBCrossCorr/LMXBCrossCorr/-/issues/107 (metric)
- https://git.ligo.org/LMXBCrossCorr/LMXBCrossCorr/-/issues/54 (alignment of Tshorts)
The new code also removes some memory deallocation errors, and standardizes the labelling of TShorts vs SFTs in arguments related to diagnostic outputs.
Tests were done using the commands in https://git.ligo.org/LMXBCrossCorr/LMXBCrossCorr/-/blob/master/notes/resampmetric/figsources/commands to verify that the preexisting versions of the pipeline produce the same outputs as before.
API Changes and Justification
Backwards Compatible Changes
-
This change does not modify any class/function/struct/type definitions in a public C header file or any Python class/function definitions -
This change adds new classes/functions/structs/types to a public C header file or Python module
Backwards Incompatible Changes
-
This change modifies an existing class/function/struct/type definition in a public C header file or Python module -
This change removes an existing class/function/struct/type from a public C header file or Python module
If any of the Backwards Incompatible check boxes are ticked please provide a justification why this change is necessary and why it needs to be done in a backwards incompatible way.
These are all specific to the resampling CrossCorr analysis
XLALModifyMultiTimestampsFromSFTs()
now has an extra boolean argument to tell it whether to align the TShorts or not.XLALModifyTimestampsFromSFTsShort()
which produces the TShort timestamps, now has anepoch
argument. This is needed to allow the TShorts to be aligned from one detector to another.XLALModifyMultiAMCoeffsWeights()
has been renamed toXLALModifyMultiWeights()
because the old name was inaccurate (it does not modify the AM coefficients)
Replacements have been created for the following now-deprecated functions:
-
XLALModifyMultiTimestampsFromSFTs()
->XLALGenerateMultiTshortTimestamps()
-
XLALModifyTimestampsFromSFTsShort()
->XLALGenerateTshortTimestamps()
-
XLALModifyMultiAMCoeffsWeights()
->XLALModifyMultiWeights()
Review Status
The changes mostly impact the resampling CrossCorr pipeline, which is yet to be reviewed. There is modified code in the regular "demod" pipeline, but it should produce no changes to the outputs. (We have checked this with one sample targeted analysis, but can include an additional check during the O4 review, if reviewers @graham.woan and @edward.daw wish.)