Reworked selections
This MR redesigns from the ground up selections.
- Selections are now algorithms. A new type of algorithm
SelectionAlgorithm
is available. - Input aggregates are now supported. Parser detects these types and generates code accordingly.
-
GatherSelections
is an algorithm that uses input aggregates. - Three line types have been added (OneTrackLine, TwoTrackLine, ODINLine).
- The RateChecker has been adapted to work with the new selections.
- All algorithms (that require it) have been given a
dev_event_list_t
as input. - Algorithms that require it have been given a
dev_number_of_events_t
as input. - Added "verbosity" property to all algorithms.
-
selections.md
documentation updated accordingly. - Created a new implementation of a
dec_reporter
. - Selection algorithms now have the following properties: a pre-scaler factor and hash string, and a post-scaler factor and hash string. The scaler factor is in the range [0-1] and determines how many events will be accepted. The hash string must not be empty and contains a string from which an
unsigned
hash is calculated which serves as the seed for the deterministic scaler.
To do:
-
Implement pre-scalers -
Implement post-scalers -
Fix warning in Debug build -
Fix compilation with Gaudi (see this failing ci-test )
Implement the following lines:
-
PassThrough -
ODINNoBias -
ODINLumi -
GECPassthrough -
SingleHighPtMuon -
LowPtMuon -
DiMuonHighMass -
DiMuonLowMass -
LowPtDiMuon -
DisplacedDiMuon -
DiMuonSoft -
D2KPi -
D2PiPi -
D2KK -
DiMuonTrackEff -
TrackMuonMVA
Note: The previous "ErrorEvent" line does not make sense in the context of the new selection framework, where each selection is an algorithm. Error handling deserves its own issue, should be discussed in depth and implemented in a separate MR.
GPU throughput of the sequence is reduced by 4% with this branch:
Prior throughput:
Quadro RTX 6000 │█████████████████████████████████ 166.02 kHz
GeForce RTX 2080 Ti │███████████████████████████████ 155.88 kHz
Tesla V100-PCIE-32GB │██████████████████████████████ 151.72 kHz
AMD EPYC 7502 32-Core │████ 22.44 kHz
Intel Xeon E5-2630 v4 │▌ 4.66 kHz
┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼─┴─┼
0 20 40 60 80 100 120 140 160 180
New throughput:
Quadro RTX 6000 │███████████████████████████████████████████████ 159.90 kHz
GeForce RTX 2080 Ti │████████████████████████████████████████████ 149.55 kHz
Tesla V100-PCIE-32GB │██████████████████████████████████████████ 140.60 kHz
AMD EPYC 7502 32-Core │██████ 22.35 kHz
Intel Xeon E5-2630 v4 │█ 4.73 kHz
┼──┴──┼──┴──┼──┴──┼──┴──┼──┴──┼──┴──┼──┴──┼──┴──┼
0 20 40 60 80 100 120 140 160
Built on top of !388 (merged).
Closes #131 (closed)
Should go together with: Moore!652 (merged)
Edited by Daniel Hugo Campora Perez