Requirements for overhauled calibration task?

I think it’ll be simpler if I just write out my counter-proposal (which I think isn’t that different from @rowen’s original).

I think I agree with @nidever that having ISR as a top-level task would be useful; maybe what we want is to split processCcd.py into three CmdLineTasks, but continue to have ProcessCcdTask to aggregate them (there’s nothing that says a subtask can’t be a CmdLineTask). We may even want to make ProcessCcdTask inherit from the new lsst.ctrl.pool.BatchPoolTask, but that’s really a separate issue (DM-3368).

Anyhow, here’s my proposal for the subtask hierarchy:

  • ProcessCcdTask(CmdLineTask)
    • IsrTask(CmdLineTask)
    • ImageCharacterizationTask(CmdLineTask)
      • SourceDetectionTask (just detect bright stars; includes background estimation)
      • SourceDeblendTask (maybe unnecessary, but we should include it until/unless we can prove that)
      • SingleFrameMeasurementTask (just algorithms needed to select stars)
      • MeasurePsfTask (then go back to SourceDetectionTask.run and iterate as necessary)
      • RepairTask
    • CalibrateTask(CmdLineTask)
      • SourceDetectionTask (detect to 5-sigma limit; re-estimate background)
      • SourceDeblendTask
      • SingleFrameMeasurementTask (*all algorithms needed for Source table and calibration)
      • AstrometryTask
      • PhotoCalTask

Maybe reusing the name “CalibrateTask” here isn’t a great idea; I’m open to other ideas for the name, but I also feel like “MeasureSourcesTask” is a bit too easy to confuse with the old “SourceMeasurementTask” or “SingleFrameMeasurementTask”.