Add option to run FT mat calibration in alignment
This moves the FTMatCalibrationMonitor to the Alignment project such that the mat contraction calibration can be run as part of the alignment iterations. The essential parts are:
- FTMatCalibrationMonitor: this fills the data structure used for the calibration. Eventually, it calls the update either from finalize or when an incident is fired. This algorithm is the equivalent of AlignmentAlgorithm.
- FTMatCalibrationUpdateTool: this computes the new calibration from the input data and updates the geometry condition. This is the equivalent of AlignUpdateTool. It is called either from FTMatCalibrationMonitor or from AlignOnlineIterator.
To communicate the accumulated data from the Monitor (aka accumulator, aka analyzer) to the UpdateTool (aka iterator), there are two approaches:
- a. use Gaudi histogram file.
- b. use a dedicated file format.
Solution 'b' is the one used for the alignment, because storing the alignment data in histograms is not very flexible. For the mat calibration we have now implemented solution 'a' since that requires the fewest changes to MooreOnline. Solution 'b' is halfway implemented, and we can switch to it with a bit more development work in MooreOnline and a reasonably trivial update of AlignOnlineIterator.
As part of this update, also development work was done on the mat calibration algorithm itself:
- make the FTMatCalibrationMonitor an incident listener such that we can trigger an update from the alignment iteration loop
- use datasvc::update_condition to update the condition. This has the advantage that the yaml file will be written in the correct place by a call to datasvc::write_alignment. (No need to specify the path in the calibration alg.)
- turn the determination of the fit of slope and position per ASIC die into a real chi2 fit to the unbiased residuals, including their errors. This has the advantage that we get meaningful errors on the parameters.
This goes together with