CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Functions | Variables
tauTools Namespace Reference

Classes

class  AddTauCollection
 

Functions

def _buildIDSourcePSet
 
def _switchToPFTau
 
def redoPFTauDiscriminators
 
def switchTo31Xdefaults
 
def switchToCaloTau
 
def switchToPFTauByType
 
def switchToPFTauFixedCone
 
def switchToPFTauHPS
 
def switchToPFTauHPSpTaNC
 
def switchToPFTauShrinkingCone
 

Variables

list classicPFTauIDSources
 
list classicTauIDSources
 
list hpsTancTauIDSources
 
list hpsTauIDSources
 
list tancTauIDSources
 

Function Documentation

def tauTools._buildIDSourcePSet (   pfTauType,
  idSources,
  postfix = "" 
)
private
Build a PSet defining the tau ID sources to embed into the pat::Tau 

Definition at line 108 of file tauTools.py.

References _switchToPFTau().

Referenced by _switchToPFTau(), and switchToCaloTau().

109 def _buildIDSourcePSet(pfTauType, idSources, postfix =""):
110  """ Build a PSet defining the tau ID sources to embed into the pat::Tau """
111  output = cms.PSet()
112  for label, discriminator in idSources:
113  setattr(output, label, cms.InputTag(pfTauType + discriminator + postfix))
114  return output
def _buildIDSourcePSet
Definition: tauTools.py:108
def tauTools._switchToPFTau (   process,
  pfTauLabelOld,
  pfTauLabelNew,
  pfTauType,
  idSources,
  patTauLabel = "",
  postfix = "" 
)
private
internal auxiliary function to switch to **any** PFTau collection

Definition at line 121 of file tauTools.py.

References _buildIDSourcePSet(), and helpers.applyPostfix().

Referenced by _buildIDSourcePSet(), switchToPFTauFixedCone(), switchToPFTauHPS(), switchToPFTauHPSpTaNC(), and switchToPFTauShrinkingCone().

