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:
hltHpsTauPFJetsRecoTauChargedHadronsWithNeutralsas source of charged hadronshltTauPFJets08Regionas jet regionhltAK4PFJetsas source of jetshltPFTauPiZerosas 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.