Skip to content

AFT-776, AFT-807, AFT-673 Dedicated dataloader class for FTag EDM interface

Dear All,

This MR refactors the FlavorTagInference GNN tooling by introducing a new loader interface and streamlining the decoration logic.

In particular, it:

Code changes

  • New interface
    • Implemented GNNDataLoader as an FTag-specific class, wrapping the existing ONNX feature–extraction logic.
  • Type refactoring
    • Migrated all decoration methods in IJetTagDecorator, MultifoldGNN, and MultifoldGNNTool from concrete xAOD::Jet/xAOD::BTagging overloads to a single xAOD::IParticle signature, removing support for bTagging objects.
    • Removed B-tagging–specific interfaces and loader classes IBTagConditionalDecorator in GN series
  • Disabled code paths
    • BTagging-specific default decorations (decorateWithDefaults(xAOD::BTagging)) are no longer compiled.
    • The legacy two-step decorate calls on xAOD::Jet and xAOD::BTagging have been removed in favour of a single call on IParticle.

Outputs changed

  • All GNN-derived auxiliary variables (e.g. GN2 scores) continue to be produced, but are now attached directly to the jet object rather than split between Jet and BTagging containers depending on the environment (except triggers, which will be dealt with in the next MR).
  • The set of decoration keys and default inputs is unchanged, so downstream consumers see the same names.
  • Users should retrieve decorations from the jet instead of the nested BTagging object.

Works to be done in the next MRs

  • Remove the BTaggingCollection options from the Cfg functions (for now they accept it but throw if the user specifies anything)
  • (maybe, if not done here) get rid of the dynamic_cast that you've introduced in DL2, by refactoring the constituentsLoader to use IParticle
  • rework the trigger monitoring code that accesses the jet though the b-tagging object. They should both be connected to the navigation graph so we can just go directly to the jet.
  • remove DL1 from the menu and drop the isAvaliable checks from TrigBjetHypo: we only need to cut on the jet score, there should be nothing left on BTagging to use
  • remove trackLinkType from the tagging algorithms, this was only needed for BTagging
  • Remove JetTagCalibCfg from BTagRecoSplitCfg

Please have a look at the detailed changes in the diff and let me know what you think!

Cheers, Dong

discussion on this MR can be found here: [FTAG SW] https://indico.cern.ch/event/1562877/contributions/6583643/attachments/3095884/5484544/Dong_FTAG_SW_01072025_v0.pdf [RECO] https://indico.cern.ch/event/1571318/contributions/6619880/subcontributions/563639/attachments/3106659/5509979/Dong_FTAGrant_250722_v2.pdf

Edited by Dan Guest

Merge request reports

Loading