Change to LALInference ROQ to avoid Mchirp biases
There has been problems with LALInference_ROQ
runs recovering biased Mchirp posteriors. This was especially problematic for lowMass analyses.
I have found the culprit for this behaviour, it's the way the lalinference_compute_roq_weights.py
script gets its deltaF
variable. Previously this was done through deltaF = fseries[1] - fseries[0]
, but when using a non-power-of-two seglen, the way at which the fseries
were written to file meant that the spacing was not equal across the bandwidth and also not equal to its definition of deltaF = 1/seglen
.
This discrepancy meant that when defining the bandwidth to use, through options like data[fLow_index:fHigh_index]
the indices fLow_index
and fHigh_index
were sometimes one number too high (or low).
This MR solves this inconsistency by strictly calling deltaF = 1./options.seglen
.
As evidence for this being the solutoin I'll present two LALInference analyses of exactly the same BNS injection, analysed before the fix and after the fix. Apart from the fix introduced in this MR, the two analyses uses the exact same codebase.
This MR also includes a removal of the enforcing of srate < 8192
, a limitation which can cause similar problems due to truncation of the data.