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(), python.rootplot.root2matplotlib.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 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 276 of file tauTools.py.

References switchToPFTauFixedCone().

277 def switchTo31Xdefaults(process):
278  switchToPFTauFixedCone(process)
279  process.cleanPatTaus.preselection = cms.string('tauID("byIsolation") > 0')
def switchToPFTauFixedCone
Definition: tauTools.py:209
def switchTo31Xdefaults
Definition: tauTools.py:276
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 266 of file tauTools.py.

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

267  postfix = "" ):
268  mapping = { 'shrinkingConePFTau' : switchToPFTauShrinkingCone,
269  'fixedConePFTau' : switchToPFTauFixedCone,
270  'hpsPFTau' : switchToPFTauHPS,
271  'caloRecoTau' : switchToCaloTau,
272  'hpsTancPFTau' : switchToPFTauHPSpTaNC }
273  mapping[pfTauType](process, pfTauLabelOld = pfTauLabelOld, pfTauLabelNew = pfTauLabelNew,
274  patTauLabel = patTauLabel, postfix = postfix)
275 
# 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 209 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauShrinkingCone().

Referenced by switchTo31Xdefaults().

210  postfix = ""):
211  fixedConeIDSources = copy.copy(classicTauIDSources)
212  fixedConeIDSources.extend(classicPFTauIDSources)
213 
214  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'fixedConePFTau', fixedConeIDSources,
215  patTauLabel = patTauLabel, postfix = postfix)
216 
# 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 235 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauHPSpTaNC().

Referenced by switchToPFTauShrinkingCone().

236  postfix = ""):
237  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsPFTau', hpsTauIDSources,
238  patTauLabel = patTauLabel, postfix = postfix)
239 
240  ## adapt cleanPatTaus
241  if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
242  getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
243  'pt > 15 & abs(eta) < 2.3 & tauID("decayModeFinding") > 0.5 & tauID("byLooseIsolation") > 0.5' \
244  + ' & tauID("againstMuonTight") > 0.5 & tauID("againstElectronLoose") > 0.5'
245 
# 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 250 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauByType().

Referenced by switchToPFTauHPS().

251  postfix = ""):
252  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsTancTaus', hpsTancTauIDSources,
253  patTauLabel = patTauLabel, postfix = postfix)
254 
255  ## adapt cleanPatTaus
256  if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
257  getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
258  'pt > 15 & abs(eta) < 2.3 & tauID("decayModeFinding") > 0.5 & tauID("byHPSloose") > 0.5' \
259  + ' & tauID("againstMuonTight") > 0.5 & tauID("againstElectronLoose") > 0.5'
260 
# 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 221 of file tauTools.py.

References _switchToPFTau(), and switchToPFTauHPS().

Referenced by switchToPFTauFixedCone().

222  postfix = ""):
223  shrinkingIDSources = copy.copy(classicTauIDSources)
224  shrinkingIDSources.extend(classicPFTauIDSources)
225  # Only shrinkingCone has associated TaNC discriminators, so add them here
226  shrinkingIDSources.extend(tancTauIDSources)
227 
228  _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'shrinkingConePFTau', shrinkingIDSources,
229  patTauLabel = patTauLabel, postfix = postfix)
230 
# 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  ("decayModeFinding", "DiscriminationByDecayModeSelection"),
12  ("byHPSvloose", "DiscriminationByVLooseIsolation"),
13  ("byHPSloose", "DiscriminationByLooseIsolation"),
14  ("byHPSmedium", "DiscriminationByMediumIsolation"),
15  ("byHPStight", "DiscriminationByTightIsolation"),
16  ("againstElectronLoose", "DiscriminationByLooseElectronRejection"),
17  ("againstElectronMedium", "DiscriminationByMediumElectronRejection"),
18  ("againstElectronTight", "DiscriminationByTightElectronRejection"),
19  ("againstMuonLoose", "DiscriminationByLooseMuonRejection"),
20  ("againstMuonTight", "DiscriminationByTightMuonRejection") ]

Definition at line 183 of file tauTools.py.

list tauTools.hpsTauIDSources
Initial value:
1 = [
2  ("decayModeFinding", "DiscriminationByDecayModeFinding"),
3  ("byVLooseIsolation", "DiscriminationByVLooseIsolation"),
4  ("byLooseIsolation", "DiscriminationByLooseIsolation"),
5  ("byMediumIsolation", "DiscriminationByMediumIsolation"),
6  ("byTightIsolation", "DiscriminationByTightIsolation"),
7  ("againstElectronLoose", "DiscriminationByLooseElectronRejection"),
8  ("againstElectronMedium", "DiscriminationByMediumElectronRejection"),
9  ("againstElectronTight", "DiscriminationByTightElectronRejection"),
10  ("againstMuonLoose", "DiscriminationByLooseMuonRejection"),
11  ("againstMuonTight", "DiscriminationByTightMuonRejection") ]

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.