CPU algorithms configurable in sequence and automatic Monte Carlo validation configuration
This MR adds in the ability to configure CPU algorithms in the sequence by a similar method to the existing one. In addition, the Monte Carlo validation iterates over all configured algorithms and is run only for those that were pre-configured to be validated when run.
- CPU algorithms can be configured in the sequence now.
- A CPU_ALGORITHM must be declared, with its function and desired type name. Header files can include CpuHandler.cuh. for this purpose.
- The header file should be included in ConfiguredSequence.cuh.
- Algorithm dependencies must be defined for CPU algorithms too. The dependencies refer only to GPU datatypes.
- A new sequence, CPUSciFi, has been defined.
- The configured sequence is iterated for validation with Monte Carlo data at the end of the sequence, if configured to do so (-c 1).
- Sequence checkers need to be specified under the sequence_checkers/include directory, and included under Stream.cu. The existing ones can also be extended.
- Huge refactoring of the Monte Carlo validation code.
- velopix-input-reader has been refactored into the more fitting name MCEvent.
- Monte Carlo data are only read once for all checkers, and data is replicated into three containers: velo_mcps, ut_mcps and scifi_mcps, with templated data accessors for each.
- All tools to use the checker have been moved to checker/tracking.
- As a consequence, TrackChecking is now a CUDA library, as it requires to know about cuda_runtime.h.
- The class PrCheckerInvoker has been created, and it has a constructor and a single templated check method.
- PrepareTracks holds all methods to prepare tracks, specialized for existing datatypes.
- Obsolete run options have been removed.
-x
no more configures an x86 sequence, this is done at compile time now. The option for the "simplified Kalman filter" has been removed since it was not used anymore. - Printing the memory consumption is only done once after all allocations have taken place.