Reduce number of mutex locks during Si track finding, clusterization, ambiguity resolution (and monitoring)
The Si track finder currently locks mutexes O(5k) times per event. This happens mostly during SCT and pixel conditions access. This patch precomputes the Pixel and SCT module status, which allows to apply the locks only once. The number of mutex locks is reduced to O(50) per event. This could improve the scaling behaviour of the reconstruction as a function of the number of threads. These precomputed module status objects are used in several other algorithms and tools. The number of locks are significantly reduced in the SCT_Clusterization but also PixelAthErrorMonAlg, PixelClusterization, TrkAmbiguitySolver.
To efficiently precompute the pixel and SCT status arrays the original conditions summary tools are extended to allow the computation of the status for all modules, chips, (strips) with a single call, rather than calling them for each module, chip and SCT strip.
The original status queries via the pixel and SCT conditions summary tools are still available and are used if the read handles for the precomputed status arrays are left empty in the corresponding tools and algorithms. For the recexcommon based reconstruction the status arrays would be used instead of the conditions summary tools.
In future improvement the SCT and Pixel conditions algorithms could be tailored to produce conditions data more suitable for the new algorithm which creates the combined module status from the bytestream errors and the conditions data. The status array computation could be split in a conditions algorithm and an event algorithm. The conditions algorithm would compute the status arrays from conditions data only, and the event algorithm would create combined status errors using the status conditions data and the error information of the byte stream error.