Skip to content

Reworked selections

Daniel Campora Perez requested to merge dcampora_niklas_lines into master

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 Campora Perez

Merge request reports