Krzysztof Findeisen, do you think you could find time for a moderately large mostly-C++ review either tomorrow or early next week?
The work on this ticket actually encompasses several of the sibling subtasks of this issue - it turned out to be easiest to do a lot of them on the same branch. I haven't yet finished all of the sibling subtasks, but the code here (the parts that will go in afw) were enough to be tested and merged separately, and it'll be helpful to get that part on master (and into a weekly) while working on the remainder.
All code is in afw, and it's primarily a new C++ abstract base class, TransmissionCurve, and several private subclasses defined in its source file and exposed via factory functions. The new object is also included in ExposureInfo and ExposureRecord, and I had to add a bit of functionality to the afw::table::io::Peristable framework in order to make one of the subclasses persistable. There are also a few cleanup commits on old "nearby" code, so it would probably be easiest to review commit-by-commit instead of looking at the whole changeset.
Final, please note that the PR is a diff against tickets/
DM-12740, which is a prerequisite that I've not yet merged to master (I'm hoping to run Jenkins before doing so, and it's still down due to NCSA maintenance).