CMS 3D CMS Logo

RecoPFTauTag_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 from RecoTauTag.RecoTau.PFRecoTauPFJetInputs_cfi import PFRecoTauPFJetInputs
4 # to be able to run PFTau sequence standalone on AOD
5 from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import TransientTrackBuilderESProducer
6 
7 #-------------------------------------------------------------------------------
8 #------------------ Jet Production and Preselection-----------------------------
9 #-------------------------------------------------------------------------------
10 # Apply a base selection to the jets. The acceptance selection takes only jets
11 # with pt > 5 and abs(eta) < 2.5. The preselection selects jets that have at
12 # least one constituent with pt > 5. This cut should be 100% efficient w.r.t a
13 # lead pion selection.
14 #
15 # After the basic preselection has been applied to the jets, the pizeros inside
16 # the jet are reconstructed.
17 #-------------------------------------------------------------------------------
18 
19 # Collection PFCandidates from a DR=0.8 cone about the jet axis and make new
20 # faux jets with this collection
21 from RecoTauTag.RecoTau.RecoTauJetRegionProducer_cfi import RecoTauJetRegionProducer
22 recoTauAK4PFJets08Region = RecoTauJetRegionProducer.clone(
23  src = PFRecoTauPFJetInputs.inputJetCollection
24 )
25 
26 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
27 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
28 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
29  e.toModify(recoTauAK4PFJets08Region, minJetPt = 999999.0)
30 
31 # Reconstruct the pi zeros in our pre-selected jets.
32 from RecoTauTag.RecoTau.RecoTauPiZeroProducer_cff import ak4PFJetsLegacyHPSPiZeros
33 ak4PFJetsLegacyHPSPiZeros = ak4PFJetsLegacyHPSPiZeros.clone()
34 ak4PFJetsLegacyHPSPiZeros.jetSrc = PFRecoTauPFJetInputs.inputJetCollection
35 
36 # import charged hadrons
37 from RecoTauTag.RecoTau.PFRecoTauChargedHadronProducer_cff import ak4PFJetsRecoTauChargedHadrons
38 ak4PFJetsRecoTauChargedHadrons = ak4PFJetsRecoTauChargedHadrons.clone()
39 
40 #-------------------------------------------------------------------------------
41 #------------------ Produce combinatoric base taus------------------------------
42 #-------------------------------------------------------------------------------
43 # These jets form the basis of the HPS & TaNC taus. There are many taus
44 # produced for each jet, which are cleaned by the respective algorithms.
45 # We split it into different collections for each different decay mode.
46 
47 from RecoTauTag.RecoTau.RecoTauCombinatoricProducer_cfi import combinatoricRecoTaus, combinatoricModifierConfigs
48 combinatoricRecoTaus = combinatoricRecoTaus.clone()
49 combinatoricRecoTaus.modifiers = cms.VPSet(combinatoricModifierConfigs)
50 combinatoricRecoTaus.jetRegionSrc = cms.InputTag("recoTauAK4PFJets08Region")
51 combinatoricRecoTaus.jetSrc = PFRecoTauPFJetInputs.inputJetCollection
52 
53 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
54  e.toModify(combinatoricRecoTaus, minJetPt = recoTauAK4PFJets08Region.minJetPt)
55 
56 #--------------------------------------------------------------------------------
57 # CV: set mass of tau candidates reconstructed in 1Prong0pi0 decay mode to charged pion mass
58 combinatoricRecoTaus.modifiers.append(cms.PSet(
59  name = cms.string("tau_mass"),
60  plugin = cms.string("PFRecoTauMassPlugin"),
61  verbosity = cms.int32(0)
62 ))
63 #--------------------------------------------------------------------------------
64 
65 #-------------------------------------------------------------------------------
66 #------------------ HPS Taus ---------------------------------------------------
67 #-------------------------------------------------------------------------------
68 
70 
71 combinatoricRecoTaus.chargedHadronSrc = cms.InputTag("ak4PFJetsRecoTauChargedHadrons")
72 combinatoricRecoTaus.piZeroSrc = cms.InputTag("ak4PFJetsLegacyHPSPiZeros")
73 
74 #-------------------------------------------------------------------------------
75 #------------------ PFTauTagInfo workaround ------------------------------------
76 #-------------------------------------------------------------------------------
77 # Build the PFTauTagInfos separately, then relink them into the taus.
78 from RecoTauTag.RecoTau.PFRecoTauTagInfoProducer_cfi import pfRecoTauTagInfoProducer
79 pfRecoTauTagInfoProducer = pfRecoTauTagInfoProducer.clone()
80 pfRecoTauTagInfoProducer.PFJetTracksAssociatorProducer = cms.InputTag("ak4PFJetTracksAssociatorAtVertex")
81 
82 from RecoJets.JetAssociationProducers.ak4JTA_cff import ak4JetTracksAssociatorAtVertexPF
83 ak4PFJetTracksAssociatorAtVertex = ak4JetTracksAssociatorAtVertexPF.clone()
84 ak4PFJetTracksAssociatorAtVertex.jets = PFRecoTauPFJetInputs.inputJetCollection
85 tautagInfoModifer = cms.PSet(
86  name = cms.string("TTIworkaround"),
87  plugin = cms.string("RecoTauTagInfoWorkaroundModifer"),
88  pfTauTagInfoSrc = cms.InputTag("pfRecoTauTagInfoProducer"),
89 )
90 combinatoricRecoTaus.modifiers.append(tautagInfoModifer)
91 
92 recoTauPileUpVertices = cms.EDFilter("RecoTauPileUpVertexSelector",
93  src = cms.InputTag("offlinePrimaryVertices"),
94  minTrackSumPt = cms.double(5),
95  filter = cms.bool(False),
96 )
97 
98 recoTauCommonTask = cms.Task(
99  ak4PFJetTracksAssociatorAtVertex,
100  recoTauAK4PFJets08Region,
101  recoTauPileUpVertices,
102  pfRecoTauTagInfoProducer
103 )
104 recoTauCommonSequence = cms.Sequence(
105  recoTauCommonTask
106 )
107 
108 # Produce only classic HPS taus
109 recoTauClassicHPSTask = cms.Task(
110  ak4PFJetsLegacyHPSPiZeros,
111  ak4PFJetsRecoTauChargedHadrons,
112  combinatoricRecoTaus,
113  produceAndDiscriminateHPSPFTausTask
114 )
115 recoTauClassicHPSSequence = cms.Sequence(
116  recoTauClassicHPSTask
117 )
118 
119 PFTauTask = cms.Task(
120  recoTauCommonTask,
121  recoTauClassicHPSTask
122 )
123 PFTau = cms.Sequence(
124  PFTauTask
125 )
126