FlavourTagging: New inclusive tagger
@mfuehrin @vchobano @wendelj This MR implements a new inclusive tagging model that is documented in LHCb-PAPER-2025-024 "Inclusive B-meson flavour tagging algorithm at LHCb"
- Implements the architecture of the new inclusive tagger, which requires two major changes to TTTagging:
- The new inclusive tagger reuses tagging decisions of other single taggers (such a recycling tagger is marked "deferred" and runs last and receives a list of previous tag decisions, mistags, and tagger types (
LHCb::Tagger))- This is controlled by a new boolean property of the ITagger interface
m_deferred_tagger
- This is controlled by a new boolean property of the ITagger interface
- The new algorithm requires a looser track selection than what is currently implemented in BTaggingTool.h for increased tagging power
- Track selections applied by TupleToolTagging (defined my GaudiProperties in BTaggingTool.h) are therefore loosened
- MinIPPU = 0 (was 3)
- MinDistPhi = 0 (was 0.005)
- MinTheta = 0 (was 0.012)
- MaxPT = 100000 (was 10)
- To not break existing taggers, all taggers are marked as legacy taggers by default and receive the same inputs as always.
- Controlled by another new boolean property in ITagger
m_legacySelectionPreAutumn2025which is true by default. - When set to
false, the track input isTaggingIFTTracks/Particlesinstead ofTaggingParticles/Particlesand the new looser selection is applied. Only two taggers currently use this: The DevelopmentTagger and the newest version of the inclusive tagger implemented here. Therefore, the TagPartsFeatures of the Development Tagger can in the future be used to train other models if needed.
- Controlled by another new boolean property in ITagger
-
TaggingIFTTracks particle location is removed. It is no longer needed, as it creates inconsistencies in tuple processing, and for users of the IFT.TaggingIFTTracks stays, but it is set by DaVinci as configured by the FT developer.
- Track selections applied by TupleToolTagging (defined my GaudiProperties in BTaggingTool.h) are therefore loosened
- The new inclusive tagger reuses tagging decisions of other single taggers (such a recycling tagger is marked "deferred" and runs last and receives a list of previous tag decisions, mistags, and tagger types (
To achieve perfect agreement between the training data and the data entering the tagger now, we load two particle containers and keep the two selections, the legacy selection and the new selection, separate. We validate the three taggers trained on B02JpsiK*, B+2JpsiK+, and Bs2JpsiPhi by comparing the output of the reference implementation in Python with the decisions generated by DaVinci, which show perfect agreement within numerical imprecision.
TODO:
-
Reprocess data lhcb-datapkg/AnalysisProductions!3895 (merged) -
Train & validate final models to be implemented -
B0 -
Bs -
B+
-
-
!1135 (closed) may be less crucial now, but it is a solution that avoids const_cast. -
(Optional but appreciated) simpleNN fix: mschille/simplenn!11 -
Make ParamFiles MR for the weights lhcb-datapkg/ParamFiles!163 (merged)
Edited by Vukan Jevtic