Skip to content

The Hadrons-plus-Strips algorithm

The idea of the Hadrons-plus-strips algorithm is to split the reconstruction of \tau leptons. It aims to separately reconstruct charged hadrons and neutral pions, the most important decay products of \tau leptons. Charged hadrons are reconstructed similarly to jets, while \pi^0 particles are reconstructed as strips in \eta-\phi. This takes into account the almost instant decay of the \pi^0 into photons, which can emit electrons, which will again emit photons as bremsstrahlung and so on - in a calorimeter it will be seen as a strip of electromagnetic signal. The HPS algorithm has been used in CMS already in Run-1 (of course, with refinements und updates once in a while). Detailed information can be found here and here.

Implementation details in the HLT

The full (and most up-to-date) implementation can be found in CMSSW. Here we will only cover the HLTPFTauHPS sequence, which is where we actually reconstruct and produce \tau candidates. Of course, we need to run a lot of reconstruction steps beforehand, but these will be documented in more detail elsewhere.

RecoTauGenericJetRegionProducer

This module processes jets (currently AK4), and adds all PF candidates in a cone (currently dR=0.8) to the jets. It outputs jets with the same p4, but with updated constituents.

Inputs (currently, they can be changed in the configuration file):

  • Jet collection source: hltAK4PFJets
  • PF Candidate Source: hltParticleFlowTmp

Name in current HLT configuration: hltTauPFJets08Region.

PFRecoTauChargedHadronProducer

Associates charged hadrons to jets by employing different builder plugins and running them on the inputs received from the jets. The hadrons created by the builders are sorted by quality scores obtained ranker plugins.

  • Jet collection source: hltAK4PFJets
  • builder plugin currently used: PFRecoTauChargedHadronFromPFCandidatePlugin
  • quality rankers currently: PFRecoTauChargedHadronStringQuality

Name in current HLT configuration: hltHpsTauPFJetsRecoTauChargedHadronsWithNeutrals.

RecoTauPiZeroProducer

Builds and associates reconstructed \pi^0's from and to PFJets. PiZeros are built by using RecoTauPiZeroBuilders and ranked by RecoTauPiZeroQualityPlugins.

  • Current plugin: RecoTauPiZeroStripPlugin2 - Produce a "strips" of photons with no track quality cuts applied to PFElectrons
  • Quality plugin: RecoTauPiZeroStringQuality

Name in current HLT configuration: hltPFTauPiZeros.

RecoTauProducer

Interface to produce taus - takes the before reconstructed jets and \pi^0's as input and outputs a collection of taus (the actual building of taus is done by builder plugins again). Should produce one tau per jet per builder - this can lead to multiple \tau's per jet, cleaning will be done in a later step.

  • builder plugin currently: RecoTauBuilderCombinatoricPlugin
  • inputs:
    • hltHpsTauPFJetsRecoTauChargedHadronsWithNeutrals as source of charged hadrons
    • hltTauPFJets08Region as jet region
    • hltAK4PFJets as source of jets
    • hltPFTauPiZeros as source of \pi^0's

Name in current HLT configuration: hltHpsCombinatoricRecoTaus.

PFRecoTauDiscriminationByHPSSelection

EDProducer that applies all the HPS cuts (defined here) and produces a discriminator value collection (of type reco::PFTauDiscriminator).

Name in current HLT configuration: hltHpsSelectionDiscriminator.

RecoTauCleaner

Cleans the \tau collection to ensure no two taus are created by the same jet - quality is again determined by RecoTauCleanerPlugins.

  • contains several plugins, among them the hltHpsSelectionDiscriminator
  • input tau collection: hltHpsCombinatoricRecoTaus

Name in current HLT configuration: hltHpsPFTauProducerSansRefs.

RecoTauPiZeroUnembedder

Only a technical module for speed-up, no physics hidden here. It produces a separate reco::RecoTauPiZeroCollection with references to it stored in the \tau collection instead of having the \pi^0's stored in the PFTau.

  • input is hltHpsPFTauProducerSansRefs

Name in current HLT configuration: hltHpsPFTauProducer.

PFRecoTauDiscriminationByHPSSelection

This module is run again after cleaning the collection and unembedding the \pi^0's. There is one tighter cut: \tau p_{T} > 18, which was 0 in the first run.

  • input is hltHpsPFTauProducer

Name in current HLT configuration: hltHpsPFTauProducer.

PFRecoTauDiscriminationByLeadingObjectPtCut

Checks the leading object (probably a charged hadron) to pass a certain p_{T} threshold. Produces again a reco::PFTauDiscriminator discriminator for each \tau.

  • input is hltHpsPFTauProducer
  • cut currently set to 0.0

Name in current HLT configuration: hltHpsPFTauTrackFindingDiscriminator.

PFTauSelector

First EDFilter element in the chain - applies one or several discriminators (built separately as plugins) to the tau collection. In the current application, it filters on the discriminators produced by hltHpsPFTauTrackFindingDiscriminator.

  • input currently hltHpsPFTauProducer
  • discriminators from hltHpsPFTauTrackFindingDiscriminator

Name in current HLT configuration: hltHpsSelectedPFTausTrackFinding.

HLT1PFTau

Filter of type HLTSinglet that adds additional cuts on the taus. Currently, the only real cut is for \eta<2.5.

  • input currently: hltHpsPFTauProducer

Name in current HLT configuration: hltHpsPFTauTrack.