CMS 3D CMS Logo

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.

00109                                                          :
00110     """ Build a PSet defining the tau ID sources to embed into the pat::Tau """
00111     output = cms.PSet()
00112     for label, discriminator in idSources:
00113         setattr(output, label, cms.InputTag(pfTauType + discriminator + postfix))
00114     return output

def tauTools::_switchToPFTau (   process,
  pfTauLabelOld,
  pfTauLabelNew,
  pfTauType,
  idSources,
  patTauLabel = "",
  postfix = "" 
) [private]
internal auxiliary function to switch to **any** PFTau collection

Definition at line 115 of file tauTools.py.

00122                                 :
00123     """internal auxiliary function to switch to **any** PFTau collection"""  
00124     print ' Taus: ', pfTauLabelOld, '->', pfTauLabelNew
00125     
00126     applyPostfix(process, "tauMatch" + patTauLabel, postfix).src = pfTauLabelNew
00127     applyPostfix(process, "tauGenJetMatch" + patTauLabel, postfix).src = pfTauLabelNew
00128     
00129     applyPostfix(process, "tauIsoDepositPFCandidates" + patTauLabel, postfix).src = pfTauLabelNew
00130     applyPostfix(process, "tauIsoDepositPFCandidates" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
00131     applyPostfix(process, "tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).src = pfTauLabelNew
00132     applyPostfix(process, "tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
00133     applyPostfix(process, "tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).src = pfTauLabelNew
00134     applyPostfix(process, "tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
00135     applyPostfix(process, "tauIsoDepositPFGammas" + patTauLabel, postfix).src = pfTauLabelNew
00136     applyPostfix(process, "tauIsoDepositPFGammas" + patTauLabel, postfix).ExtractorPSet.tauSource = pfTauLabelNew
00137     
00138     applyPostfix(process, "patTaus" + patTauLabel, postfix).tauSource = pfTauLabelNew
00139     applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = _buildIDSourcePSet(pfTauType, idSources, postfix)
00140 
00141     applyPostfix(process, "cleanPatTaus" + patTauLabel, postfix).preselection = \
00142       'tauID("leadingTrackFinding") > 0.5 & tauID("leadingPionPtCut") > 0.5 & tauID("byIsolationUsingLeadingPion") > 0.5' \
00143      + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5' \
00144      + ' & (signalPFChargedHadrCands.size() = 1 | signalPFChargedHadrCands.size() = 3)'
00145 
# Name mapping for classic tau ID sources (present for fixed and shrinkingCones)
def tauTools::redoPFTauDiscriminators (   process,
  oldPFTauLabel = cms.InputTag('shrinkingConePFTauProducer'),
  newPFTauLabel = cms.InputTag('shrinkingConePFTauProducer'),
  tauType = 'shrinkingConePFTau',
  postfix = "" 
)

Definition at line 9 of file tauTools.py.

00013                                                                          :
00014     print 'Tau discriminators: ', oldPFTauLabel, '->', newPFTauLabel
00015     print 'Tau type: ', tauType
00016     #oldPFTauLabel.setModuleLabel(oldPFTauLabel.getModuleLabel()+postfix)
00017     tauSrc = 'PFTauProducer'
00018 
00019     tauDiscriminationSequence = None
00020 
00021     if tauType == 'hpsPFTau':
00022         process.patHPSPFTauDiscrimination = process.produceAndDiscriminateHPSPFTaus.copy()
00023         # remove producers
00024         for iname in process.patHPSPFTauDiscrimination.moduleNames():
00025             if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
00026                 process.patHPSPFTauDiscrimination.remove(getattr(process,iname) )
00027         tauDiscriminationSequence = cloneProcessingSnippet(process, process.patHPSPFTauDiscrimination, postfix)
00028 
00029     elif tauType == 'hpsTancTaus': #to be checked if correct
00030         process.patHPSTaNCPFTauDiscrimination = process.hpsTancTauInitialSequence.copy()
00031         process.patHPSTaNCPFTauDiscrimination *= process.hpsTancTauDiscriminantSequence
00032         # remove producers
00033         for iname in process.patHPSTaNCPFTauDiscrimination.moduleNames():
00034             if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
00035                 process.patHPSTaNCPFTauDiscrimination.remove(getattr(process,iname) )
00036         tauDiscriminationSequence = cloneProcessingSnippet(process, process.patHPSTaNCPFTauDiscrimination, postfix)
00037 
00038     elif tauType == 'fixedConePFTau':
00039         process.patFixedConePFTauDiscrimination = process.produceAndDiscriminateFixedConePFTaus.copy()
00040         # remove producers
00041         for iname in process.patFixedConePFTauDiscrimination.moduleNames():
00042             if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
00043                 process.patFixedConePFTauDiscrimination.remove(getattr(process,iname) )
00044         tauDiscriminationSequence =  cloneProcessingSnippet(process, process.patFixedConePFTauDiscrimination, postfix)
00045 
00046     elif tauType == 'shrinkingConePFTau': #shr cone with TaNC
00047         process.patShrinkingConePFTauDiscrimination = process.produceAndDiscriminateShrinkingConePFTaus.copy()
00048         process.patShrinkingConePFTauDiscrimination *= process.produceShrinkingConeDiscriminationByTauNeuralClassifier
00049         # remove producers
00050         for iname in process.patShrinkingConePFTauDiscrimination.moduleNames():
00051             if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
00052                 process.patShrinkingConePFTauDiscrimination.remove(getattr(process,iname) )
00053         tauDiscriminationSequence =  cloneProcessingSnippet(process, process.patShrinkingConePFTauDiscrimination, postfix)
00054 
00055     elif tauType == 'caloTau':
00056         # fill calo sequence by discriminants
00057         process.patCaloTauDiscrimination = process.tautagging.copy()
00058         # remove producers
00059         for iname in process.patCaloTauDiscrimination.moduleNames():
00060             if not (iname.find("DiscriminationBy")>-1 or iname.find("DiscriminationAgainst")>-1):
00061                 process.patCaloTauDiscrimination.remove(getattr(process,iname) )
00062         tauDiscriminationSequence =  cloneProcessingSnippet(process, process.patCaloTauDiscrimination, postfix)
00063         tauSrc = 'CaloTauProducer'
00064     else:
00065         raise StandardError, "Unkown tauType: '%s'"%tauType
00066 
00067     applyPostfix(process,"patDefaultSequence",postfix).replace(
00068         applyPostfix(process,"patTaus",postfix),
00069         tauDiscriminationSequence*applyPostfix(process,"patTaus",postfix)
00070     )
00071 
00072     massSearchReplaceParam(tauDiscriminationSequence, tauSrc, oldPFTauLabel, newPFTauLabel)
00073 
# switch to CaloTau collection
def tauTools::switchTo31Xdefaults (   process)

Definition at line 270 of file tauTools.py.

00271                                 :
00272     switchToPFTauFixedCone(process)
00273     process.cleanPatTaus.preselection = cms.string('tauID("byIsolation") > 0')
    
def tauTools::switchToCaloTau (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('caloRecoTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 74 of file tauTools.py.

00079                                  :
00080     print ' Taus: ', pfTauLabelOld, '->', pfTauLabelNew
00081 
00082     caloTauLabel = pfTauLabelNew
00083     applyPostfix(process, "tauMatch" + patTauLabel, postfix).src = caloTauLabel
00084     applyPostfix(process, "tauGenJetMatch"+ patTauLabel, postfix).src = caloTauLabel
00085 
00086     applyPostfix(process, "patTaus" + patTauLabel, postfix).tauSource = caloTauLabel
00087     applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = _buildIDSourcePSet('caloRecoTau', classicTauIDSources, postfix)
00088 #    applyPostfix(process, "patTaus" + patTauLabel, postfix).tauIDSources = cms.PSet(        
00089 #        leadingTrackFinding = cms.InputTag("caloRecoTauDiscriminationByLeadingTrackFinding" + postfix),
00090 #        leadingTrackPtCut   = cms.InputTag("caloRecoTauDiscriminationByLeadingTrackPtCut" + postfix),
00091 #        trackIsolation      = cms.InputTag("caloRecoTauDiscriminationByTrackIsolation" + postfix),
00092 #        ecalIsolation       = cms.InputTag("caloRecoTauDiscriminationByECALIsolation" + postfix),
00093 #        byIsolation         = cms.InputTag("caloRecoTauDiscriminationByIsolation" + postfix),
00094 #        againstElectron     = cms.InputTag("caloRecoTauDiscriminationAgainstElectron" + postfix),
00095 #        againstMuon         = cms.InputTag("caloRecoTauDiscriminationAgainstMuon" + postfix)
00096 #    )
00097     ## Isolation is somewhat an issue, so we start just by turning it off
00098     print "NO PF Isolation will be computed for CaloTau (this could be improved later)"
00099     applyPostfix(process, "patTaus" + patTauLabel, postfix).isolation   = cms.PSet()
00100     applyPostfix(process, "patTaus" + patTauLabel, postfix).isoDeposits = cms.PSet()
00101     applyPostfix(process, "patTaus" + patTauLabel, postfix).userIsolation = cms.PSet()
00102 
00103     ## adapt cleanPatTaus
00104     if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
00105         getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
00106       'tauID("leadingTrackFinding") > 0.5 & tauID("leadingTrackPtCut") > 0.5' \
00107      + ' & tauID("byIsolation") > 0.5 & tauID("againstElectron") > 0.5 & (signalTracks.size() = 1 | signalTracks.size() = 3)'

def tauTools::switchToPFTauByType (   process,
  pfTauType = None,
  pfTauLabelNew = None,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 255 of file tauTools.py.

00261                                       :
00262     mapping = { 'shrinkingConePFTau' : switchToPFTauShrinkingCone,
00263                 'fixedConePFTau' : switchToPFTauFixedCone,
00264                 'hpsPFTau' : switchToPFTauHPS,
00265                 'caloRecoTau' : switchToCaloTau,
00266                 'hpsTancPFTau' : switchToPFTauHPSpTaNC }
00267     mapping[pfTauType](process, pfTauLabelOld = pfTauLabelOld, pfTauLabelNew = pfTauLabelNew,
00268                        patTauLabel = patTauLabel, postfix = postfix)
00269 
# 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 199 of file tauTools.py.

00204                                         :
00205     fixedConeIDSources = copy.copy(classicTauIDSources)
00206     fixedConeIDSources.extend(classicPFTauIDSources)
00207 
00208     _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'fixedConePFTau', fixedConeIDSources,
00209                    patTauLabel = patTauLabel, postfix = postfix)
00210 
# switch to PFTau collection produced for shrinking signal cone of size dR = 5.0/Et(PFTau)
def tauTools::switchToPFTauHPS (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('hpsPFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 225 of file tauTools.py.

00230                                   :
00231     _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsPFTau', hpsTauIDSources,
00232                    patTauLabel = patTauLabel, postfix = postfix)
00233     
00234     ## adapt cleanPatTaus
00235     if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
00236         getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
00237       'pt > 15 & abs(eta) < 2.3 & tauID("leadingTrackFinding") > 0.5 & tauID("byLooseIsolation") > 0.5' \
00238      + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5'
00239 
# switch to hadron-plus-strip(s) (HPS) PFTau collection
def tauTools::switchToPFTauHPSpTaNC (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('hpsTancTaus'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 240 of file tauTools.py.

00245                                        :
00246     _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'hpsTancTaus', hpsTancTauIDSources,
00247                    patTauLabel = patTauLabel, postfix = postfix)
00248     
00249     ## adapt cleanPatTaus
00250     if hasattr(process, "cleanPatTaus" + patTauLabel + postfix):
00251         getattr(process, "cleanPatTaus" + patTauLabel + postfix).preselection = \
00252       'pt > 15 & abs(eta) < 2.3 & tauID("leadingPionPtCut") > 0.5 & tauID("byHPSloose") > 0.5' \
00253      + ' & tauID("againstMuon") > 0.5 & tauID("againstElectron") > 0.5'
00254 
# Select switcher by string
def tauTools::switchToPFTauShrinkingCone (   process,
  pfTauLabelOld = cms.InputTag('shrinkingConePFTauProducer'),
  pfTauLabelNew = cms.InputTag('shrinkingConePFTauProducer'),
  patTauLabel = "",
  postfix = "" 
)

Definition at line 211 of file tauTools.py.

00216                                             :
00217     shrinkingIDSources = copy.copy(classicTauIDSources)
00218     shrinkingIDSources.extend(classicPFTauIDSources)
00219     # Only shrinkingCone has associated TaNC discriminators, so add them here
00220     shrinkingIDSources.extend(tancTauIDSources)
00221     
00222     _switchToPFTau(process, pfTauLabelOld, pfTauLabelNew, 'shrinkingConePFTau', shrinkingIDSources,
00223                    patTauLabel = patTauLabel, postfix = postfix)
00224 
# switch to hadron-plus-strip(s) (HPS) PFTau collection

Variable Documentation

Initial value:
00001 [
00002     ("leadingPionPtCut", "DiscriminationByLeadingPionPtCut"),
00003     ("trackIsolationUsingLeadingPion", "DiscriminationByTrackIsolationUsingLeadingPion"),
00004     ("ecalIsolationUsingLeadingPion", "DiscriminationByECALIsolationUsingLeadingPion"),
00005     ("byIsolationUsingLeadingPion", "DiscriminationByIsolationUsingLeadingPion")]

Definition at line 155 of file tauTools.py.

Initial value:
00001 [
00002     ("leadingTrackFinding", "DiscriminationByLeadingTrackFinding"),
00003     ("leadingTrackPtCut", "DiscriminationByLeadingTrackPtCut"),
00004     ("trackIsolation", "DiscriminationByTrackIsolation"),
00005     ("ecalIsolation", "DiscriminationByECALIsolation"),
00006     ("byIsolation", "DiscriminationByIsolation"),
00007     ("againstElectron", "DiscriminationAgainstElectron"),
00008     ("againstMuon", "DiscriminationAgainstMuon") ]

Definition at line 146 of file tauTools.py.

Initial value:
00001 [
00002     ("leadingTrackFinding", "DiscriminationByLeadingTrackFinding"),
00003     ("leadingTrackPtCut", "DiscriminationByLeadingTrackPtCut"),
00004     ("leadingPionPtCut", "DiscriminationByLeadingPionPtCut"),
00005     ("byTaNCraw", "DiscriminationByTancRaw"),
00006     ("byTaNC", "DiscriminationByTanc"),
00007     ("byTaNCvloose", "DiscriminationByTancVLoose"),
00008     ("byTaNCloose", "DiscriminationByTancLoose"),
00009     ("byTaNCmedium", "DiscriminationByTancMedium"),
00010     ("byTaNCtight", "DiscriminationByTancTight"),
00011     ("byDecayMode", "DiscriminationByDecayModeSelection"),
00012     ("byHPSvloose", "DiscriminationByVLooseIsolation"),
00013     ("byHPSloose", "DiscriminationByLooseIsolation"),
00014     ("byHPSmedium", "DiscriminationByMediumIsolation"),
00015     ("byHPStight", "DiscriminationByTightIsolation"),
00016     ("againstElectron", "DiscriminationAgainstElectron"),
00017     ("againstMuon", "DiscriminationAgainstMuon"),
00018     ("againstCaloMuon", "DiscriminationAgainstCaloMuon") ]

Definition at line 179 of file tauTools.py.

Initial value:
00001 [
00002     ("leadingTrackFinding", "DiscriminationByDecayModeFinding"),
00003     ("byLooseIsolation", "DiscriminationByLooseIsolation"),
00004     ("byMediumIsolation", "DiscriminationByMediumIsolation"),
00005     ("byTightIsolation", "DiscriminationByTightIsolation"),
00006     ("againstElectron", "DiscriminationAgainstElectron"),
00007     ("againstMuon", "DiscriminationAgainstMuon")]

Definition at line 170 of file tauTools.py.

Initial value:
00001 [
00002     ("byTaNC", "DiscriminationByTaNC"),
00003     ("byTaNCfrOnePercent", "DiscriminationByTaNCfrOnePercent"),
00004     ("byTaNCfrHalfPercent", "DiscriminationByTaNCfrHalfPercent"),
00005     ("byTaNCfrQuarterPercent", "DiscriminationByTaNCfrQuarterPercent"),
00006     ("byTaNCfrTenthPercent", "DiscriminationByTaNCfrTenthPercent") ]

Definition at line 162 of file tauTools.py.