HLT Seeding

Last update: 04 Mar 2025 [History] [Edit]

HLT Seeding

HLT seeding is carried out by the HLTSeeding.cxx algorithm, this is a multi-step process with inputs supplied in the form of L1 Trigger Objects (TOBs), L1 thresholds, L1 trigger decisions from the CTP, and HLT prescales.

The seeding process outputs multiple TrigRoiDescriptor collections of HLT ROIs which are created centred on their L1 TOB counterparts with extents in (η, φ, z) which are customisable per signature, and multiple DecisionContainer collections of DecisionObjects each of which is tracking the HLT chains which are active on a specific TOB. These DecisionContainer collections form the initial seeding layer of the HLT navigation graph from which HLT step-wise processing may commence.

More details on each stage of the seeding process are provided below.

L1 Decoding

In Run 3 the L1 trigger decision from the CTP is decoded from the output of the Region of Interest Builder (RoIB). This is, however, a legacy structure and as of 2025 the RoIB is no longer used to communicate any TOBs from L1Calo or L1Muon to the HLT, its sole remaining purpose is to communicate the CTP bits. By Run 4 it is expected that a new xAOD CTP collection created directly from the CTP ROB will be used to provide the CTP bits for L1 decoding.

A CTPUnpacking tool is used to generate a set of seeded HLT chains based on each chain’s L1 seeding item(s). For chains aliased to multiple items, a logical or is taken over the items. Chains with no L1 item (aliased as L1All) are considered to always be seeded.

By default the HLT seeding is based on the final Trigger After Veto (TAV) decision from the CTP. But it may optionally via flags be based instead on the Trigger Before (L1) Prescale (TBP) decision, or the L1 seeding may optionally be skipped entirely with every HLT chain then considered to always be seeded.

HLT Prescale Application

The set of L1 seeded chains is next split into a set of active chains (which will run) and a set of prescaled chains (which will not run) by a PrescalingTool.

HLT prescales are supplied as conditions data to the prescaling tool which generates Boolean prescale decisions based on each activated chain’s floating point HLT prescale value using a pseudo-random number generator which is seeded by the event’s timestamp.

Chains which share a common L1 seed and which are in a common HLT group with each other which contains the string "CPS" (Coherent Prescale) are prescaled separately, per CPS group. The lowest prescale over all chains in each CPS group is factored out and applied coherently to the whole group. This lets a number of prescaled performance-oriented chains all activate in unison which each other. This mechanism is implemented for CPU efficiency, it allows the set of chains in the CPS group to make common use of shared reconstruction to (e.g.) lower pT thresholds in select events.

A permanent record is kept of chains which were not executed due to having failed their HLT prescale check. This isPrescaled bit can be accessed later from the Trigger Decision Tool.

ROI Unpacking & Seeding

TOBs from L1 are processed via xAODRoIUnpacker tool instances with the majority of the logic in the base class and with templated abstraction over the different C++ types of the different incoming TOB collections from the L1Calo and L1Muon systems.

As illustrated below, additional ThresholdTools are required to have run upstream when the TOB collections were initially decoded into xAOD format. Each threshold tool decorates each TOB with a uint64_t decoration called "thresholdPatterns" . This large integer is a bit-map which flags the thresholds defined by the L1 menu that are passed by each TOB. An example threshold could be eEM26M, this threshold is defined for TOBs from the eFEX system and combines pT and object-identification requirements. The raw decoded TOBs do not otherwise explicitly list which thresholds they passed in the L1 hardware, hence this information must be recomputed here in software using this standardised format for subsequent use in the HLT seeding.

Each instance of the xAODRoIUnpacker creates its initial DecisionContainer HLT navigation collection and populates it with one DecisionObject per TOB. This DecisionObject is linked to the TOB as "InitialRecRoI" and linked to a newly created HLT RoI descriptor as "InitialRoI".

HLT chains which passed the above L1 seeding and HLT prescale checks are activated on each newly created DecisionObject based the chain’s l1SeedThresholds as defined in the HLT menu. This is cross-referenced against the corresponding bit-index in the "thresholdPatterns" bit-map for each TOB.

For multi-leg HLT chains, the seeding happens on a per-leg basis, with leg-specific DecisionIDs being inserted instead of the chain’s DecisionID.

For example, the primary (so, without HLT prescale) chain HLT_g25_medium_L1eEM18L_mu24_L1MU14FCH is defined with l1SeedThresholds=['eEM18L','MU14FCH']. Hence in L1_MU14FCH seeded events, the per-leg DecisionID : leg000_HLT_g25_medium_L1eEM18L_mu24_L1MU14FCH is activated on all DecisionObjects corresponding to eFEX TOBs which satisfy the eEM18L threshold. And similarly leg001_HLT_g25_medium_L1eEM18L_mu24_L1MU14FCH is activated on all Muon TOBs which satisfy the MU14FCH threshold.

For use by probe-legs, a parallel probe DecisionContainer is created with a parallel set of TOBs. A chain’s l1SeedThresholds array may specify a "PROBE" prefix before an entry, this should mirror a "_probe_" identifier in the corresponding HLT leg. This separation at the HLT seeding stage is required to properly isolate the TOBs which should only be processed/reconstructed by the later probe stages of the HLT processing (typically dependent on some other tag leg having passed).

A separate tool instance is used for all “full-scan” chains or chain-legs; this includes all MET, jet and b-jet legs, in addition to all noalg chains, and all other calibration or special-case HLT chains which do not seed from any specific type of L1 ROI . This tool works similarly to the ROI case above; it outputs a single DecisionObject which is linked to a HLT TrigRoiDescriptor which is flagged as being full-scan. All chains or chain-legs seeding from the FSNOSEED threshold are activated on this DecisionObject, with no additional threshold checks being performed (as there are none in this case).

After ROI Unpacking

Following from the ROI unpacking, all L1 activated chains which pass the HLT prescale check are now flagged as active either for the whole chain or for each individual leg of a multi-leg chain in each DecisionObject which corresponds to a TOB from L1 which satisfies the chain’s or chain-leg’s L1 Seed Threshold requirement.

HLT seeding is now complete, the output DecisionContainers of DecisionObjects are consumed by the Filter algorithms in the first step of the HLT processing.

Authored by the ATLAS Trigger Group. Report any issues here.