CMS 3D CMS Logo

HPSPFTaus_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 import copy
3 from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
4 
5 '''
6 
7 Sequences for HPS taus
8 
9 '''
10 
11 
20 
21 from RecoTauTag.RecoTau.recoTauDiscriminantCutMultiplexerDefault_cfi import recoTauDiscriminantCutMultiplexerDefault
22 
24 
25 from RecoTauTag.RecoTau.PFRecoTauPFJetInputs_cfi import PFRecoTauPFJetInputs
26 
27 ak4dBetaCorrection = 0.20
28 
29 
30 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByHPSSelection_cfi import hpsSelectionDiscriminator, decayMode_1Prong0Pi0, decayMode_1Prong1Pi0, decayMode_1Prong2Pi0, decayMode_2Prong0Pi0, decayMode_2Prong1Pi0, decayMode_3Prong0Pi0, decayMode_3Prong1Pi0
31 
32 hpsPFTauDiscriminationByDecayModeFindingNewDMs = hpsSelectionDiscriminator.clone(
33  PFTauProducer = 'hpsPFTauProducer',
34  #----------------------------------------------------------------------------
35  # CV: disable 3Prong1Pi0 decay mode
36  decayModes = cms.VPSet(
37  decayMode_1Prong0Pi0,
38  decayMode_1Prong1Pi0,
39  decayMode_1Prong2Pi0,
40  decayMode_2Prong0Pi0,
41  decayMode_2Prong1Pi0,
42  decayMode_3Prong0Pi0,
43  decayMode_3Prong1Pi0,
44  )
45  #----------------------------------------------------------------------------
46 )
47 hpsPFTauDiscriminationByDecayModeFindingOldDMs = hpsSelectionDiscriminator.clone(
48  PFTauProducer = 'hpsPFTauProducer',
49  decayModes = cms.VPSet(
50  decayMode_1Prong0Pi0,
51  decayMode_1Prong1Pi0,
52  decayMode_1Prong2Pi0,
53  decayMode_3Prong0Pi0
54  ),
55  requireTauChargedHadronsToBeChargedPFCands = True
56 )
57 hpsPFTauDiscriminationByDecayModeFinding = hpsPFTauDiscriminationByDecayModeFindingOldDMs.clone()
58 
59 
60 requireDecayMode = cms.PSet(
61  BooleanOperator = cms.string("and"),
62  decayMode = cms.PSet(
63  Producer = cms.InputTag('hpsPFTauDiscriminationByDecayModeFindingNewDMs'),
64  cut = cms.double(0.5)
65  )
66 )
67 
68 
69 hpsPFTauBasicDiscriminators = pfRecoTauDiscriminationByIsolation.clone(
70  PFTauProducer = "hpsPFTauProducer",
71  Prediscriminants = requireDecayMode.clone(),
72  deltaBetaPUTrackPtCutOverride = True, # Set the boolean = True to override.
73  deltaBetaPUTrackPtCutOverride_val = 0.5, # Set the value for new value.
74  customOuterCone = PFRecoTauPFJetInputs.isolationConeSize,
75  isoConeSizeForDeltaBeta = 0.8,
76  deltaBetaFactor = "%0.4f"%(ak4dBetaCorrection),
77  qualityCuts = dict(isolationQualityCuts = dict(minTrackHits = 3, minGammaEt = 1.0, minTrackPt = 0.5)),
78  IDdefinitions = cms.VPSet(
79  cms.PSet(
80  IDname = cms.string("ChargedIsoPtSum"),
81  ApplyDiscriminationByTrackerIsolation = cms.bool(True),
82  storeRawSumPt = cms.bool(True)
83  ),
84  cms.PSet(
85  IDname = cms.string("NeutralIsoPtSum"),
86  ApplyDiscriminationByECALIsolation = cms.bool(True),
87  storeRawSumPt = cms.bool(True)
88  ),
89  cms.PSet(
90  IDname = cms.string("NeutralIsoPtSumWeight"),
91  ApplyDiscriminationByWeightedECALIsolation = cms.bool(True),
92  storeRawSumPt = cms.bool(True),
93  UseAllPFCandsForWeights = cms.bool(True)
94  ),
95  cms.PSet(
96  IDname = cms.string("TauFootprintCorrection"),
97  storeRawFootprintCorrection = cms.bool(True)
98  ),
99  cms.PSet(
100  IDname = cms.string("PhotonPtSumOutsideSignalCone"),
101  storeRawPhotonSumPt_outsideSignalCone = cms.bool(True)
102  ),
103  cms.PSet(
104  IDname = cms.string("PUcorrPtSum"),
105  applyDeltaBetaCorrection = cms.bool(True),
106  storeRawPUsumPt = cms.bool(True)
107  ),
108  cms.PSet(
109  IDname = cms.string("ByRawCombinedIsolationDBSumPtCorr3Hits"),
110  ApplyDiscriminationByTrackerIsolation = cms.bool(True),
111  ApplyDiscriminationByECALIsolation = cms.bool(True),
112  applyDeltaBetaCorrection = cms.bool(True),
113  storeRawSumPt = cms.bool(True)
114  )
115  ),
116  IDWPdefinitions = cms.VPSet(
117  cms.PSet(
118  IDname = cms.string("ByLooseCombinedIsolationDBSumPtCorr3Hits"),
119  referenceRawIDNames = cms.vstring("ByRawCombinedIsolationDBSumPtCorr3Hits", "PhotonPtSumOutsideSignalCone"),
120  maximumAbsoluteValues = cms.vdouble(2.5, 1.e+9),
121  maximumRelativeValues = cms.vdouble(-1.0, 0.10)
122  ),
123  cms.PSet(
124  IDname = cms.string("ByMediumCombinedIsolationDBSumPtCorr3Hits"),
125  referenceRawIDNames = cms.vstring("ByRawCombinedIsolationDBSumPtCorr3Hits", "PhotonPtSumOutsideSignalCone"),
126  maximumAbsoluteValues = cms.vdouble(1.5, 1.e+9),
127  maximumRelativeValues = cms.vdouble(-1.0, 0.10)
128  ),
129  cms.PSet(
130  IDname = cms.string("ByTightCombinedIsolationDBSumPtCorr3Hits"),
131  referenceRawIDNames = cms.vstring("ByRawCombinedIsolationDBSumPtCorr3Hits", "PhotonPtSumOutsideSignalCone"),
132  maximumAbsoluteValues = cms.vdouble(0.8, 1.e+9),
133  maximumRelativeValues = cms.vdouble(-1.0, 0.10)
134  ),
135  cms.PSet(
136  IDname = cms.string("ByLooseChargedIsolation"),
137  referenceRawIDNames = cms.vstring("ChargedIsoPtSum"),
138  maximumAbsoluteValues = cms.vdouble(2.5)
139  ),
140  cms.PSet(
141  IDname = cms.string("ByPhotonPtSumOutsideSignalCone"),
142  referenceRawIDNames = cms.vstring("PhotonPtSumOutsideSignalCone"),
143  maximumRelativeValues = cms.vdouble(0.10)
144  )
145  )
146 )
147 phase2_common.toModify(hpsPFTauBasicDiscriminators.qualityCuts,
148  isolationQualityCuts = dict( minTrackPt = 0.8 )
149 )
150 hpsPFTauBasicDiscriminatorsTask = cms.Task(
151  hpsPFTauBasicDiscriminators
152 )
153 
154 
155 hpsPFTauBasicDiscriminatorsdR03 = hpsPFTauBasicDiscriminators.clone(
156  deltaBetaFactor = '0.0720', # 0.2*(0.3/0.5)^2
157  customOuterCone = 0.3
158 )
159 del hpsPFTauBasicDiscriminatorsdR03.IDWPdefinitions[-1] # ByPhotonPtSumOutsideSignalCone not defined for dR03
160 del hpsPFTauBasicDiscriminatorsdR03.IDWPdefinitions[-1] # ByLooseChargedIsolation not defined for dR03
161 for pset in hpsPFTauBasicDiscriminatorsdR03.IDdefinitions:
162  pset.IDname = pset.IDname.value() + "dR03"
163 for pset in hpsPFTauBasicDiscriminatorsdR03.IDWPdefinitions:
164  pset.IDname = pset.IDname.value() + "dR03"
165  pset.referenceRawIDNames = [name + "dR03" for name in pset.referenceRawIDNames.value()]
166 hpsPFTauBasicDiscriminatorsdR03Task = cms.Task(
167  hpsPFTauBasicDiscriminatorsdR03
168 )
169 
170 # define helper function to read indices of basic IDs or antimuon
171 
172 hpsPFTauDiscriminationByMuonRejection3 = pfRecoTauDiscriminationAgainstMuon2Container.clone(
173  PFTauProducer = 'hpsPFTauProducer',
174  Prediscriminants = noPrediscriminants,
175  IDWPdefinitions = cms.VPSet(
176  cms.PSet(
177  IDname = cms.string('ByLooseMuonRejection3'),
178  discriminatorOption = cms.string('custom'),
179  HoPMin = cms.double(0.2),
180  maxNumberOfMatches = cms.int32(1),
181  doCaloMuonVeto = cms.bool(True),
182  maxNumberOfHitsLast2Stations = cms.int32(-1)
183  ),
184  cms.PSet(
185  IDname = cms.string('ByTightMuonRejection3'),
186  discriminatorOption = cms.string('custom'),
187  HoPMin = cms.double(0.2),
188  maxNumberOfMatches = cms.int32(1),
189  doCaloMuonVeto = cms.bool(True),
190  maxNumberOfHitsLast2Stations = cms.int32(0)
191  )
192  )
193 )
194 
195 
196 
197 hpsPFTauDiscriminationByLooseElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
198  PFTauProducer = 'hpsPFTauProducer',
199  Prediscriminants = noPrediscriminants,
200  PFElectronMVA_maxValue = 0.6
201 )
202 
203 hpsPFTauDiscriminationByMediumElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
204  PFTauProducer = 'hpsPFTauProducer',
205  Prediscriminants = noPrediscriminants,
206  ApplyCut_EcalCrackCut = True
207 )
208 
209 hpsPFTauDiscriminationByTightElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
210  PFTauProducer = 'hpsPFTauProducer',
211  Prediscriminants = noPrediscriminants,
212  ApplyCut_EcalCrackCut = True,
213  ApplyCut_BremCombined = True
214 )
215 
216 hpsPFTauDiscriminationByDeadECALElectronRejection = pfRecoTauDiscriminationAgainstElectronDeadECAL.clone(
217  PFTauProducer = 'hpsPFTauProducer',
218  Prediscriminants = requireDecayMode.clone()
219 )
220 
221 hpsPFTauDiscriminationByMVA6rawElectronRejection = pfRecoTauDiscriminationAgainstElectronMVA6.clone(
222  PFTauProducer = 'hpsPFTauProducer',
223  srcElectrons = 'gedGsfElectrons',
224  Prediscriminants = requireDecayMode.clone(),
225  loadMVAfromDB = True,
226  vetoEcalCracks = False,
227  mvaName_NoEleMatch_woGwoGSF_BL = "RecoTauTag_antiElectronMVA_NoEleMatch_woGwoGSF_BL",
228  mvaName_NoEleMatch_wGwoGSF_BL = "RecoTauTag_antiElectronMVA_NoEleMatch_wGwoGSF_BL",
229  mvaName_woGwGSF_BL = "RecoTauTag_antiElectronMVA_woGwGSF_BL",
230  mvaName_wGwGSF_BL = "RecoTauTag_antiElectronMVA_wGwGSF_BL",
231  mvaName_NoEleMatch_woGwoGSF_EC = "RecoTauTag_antiElectronMVA_NoEleMatch_woGwoGSF_EC",
232  mvaName_NoEleMatch_wGwoGSF_EC = "RecoTauTag_antiElectronMVA_NoEleMatch_wGwoGSF_EC",
233  mvaName_woGwGSF_EC = "RecoTauTag_antiElectronMVA_woGwGSF_EC",
234  mvaName_wGwGSF_EC = "RecoTauTag_antiElectronMVA_wGwGSF_EC"
235 )
236 
237 hpsPFTauDiscriminationByMVA6ElectronRejection = recoTauDiscriminantCutMultiplexerDefault.clone(
238  PFTauProducer = 'hpsPFTauProducer',
239  Prediscriminants = requireDecayMode.clone(),
240  toMultiplex = 'hpsPFTauDiscriminationByMVA6rawElectronRejection',
241  loadMVAfromDB = True,
242  mapping = cms.VPSet(
243  cms.PSet(
244  category = cms.uint32(0), # minMVANoEleMatchWOgWOgsfBL
245  cut = cms.string("RecoTauTag_antiElectronMVA_NoEleMatch_woGwoGSF_BL"),
246  variable = cms.string("pt")
247  ),
248  cms.PSet(
249  category = cms.uint32(2), # minMVANoEleMatchWgWOgsfBL
250  cut = cms.string("RecoTauTag_antiElectronMVA_NoEleMatch_wGwoGSF_BL"),
251  variable = cms.string("pt")
252  ),
253  cms.PSet(
254  category = cms.uint32(5), # minMVAWOgWgsfBL
255  cut = cms.string("RecoTauTag_antiElectronMVA_woGwGSF_BL"),
256  variable = cms.string("pt")
257  ),
258  cms.PSet(
259  category = cms.uint32(7), # minMVAWgWgsfBL
260  cut = cms.string("RecoTauTag_antiElectronMVA_wGwGSF_BL"),
261  variable = cms.string("pt")
262  ),
263  cms.PSet(
264  category = cms.uint32(8), # minMVANoEleMatchWOgWOgsfEC
265  cut = cms.string("RecoTauTag_antiElectronMVA_NoEleMatch_woGwoGSF_EC"),
266  variable = cms.string("pt")
267  ),
268  cms.PSet(
269  category = cms.uint32(10), # minMVANoEleMatchWgWOgsfEC
270  cut = cms.string("RecoTauTag_antiElectronMVA_NoEleMatch_wGwoGSF_EC"),
271  variable = cms.string("pt")
272  ),
273  cms.PSet(
274  category = cms.uint32(13), # minMVAWOgWgsfEC
275  cut = cms.string("RecoTauTag_antiElectronMVA_woGwGSF_EC"),
276  variable = cms.string("pt")
277  ),
278  cms.PSet(
279  category = cms.uint32(15), # minMVAWgWgsfEC
280  cut = cms.string("RecoTauTag_antiElectronMVA_wGwGSF_EC"),
281  variable = cms.string("pt")
282  )
283  ),
284  rawValues = cms.vstring(
285  "discriminator",
286  "category"
287  ),
288  workingPoints = cms.vstring(
289  "_VLoose",
290  "_Loose",
291  "_Medium",
292  "_Tight",
293  "_VTight"
294  )
295 )
296 
297 # Define the HPS selection discriminator used in cleaning
298 hpsSelectionDiscriminator.PFTauProducer = "combinatoricRecoTaus"
299 #----------------------------------------------------------------------------
300 # CV: disable 3Prong1Pi0 decay mode
301 hpsSelectionDiscriminator.decayModes = cms.VPSet(
302  decayMode_1Prong0Pi0,
303  decayMode_1Prong1Pi0,
304  decayMode_1Prong2Pi0,
305  decayMode_2Prong0Pi0,
306  decayMode_2Prong1Pi0,
307  decayMode_3Prong0Pi0,
308  decayMode_3Prong1Pi0,
309 )
310 #----------------------------------------------------------------------------
311 
312 from RecoTauTag.RecoTau.RecoTauCleaner_cfi import RecoTauCleaner
313 hpsPFTauProducerSansRefs = RecoTauCleaner.clone(
314  src = "combinatoricRecoTaus",
315  cleaners = {1: dict(src = "hpsSelectionDiscriminator")}
316 )
317 
318 from RecoTauTag.RecoTau.RecoTauPiZeroUnembedder_cfi import RecoTauPiZeroUnembedder
319 hpsPFTauProducer = RecoTauPiZeroUnembedder.clone(
320  src = "hpsPFTauProducerSansRefs"
321 )
322 
326 hpsPFTauPrimaryVertexProducer = PFTauPrimaryVertexProducer.clone(
327  PFTauTag = "hpsPFTauProducer",
328  ElectronTag = "",
329  MuonTag = "",
330  PVTag = "offlinePrimaryVertices",
331  beamSpot = "offlineBeamSpot",
332  Algorithm = 0,
333  useBeamSpot = True,
334  RemoveMuonTracks = False,
335  RemoveElectronTracks = False,
336  useSelectedTaus = False,
337  discriminators = cms.VPSet(
338  cms.PSet(
339  discriminator = cms.InputTag('hpsPFTauDiscriminationByDecayModeFindingNewDMs'),
340  selectionCut = cms.double(0.5)
341  )
342  ),
343  cut = "pt > 18.0 & abs(eta) < 2.4"
344 )
345 
346 hpsPFTauSecondaryVertexProducer = PFTauSecondaryVertexProducer.clone(
347  PFTauTag = "hpsPFTauProducer"
348 )
349 hpsPFTauTransverseImpactParameters = PFTauTransverseImpactParameters.clone(
350  PFTauTag = "hpsPFTauProducer",
351  PFTauPVATag = "hpsPFTauPrimaryVertexProducer",
352  PFTauSVATag = "hpsPFTauSecondaryVertexProducer",
353  useFullCalculation = True
354 )
355 hpsPFTauVertexAndImpactParametersTask = cms.Task(
356  hpsPFTauPrimaryVertexProducer,
357  hpsPFTauSecondaryVertexProducer,
358  hpsPFTauTransverseImpactParameters
359 )
360 hpsPFTauVertexAndImpactParametersSeq = cms.Sequence(
361  hpsPFTauVertexAndImpactParametersTask
362 )
363 
364 #Define new Run2 MVA isolations
366 hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw = discriminationByIsolationMVArun2v1raw.clone(
367  PFTauProducer = "hpsPFTauProducer",
368  Prediscriminants = requireDecayMode.clone(),
369  mvaName = "RecoTauTag_tauIdMVAIsoDBoldDMwLT",
370  mvaOpt = "DBoldDMwLTwGJ",
371  srcTauTransverseImpactParameters = "hpsPFTauTransverseImpactParameters",
372  verbosity = 0
373 )
374 
375 hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLT = discriminationByIsolationMVArun2v1.clone(
376  PFTauProducer = 'hpsPFTauProducer',
377  Prediscriminants = requireDecayMode.clone(),
378  toMultiplex = 'hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw',
379  loadMVAfromDB = True,
380  mvaOutput_normalization = "RecoTauTag_tauIdMVAIsoDBoldDMwLT_mvaOutput_normalization",
381  mapping = cms.VPSet(
382  cms.PSet(
383  category = cms.uint32(0),
384  cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT"),
385  variable = cms.string("pt")
386  )
387  ),
388  workingPoints = [
389  "_VVLoose",
390  "_VLoose",
391  "_Loose",
392  "_Medium",
393  "_Tight",
394  "_VTight",
395  "_VVTight"
396  ]
397 )
398 
399 hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw = hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone(
400  mvaName = "RecoTauTag_tauIdMVAIsoDBnewDMwLT",
401  mvaOpt = "DBnewDMwLTwGJ",
402  verbosity = 0
403 )
404 
405 hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLT = hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone(
406  toMultiplex = 'hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw',
407  loadMVAfromDB = True,
408  mvaOutput_normalization = "RecoTauTag_tauIdMVAIsoDBnewDMwLT_mvaOutput_normalization",
409  mapping = cms.VPSet(
410  cms.PSet(
411  category = cms.uint32(0),
412  cut = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT"),
413  variable = cms.string("pt")
414  )
415  )
416 )
417 
418 hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTraw = hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone(
419  mvaName = "RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT",
420  mvaOpt = "DBoldDMwLTwGJ",
421  srcBasicTauDiscriminators = "hpsPFTauBasicDiscriminatorsdR03",
422  inputIDNameSuffix = "dR03",
423  verbosity = 0
424 )
425 hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLT = hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone(
426  PFTauProducer = 'hpsPFTauProducer',
427  Prediscriminants = requireDecayMode.clone(),
428  toMultiplex = 'hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTraw',
429  loadMVAfromDB = True,
430  mvaOutput_normalization = "RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT_mvaOutput_normalization",
431  mapping = cms.VPSet(
432  cms.PSet(
433  category = cms.uint32(0),
434  cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT"),
435  variable = cms.string("pt")
436  )
437  )
438 )
439 
440 hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask = cms.Task(
441  hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw,
442  hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLT
443  )
444 
445 hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask = cms.Task(
446  hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw,
447  hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLT
448  )
449 
450 hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTTask = cms.Task(
451  hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTraw,
452  hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLT
453  )
454 
455 hpsPFTauMVAIsolation2Task = cms.Task(
456  #hpsPFTauBasicDiscriminatorsTask, included separately in produceAndDiscriminateHPSPFTausTask
457  hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask,
458  hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask,
459  #hpsPFTauBasicDiscriminatorsdR03Task, included separately in produceAndDiscriminateHPSPFTausTask
460  hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTTask,
461  )
462 
463 hpsPFTauMVAIsolation2Seq = cms.Sequence(
464  hpsPFTauBasicDiscriminatorsTask,
465  hpsPFTauBasicDiscriminatorsdR03Task,
466  hpsPFTauMVAIsolation2Task
467  )
468 
469 produceHPSPFTausTask = cms.Task(
470  hpsSelectionDiscriminator,
471  #hpsTightIsolationCleaner,
472  #hpsMediumIsolationCleaner,
473  #hpsLooseIsolationCleaner,
474  #hpsVLooseIsolationCleaner,
475  hpsPFTauProducerSansRefs,
476  hpsPFTauProducer
477  )
478 
479 produceHPSPFTaus = cms.Sequence(
480  produceHPSPFTausTask
481  )
482 
483 produceAndDiscriminateHPSPFTausTask = cms.Task(
484  produceHPSPFTausTask,
485  hpsPFTauDiscriminationByDecayModeFindingNewDMs,
486  hpsPFTauDiscriminationByDecayModeFindingOldDMs,
487  hpsPFTauDiscriminationByDecayModeFinding, # CV: kept for backwards compatibility
488  hpsPFTauBasicDiscriminatorsTask,
489  hpsPFTauBasicDiscriminatorsdR03Task,
490  hpsPFTauDiscriminationByDeadECALElectronRejection,
491  hpsPFTauDiscriminationByMuonRejection3,
492  hpsPFTauVertexAndImpactParametersTask
493  )
494 
495 produceAndDiscriminateHPSPFTaus = cms.Sequence(
496  produceAndDiscriminateHPSPFTausTask
497  )