DM-23983 implements a new CrosstalkCalib class that is the first real concrete example of the abstract base class added in DM-24537. This has resulted in a cascade of necessary changes to support this, mainly impacting obs_decam. The final result of this change is that obs_decam will need less special case code, all cameras will have a common persistable crosstalk description that is functionally the same as that in use for the Defects and Curve calibrations.
The goal of this RFC is to ensure that the major change this creates in obs_decam is clearly discussed prior to it happening. Barring any objections, I'd like to close the RFC (and merge the associated ticket) at the end of next week.
The changes to support this in ip_isr are fairly minimal, with most changes being code shuffling. The only major algorithm switch allows crosstalk to be corrected for signals on arbitrary exposures, which is necessary to support inter-chip crosstalk.
obs_lsst and obs_subaru see minimal changes from this, as the obs_lsst crosstalk isn't well measured, and obs_subaru has been using a configuration defined set of coefficients. obs_subaru should be changed in the future to use a calibration from disk, but that is out of scope for this ticket.
obs_decam is not so lucky. This ticket spiraled out of the need to support crosstalk correction in gen3 with DECam data. Some minor changes in ip_isr allow IsrTask to be split, and a new obs_decam pipeline definition duplicates how crosstalk was applied in gen2: exposures for all detectors are overscan corrected, these are used as inputs to a second instance of IsrTask that also includes the full focal plane as crosstalkSources references, these references are loaded as needed based on the information stored in the CrosstalkCalib, allowing the inter-chip crosstalk to be corrected. Both generations now use the same CrosstalkTask.run() method, with the DecamCrosstalkTask now used solely for the prepCrosstalk() method in Gen2.
The previous text document describing the DECam crosstalk is now automatically processed into the appropriate yaml descriptions by obs_decam, and these descriptions have been added to the obs_decam_data package. The FITS representations (generated by ingestCuratedCalibrations.py) have been added to the testdata_decam package, to ensure that tests that use that data have the crosstalk applied (with no change needed for the test or the expected values contained within).