122  postfix = ""):
123  """internal auxiliary function to switch to **any** PFTau collection"""
124  print ' Taus: ', pfTauLabelOld, '->', pfTauLabelNew
125 
126  applyPostfix(process, "tauMatch" + patTauLabel, postfix).src = pfTauLabelNew
127  applyPostfix(process, "tauGenJetMatch" + patTauLabel, postfix).src = pfTauLabelNew
128 
129  applyPostfix(process, "tauIsoDepositPFCandidates" + patTauLabel, postfix).src = pfTauLabelNew
130  applyPostfix(process, "tauIsoDepositPFCandidates" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
131  applyPostfix(process, "tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).src = pfTauLabelNew
132  applyPostfix(process, "tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
133  applyPostfix(process, "tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).src = pfTauLabelNew
134  applyPostfix(process, "tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
135  applyPostfix(process, "tauIsoDepositPFGammas" + patTauLabel, postfix).src = pfTauLabelNew
136  applyPostfix(process, "tauIsoDepositPFGammas" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
137 
138  applyPostfix(process, "patTaus" + patTauLabel, postfix).tauSource = pfTauLabelNew
139  applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = _buildIDSourcePSet(pfTauType, idSources, postfix)
140 
141  applyPostfix(process, "cleanPatTaus" + patTauLabel, postfix).preselection = \
142  'tauID("leadingTrackFinding") > 0.5 & tauID("leadingPionPtCut") > 0.5 & tauID("byIsolationUsingLeadingPion") > 0.5' \
143  + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5' \
144  + ' & (signalPFChargedHadrCands.size() = 1 | signalPFChargedHadrCands.size() = 3)'
145 
# Name mapping for classic tau ID sources (present for fixed and shrinkingCones)
def applyPostfix
Helpers to perform some technically boring tasks like looking for all modules with a given parameter ...
Definition: helpers.py:6
def _buildIDSourcePSet
Definition: tauTools.py:108
def tauTools.redoPFTauDiscriminators (   process,
  oldPFTauLabel = cms.InputTag('shrinkingConePFTauProducer'),
  newPFTauLabel = cms.InputTag('shrinkingConePFTauProducer'),
  tauType = 'shrinkingConePFTau',
  postfix = "" 
)

Definition at line 12 of file tauTools.py.

References helpers.applyPostfix(), helpers.cloneProcessingSnippet(), helpers.massSearchReplaceParam(), linker.replace(), and switchToCaloTau().

Referenced by pfTools.adaptPFTaus().

12 
13  tauType = 'shrinkingConePFTau', postfix = ""):
14  print 'Tau discriminators: ', oldPFTauLabel, '->', newPFTauLabel
15  print 'Tau type: ', tauType
16  #oldPFTauLabel.setModuleLabel(oldPFTauLabel.getModuleLabel()+postfix)
17  tauSrc = 'PFTauProducer'
18 
19  tauDiscriminationSequence = None
20 
21  if tauType == 'hpsPFTau':
22  process.patHPSPFTauDiscrimination = process.produceAndDiscriminateHPSPFTaus.copy()
23  # remove producers
24  for iname in process.patHPSPFTauDiscrimination.moduleNames():
25  if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
26  process.patHPSPFTauDiscrimination.remove(getattr(process,iname) )
27  tauDiscriminationSequence = cloneProcessingSnippet(process, process.patHPSPFTauDiscrimination, postfix)
28 
29  elif tauType == 'hpsTancTaus': #to be checked if correct
30  process.patHPSTaNCPFTauDiscrimination = process.hpsTancTauInitialSequence.copy()
31  process.patHPSTaNCPFTauDiscrimination *= process.hpsTancTauDiscriminantSequence
32  # remove producers
33  for iname in process.patHPSTaNCPFTauDiscrimination.moduleNames():
34  if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
35  process.patHPSTaNCPFTauDiscrimination.remove(getattr(process,iname) )
36  tauDiscriminationSequence = cloneProcessingSnippet(process, process.patHPSTaNCPFTauDiscrimination, postfix)
37 
38  elif tauType == 'fixedConePFTau':
39  process.patFixedConePFTauDiscrimination = process.produceAndDiscriminateFixedConePFTaus.copy()
40  # remove producers
41  for iname in process.patFixedConePFTauDiscrimination.moduleNames():
42  if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
43  process.patFixedConePFTauDiscrimination.remove(getattr(process,iname) )
44  tauDiscriminationSequence = cloneProcessingSnippet(process, process.patFixedConePFTauDiscrimination, postfix)
45 
46  elif tauType == 'shrinkingConePFTau': #shr cone with TaNC
47  process.patShrinkingConePFTauDiscrimination = process.produceAndDiscriminateShrinkingConePFTaus.copy()
48  process.patShrinkingConePFTauDiscrimination *= process.produceShrinkingConeDiscriminationByTauNeuralClassifier
49  # remove producers
50  for iname in process.patShrinkingConePFTauDiscrimination.moduleNames():
51  if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
52  process.patShrinkingConePFTauDiscrimination.remove(getattr(process,iname) )
53  tauDiscriminationSequence = cloneProcessingSnippet(process, process.patShrinkingConePFTauDiscrimination, postfix)
54 
55  elif tauType == 'caloTau':
56  # fill calo sequence by discriminants
57  process.patCaloTauDiscrimination = process.tautagging.copy()
58  # remove producers
59  for iname in process.patCaloTauDiscrimination.moduleNames():
60  if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
61  process.patCaloTauDiscrimination.remove(getattr(process,iname) )
62  tauDiscriminationSequence = cloneProcessingSnippet(process, process.patCaloTauDiscrimination, postfix)
63  tauSrc = 'CaloTauProducer'
64  else:
65  raise StandardError, "Unkown tauType: '%s'"%tauType
66 
67  applyPostfix(process,"patDefaultSequence",postfix).replace(
68  applyPostfix(process,"patTaus",postfix),
69  tauDiscriminationSequence*applyPostfix(process,"patTaus",postfix)
70  )
71 
72  massSearchReplaceParam(tauDiscriminationSequence, tauSrc, oldPFTauLabel, newPFTauLabel)
73 
# switch to CaloTau collection
def replace
Definition: linker.py:10
def cloneProcessingSnippet
Definition: helpers.py:257
def applyPostfix
Helpers to perform some technically boring tasks like looking for all modules with a given parameter ...
Definition: helpers.py:6
def massSearchReplaceParam
Definition: helpers.py:200
def tauTools.switchTo31Xdefaults (   process)

Definition at line 270 of file tauTools.py.

References switchToPFTauFixedCone().

271 def switchTo31Xdefaults(process):
272  switchToPFTauFixedCone(process)
273  process.cleanPatTaus.preselection = cms.string('tauID("byIsolation") > 0')
def switchToPFTauFixedCone
Definition: tauTools.py:203
def switchTo31Xdefaults
Definition: tauTools.py:270
def tauTools.switchToCaloTau (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('caloRecoTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 78 of file tauTools.py.

References _buildIDSourcePSet(), and helpers.applyPostfix().

Referenced by redoPFTauDiscriminators().

78 
79  postfix = ""):
80  print ' Taus: ', pfTauLabelOld, '->', pfTauLabelNew
81 
82  caloTauLabel = pfTauLabelNew
83  applyPostfix(process, "tauMatch" + patTauLabel, postfix).src = caloTauLabel
84  applyPostfix(process, "tauGenJetMatch"+ patTauLabel, postfix).src = caloTauLabel
85 
86  applyPostfix(process, "patTaus" + patTauLabel, postfix).tauSource = caloTauLabel
87  applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = _buildIDSourcePSet('caloRecoTau', classicTauIDSources, postfix)
88 # applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = cms.PSet(
89 # leadingTrackFinding = cms.InputTag("caloRecoTauDiscriminationByLeadingTrackFinding" + postfix),
90 # leadingTrackPtCut = cms.InputTag("caloRecoTauDiscriminationByLeadingTrackPtCut" + postfix),
91 # trackIsolation = cms.InputTag("caloRecoTauDiscriminationByTrackIsolation" + postfix),
92 # ecalIsolation = cms.InputTag("caloRecoTauDiscriminationByECALIsolation" + postfix),
93 # byIsolation = cms.InputTag("caloRecoTauDiscriminationByIsolation" + postfix),
94 # againstElectron = cms.InputTag("caloRecoTauDiscriminationAgainstElectron" + postfix),
95 # againstMuon = cms.InputTag("caloRecoTauDiscriminationAgainstMuon" + postfix)
96 # )
97  ## Isolation is somewhat an issue, so we start just by turning it off
98  print "NO PF Isolation will be computed for CaloTau (this could be improved later)"
99  applyPostfix(process, "patTaus" + patTauLabel, postfix).isolation = cms.PSet()
100  applyPostfix(process, "patTaus" + patTauLabel, postfix).isoDeposits = cms.PSet()
101  applyPostfix(process, "patTaus" + patTauLabel, postfix).userIsolation = cms.PSet()
102 
103  ## adapt cleanPatTaus
104  if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
105  getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
106  'tauID("leadingTrackFinding") > 0.5 & tauID("leadingTrackPtCut") > 0.5' \
107  + ' & tauID("byIsolation") > 0.5 & tauID("againstElectron") > 0.5 & (signalTracks.size() = 1 | signalTracks.size() = 3)'
def applyPostfix
Helpers to perform some technically boring tasks like looking for all modules with a given parameter ...
Definition: helpers.py:6
def _buildIDSourcePSet
Definition: tauTools.py:108
def tauTools.switchToPFTauByType (   process,
  pfTauType = None,
  pfTauLabelNew = None,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 260 of file tauTools.py.

Referenced by pfTools.adaptPFTaus(), switchToPFTauHPSpTaNC(), and tauTools.AddTauCollection.toolCode().

261  postfix = "" ):
262  mapping = { 'shrinkingConePFTau' : switchToPFTauShrinkingCone,
263  'fixedConePFTau' : switchToPFTauFixedCone,
264  'hpsPFTau' : switchToPFTauHPS,
265  'caloRecoTau' : switchToCaloTau,
266  'hpsTancPFTau' : switchToPFTauHPSpTaNC }
267  mapping[pfTauType](process, pfTauLabelOld = pfTauLabelOld, pfTauLabelNew = pfTauLabelNew,
268  patTauLabel = patTauLabel, postfix = postfix)
269 
# switch to PFTau collection that was default in PAT production in CMSSW_3_1_x release series
def tauTools.switchToPFTauFixedCone (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('fixedConePFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 203 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauShrinkingCone().

Referenced by switchTo31Xdefaults().

204  postfix = ""):
205  fixedConeIDSources = copy.copy(classicTauIDSources)
206  fixedConeIDSources.extend(classicPFTauIDSources)
207 
208  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'fixedConePFTau', fixedConeIDSources,
209  patTauLabel = patTauLabel, postfix = postfix)
210 
# switch to PFTau collection produced for shrinking signal cone of size dR = 5.0/Et(PFTau)
def _switchToPFTau
Definition: tauTools.py:121
def tauTools.switchToPFTauHPS (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('hpsPFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 229 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauHPSpTaNC().

Referenced by switchToPFTauShrinkingCone().

230  postfix = ""):
231  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsPFTau', hpsTauIDSources,
232  patTauLabel = patTauLabel, postfix = postfix)
233 
234  ## adapt cleanPatTaus
235  if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
236  getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
237  'pt > 15 & abs(eta) < 2.3 & tauID("leadingTrackFinding") > 0.5 & tauID("byLooseIsolation") > 0.5' \
238  + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5'
239 
# switch to hadron-plus-strip(s) (HPS) PFTau collection
def _switchToPFTau
Definition: tauTools.py:121
def tauTools.switchToPFTauHPSpTaNC (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('hpsTancTaus'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 244 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauByType().

Referenced by switchToPFTauHPS().

245  postfix = ""):
246  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsTancTaus', hpsTancTauIDSources,
247  patTauLabel = patTauLabel, postfix = postfix)
248 
249  ## adapt cleanPatTaus
250  if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
251  getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
252  'pt > 15 & abs(eta) < 2.3 & tauID("leadingPionPtCut") > 0.5 & tauID("byHPSloose") > 0.5' \
253  + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5'
254 
# Select switcher by string
def _switchToPFTau
Definition: tauTools.py:121
def tauTools.switchToPFTauShrinkingCone (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('shrinkingConePFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 215 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauHPS().

Referenced by switchToPFTauFixedCone().

216  postfix = ""):
217  shrinkingIDSources = copy.copy(classicTauIDSources)
218  shrinkingIDSources.extend(classicPFTauIDSources)
219  # Only shrinkingCone has associated TaNC discriminators, so add them here
220  shrinkingIDSources.extend(tancTauIDSources)
221 
222  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'shrinkingConePFTau', shrinkingIDSources,
223  patTauLabel = patTauLabel, postfix = postfix)
224 
# switch to hadron-plus-strip(s) (HPS) PFTau collection
def _switchToPFTau
Definition: tauTools.py:121

Variable Documentation

list tauTools.classicPFTauIDSources
Initial value:
1 = [
2  ("leadingPionPtCut", "DiscriminationByLeadingPionPtCut"),
3  ("trackIsolationUsingLeadingPion", "DiscriminationByTrackIsolationUsingLeadingPion"),
4  ("ecalIsolationUsingLeadingPion", "DiscriminationByECALIsolationUsingLeadingPion"),
5  ("byIsolationUsingLeadingPion", "DiscriminationByIsolationUsingLeadingPion")]

Definition at line 155 of file tauTools.py.

list tauTools.classicTauIDSources
Initial value:
1 = [
2  ("leadingTrackFinding", "DiscriminationByLeadingTrackFinding"),
3  ("leadingTrackPtCut", "DiscriminationByLeadingTrackPtCut"),
4  ("trackIsolation", "DiscriminationByTrackIsolation"),
5  ("ecalIsolation", "DiscriminationByECALIsolation"),
6  ("byIsolation", "DiscriminationByIsolation"),
7  ("againstElectron", "DiscriminationAgainstElectron"),
8  ("againstMuon", "DiscriminationAgainstMuon") ]

Definition at line 146 of file tauTools.py.

list tauTools.hpsTancTauIDSources
Initial value:
1 = [
2  ("leadingTrackFinding", "DiscriminationByLeadingTrackFinding"),
3  ("leadingTrackPtCut", "DiscriminationByLeadingTrackPtCut"),
4  ("leadingPionPtCut", "DiscriminationByLeadingPionPtCut"),
5  ("byTaNCraw", "DiscriminationByTancRaw"),
6  ("byTaNC", "DiscriminationByTanc"),
7  ("byTaNCvloose", "DiscriminationByTancVLoose"),
8  ("byTaNCloose", "DiscriminationByTancLoose"),
9  ("byTaNCmedium", "DiscriminationByTancMedium"),
10  ("byTaNCtight", "DiscriminationByTancTight"),
11  ("byDecayMode", "DiscriminationByDecayModeSelection"),
12  ("byHPSvloose", "DiscriminationByVLooseIsolation"),
13  ("byHPSloose", "DiscriminationByLooseIsolation"),
14  ("byHPSmedium", "DiscriminationByMediumIsolation"),
15  ("byHPStight", "DiscriminationByTightIsolation"),
16  ("againstElectron", "DiscriminationAgainstElectron"),
17  ("againstMuon", "DiscriminationAgainstMuon"),
18  ("againstCaloMuon", "DiscriminationAgainstCaloMuon") ]

Definition at line 179 of file tauTools.py.

list tauTools.hpsTauIDSources
Initial value:
1 = [
2  ("leadingTrackFinding", "DiscriminationByDecayModeFinding"),
3  ("byLooseIsolation", "DiscriminationByLooseIsolation"),
4  ("byMediumIsolation", "DiscriminationByMediumIsolation"),
5  ("byTightIsolation", "DiscriminationByTightIsolation"),
6  ("againstElectron", "DiscriminationAgainstElectron"),
7  ("againstMuon", "DiscriminationAgainstMuon")]

Definition at line 170 of file tauTools.py.

list tauTools.tancTauIDSources
Initial value:
1 = [
2  ("byTaNC", "DiscriminationByTaNC"),
3  ("byTaNCfrOnePercent", "DiscriminationByTaNCfrOnePercent"),
4  ("byTaNCfrHalfPercent", "DiscriminationByTaNCfrHalfPercent"),
5  ("byTaNCfrQuarterPercent", "DiscriminationByTaNCfrQuarterPercent"),
6  ("byTaNCfrTenthPercent", "DiscriminationByTaNCfrTenthPercent") ]

Definition at line 162 of file tauTools.py.