MC data and validation in sequence, enable multiple sequence validation
This MR brings the MC data to the sequence as another optional input. MC data is intended to be used either when developing algorithms, or when validating algorithms.
Validation in Allen was previously done with a special sequence, run after the main sequence loop was over. This had several drawbacks: It required that certain algorithm types were run to trigger the respective validator and it had no support of multiple sequences. It also required special datatypes host_buffers
to be used to keep data around for the validator to have access to the data.
With this MR, validation algorithms become normal Allen algorithms, that must be configured with their proper inputs to run. In addition, multiple sequence validation becomes possible with this MR. Each validation algorithm is recognized by its name, and an output is printed once the sequence runs are over with the contents of all validations. In case USE_ROOT is configured, a root file with folders for each validator name are created.
Closes #210 (closed)
Changes introduced in this MR:
- Created a new type of Algorithm
ValidationAlgorithm
. - Added a MCDataProvider algorithm. This algorithm can be used to fetch MC data, which can be used in order to develop algorithms as well as to validate the sequence.
- Added validation algorithms for Velo tracks, VeloUT tracks, Forward tracks, PVs, Kalman filters and Rate checker.
- Muon validation is now its own algorithm (before it was coupled to the forward track validation, and it was not possible to print forward track validation without muon validation).
- All validation algorithms are now thread-safe.
- All validation algorithms report using its algorithm name. For instance, VELO validation can be invoked independently with two different names, and will report both independent from one another.
- Validation algorithms now use
event_lists
to iterate reconstructed data. Therefore, any special use-case of validation that required manual handling before (such as GEC, non-GEC, etc.) will now automatically work. - A ROOT file is generated with validation algorithms, whose filename is configurable in all algorithms. In addition, each algorithm will write into a directory using its name in the ROOT file.
- The option
-c
or--validation
has been removed. The configured sequence is sought for aValidationAlgorithm
, in which case the internal variabledo_check
is enabled. This causes a MC folder to be loaded, andhost_buffers
to be populated (although host_buffers are not used to validate in Allen anymore, they are used in the monitoring and in Gaudi-Allen checkers). - All the above changes have allowed the removal of various functions that became unused. Overall, the "special case" of checkers is now handled like any other algorithm, and the validation code has become more homogeneous and easier to maintain.
- The
hlt1_pp_default
sequence now does not contain MC validation algorithms. Sequenceshlt1_pp_validation
andhlt1_pp_no_gec_validation
are new sequences that contain validation algorithms. The CI has been updated accordingly.