Move lalapps/src/hwinjection/ to lalpulsar/bin/HWInjection/
Description
This MR moves the last CW related code in LALApps to LALPulsar; the hardware injection code psinject
.
Changelog
- Added test script, informed by looking at scripts in the hardware injection SVN repository (linked from the CW InvestigationsPage wiki page). Indeed I copied 3 of the hardware injection pulsar configuration files and the pre-O3 H1 actuation function file for use in the test script. (I assume none of these are considered proprietary data.) Test script compares the standard output of
psinject
(in text format) to a reference output generated from before any modifications are made topsinject
. (Obviously the test script can't test the actual injection of pulsar signals into the detectors, so that will still need to be vetted as usual prior to starting new observing runs.) - Extended test script to check
psinject
output of Frame files. This was apparently written to support hardware injections at Virgo, and I'm not sure this is currently in production use. Nevertheless I wanted to make sure this feature is preserved. - Modification to
psinject
: port the Frame file output code fromFrameL
to theLALFrame
wrapper library, so that eitherFrameL
orFrameCPP
can be used as backends. BecauseLALFrame
appears to be a more simple interface thanFrameL
, this code is now somewhat simpler; the code used to be able to write multiple frames to the one file, but now it just writes one frame per file, outputting its entire stored buffer at once. By default this will output 1-second frames at 16384 samples per second. These changes pass the test script. If this feature is ever put back into production this will need re-testing anyway. - Modification to
psinject
: automatically pass the right--fmin
and--Band
arguments tolalpulsar_Makefakedata_v4
.--fmin
should always be zero to get non-heterodyned timeseries, which--Band
should be half the sampling rate set bypsinject
, so it makes sense forpsinject
to handle those arguments. By defaultpsinject
samples at 16384 Hz and passes--fmin=0 --Band=8192
tolalpulsar_Makefakedata_v4
, consistent with current production usage. - Modification to
psinject
: removed an unused variableiarg
. - Move
lalapps/src/hwinjection/
tolalpulsar/bin/
. The hardware injection code is now namedlalpulsar_hwinject
. It will be always be compiled (in order to run the test script), but will only be installed if LALPulsar is compiled with GDS support (as it's not useful otherwise). - Build the LALPulsar RPM packages with GDS support. This requires the
cds-crtools[-deve]
RPM packages, which supply the SIStr library used bylalpulsar_hwinject
to stream the injections to the GDS arbitrary waveform generator. The local copies ofSIStr.[ch]
are deleted. This should allow the packaged version of LALPulsar to be used on the hardware injection servers at the sites. - Documentation: I moved the contents of
README.s3inject
intopsinject.c
as a Doxygen header, reformatted, and tried to at least remove sections which were clearly outdated, but otherwise made minimal changes. Added a summary of these changes to the internal changelog.
Notes for Users
- Code renamed from
online_psinject
tolalpulsar_hwinject
. - No longer need to set
--fmin
and--Band
arguments tolalpulsar_Makefakedata_v4
inin.?
input files. - Should be able to use RPM-packaged LALPulsar for hardware injection servers.
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
Review Status
FYI @keith-riles @evan-goetz @david-keitel. This is still a draft as !1904 (merged) needs to be merged first. The diff will also include changes from !1904 (merged) relative to master, so probably no point looking at the detailed changes just yet.
Closes #438 (closed) #500 (closed)
Hopefully my last major CW code reorganisation MR for the foreseeable future
Edited by Karl Wette