CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/RecoTauTag/Configuration/python/HPSPFTaus_cff.py

Go to the documentation of this file.
00001 import FWCore.ParameterSet.Config as cms
00002 import copy
00003 
00004 '''
00005 
00006 Sequences for HPS taus
00007 
00008 '''
00009 
00010 # Define the discriminators for this tau
00011 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByIsolation_cfi                      import *
00012 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackFinding_cfi            import *
00013 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstElectron_cfi                  import *
00014 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstElectronMVA_cfi                  import *
00015 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstMuon_cfi                      import *
00016 
00017 # Load helper functions to change the source of the discriminants
00018 from RecoTauTag.RecoTau.TauDiscriminatorTools import *
00019 
00020 # Select those taus that pass the HPS selections
00021 #  - pt > 15, mass cuts, tauCone cut
00022 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByHPSSelection_cfi import hpsSelectionDiscriminator
00023 hpsPFTauDiscriminationByDecayModeFinding = hpsSelectionDiscriminator.clone(
00024     PFTauProducer = cms.InputTag('hpsPFTauProducer')
00025     )
00026 
00027 
00028 # Define decay mode prediscriminant
00029 requireDecayMode = cms.PSet(
00030     BooleanOperator = cms.string("and"),
00031     decayMode = cms.PSet(
00032         Producer = cms.InputTag('hpsPFTauDiscriminationByDecayModeFinding'),
00033         cut = cms.double(0.5)
00034     )
00035 )
00036 
00037 
00038 # First apply only charged isolation
00039 hpsPFTauDiscriminationByLooseChargedIsolation = pfRecoTauDiscriminationByIsolation.clone(
00040     PFTauProducer = cms.InputTag("hpsPFTauProducer"),
00041     Prediscriminants = requireDecayMode.clone(),
00042     ApplyDiscriminationByECALIsolation = False
00043 )
00044 
00045 #Building the prototype for  the Discriminator by Isolation
00046 hpsPFTauDiscriminationByLooseIsolation = pfRecoTauDiscriminationByIsolation.clone(
00047     PFTauProducer = cms.InputTag("hpsPFTauProducer"),
00048     Prediscriminants = requireDecayMode.clone(),
00049     ApplyDiscriminationByTrackerIsolation = False,
00050     ApplyDiscriminationByECALIsolation = True,
00051     applyOccupancyCut = True
00052 )
00053 hpsPFTauDiscriminationByLooseIsolation.Prediscriminants.preIso = cms.PSet(
00054     Producer = cms.InputTag("hpsPFTauDiscriminationByLooseChargedIsolation"),
00055     cut = cms.double(0.5))
00056 
00057 
00058 # Make an even looser discriminator
00059 hpsPFTauDiscriminationByVLooseChargedIsolation = hpsPFTauDiscriminationByLooseChargedIsolation.clone(
00060     customOuterCone = cms.double(0.3),
00061     isoConeSizeForDeltaBeta = cms.double(0.3)
00062     )
00063 hpsPFTauDiscriminationByVLooseChargedIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 1.5
00064 hpsPFTauDiscriminationByVLooseChargedIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 2.0
00065 
00066 hpsPFTauDiscriminationByVLooseIsolation = hpsPFTauDiscriminationByLooseIsolation.clone(
00067     customOuterCone = cms.double(0.3),
00068     isoConeSizeForDeltaBeta = cms.double(0.3),
00069     )
00070 hpsPFTauDiscriminationByVLooseIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 1.5
00071 hpsPFTauDiscriminationByVLooseIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 2.0
00072 hpsPFTauDiscriminationByVLooseIsolation.Prediscriminants.preIso.Producer =  cms.InputTag("hpsPFTauDiscriminationByVLooseChargedIsolation")
00073 
00074 
00075 hpsPFTauDiscriminationByMediumChargedIsolation = hpsPFTauDiscriminationByLooseChargedIsolation.clone()
00076 hpsPFTauDiscriminationByMediumChargedIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 0.8
00077 hpsPFTauDiscriminationByMediumChargedIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 0.8
00078 hpsPFTauDiscriminationByMediumChargedIsolation.Prediscriminants.preIso = cms.PSet(
00079     Producer = cms.InputTag("hpsPFTauDiscriminationByLooseChargedIsolation"),
00080     cut = cms.double(0.5))
00081 
00082 hpsPFTauDiscriminationByMediumIsolation = hpsPFTauDiscriminationByLooseIsolation.clone()
00083 hpsPFTauDiscriminationByMediumIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 0.8
00084 hpsPFTauDiscriminationByMediumIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 0.8
00085 hpsPFTauDiscriminationByMediumIsolation.Prediscriminants.preIso.Producer = cms.InputTag("hpsPFTauDiscriminationByMediumChargedIsolation")
00086 
00087 
00088 hpsPFTauDiscriminationByTightChargedIsolation = hpsPFTauDiscriminationByLooseChargedIsolation.clone()
00089 hpsPFTauDiscriminationByTightChargedIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00090 hpsPFTauDiscriminationByTightChargedIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00091 hpsPFTauDiscriminationByTightChargedIsolation.Prediscriminants.preIso = cms.PSet(
00092     Producer = cms.InputTag("hpsPFTauDiscriminationByMediumChargedIsolation"),
00093     cut = cms.double(0.5))
00094 
00095 hpsPFTauDiscriminationByTightIsolation = hpsPFTauDiscriminationByLooseIsolation.clone()
00096 hpsPFTauDiscriminationByTightIsolation.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00097 hpsPFTauDiscriminationByTightIsolation.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00098 hpsPFTauDiscriminationByTightIsolation.Prediscriminants.preIso.Producer = cms.InputTag("hpsPFTauDiscriminationByTightChargedIsolation")
00099 
00100 hpsPFTauDiscriminationByChargedIsolationSeq = cms.Sequence(
00101     hpsPFTauDiscriminationByVLooseChargedIsolation*
00102     hpsPFTauDiscriminationByLooseChargedIsolation*
00103     hpsPFTauDiscriminationByMediumChargedIsolation*
00104     hpsPFTauDiscriminationByTightChargedIsolation
00105 )
00106 
00107 hpsPFTauDiscriminationByIsolationSeq = cms.Sequence(
00108     hpsPFTauDiscriminationByVLooseIsolation*
00109     hpsPFTauDiscriminationByLooseIsolation*
00110     hpsPFTauDiscriminationByMediumIsolation*
00111     hpsPFTauDiscriminationByTightIsolation
00112 )
00113 
00114 _isolation_types = ['VLoose', 'Loose', 'Medium', 'Tight']
00115 # Now build the sequences that apply PU corrections
00116 
00117 # Make Delta Beta corrections (on SumPt quantity)
00118 hpsPFTauDiscriminationByVLooseIsolationDBSumPtCorr = hpsPFTauDiscriminationByVLooseIsolation.clone(
00119     deltaBetaPUTrackPtCutOverride = cms.double(0.5),
00120     applyDeltaBetaCorrection = True,
00121     isoConeSizeForDeltaBeta = 0.8,
00122     deltaBetaFactor = "%0.4f"%(0.0123/0.1687),
00123     applyOccupancyCut = False,
00124     applySumPtCut = True,
00125     )
00126 
00127 hpsPFTauDiscriminationByVLooseIsolationDBSumPtCorr.maximumSumPtCut=hpsPFTauDiscriminationByVLooseIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt
00128 
00129 hpsPFTauDiscriminationByLooseIsolationDBSumPtCorr = hpsPFTauDiscriminationByLooseIsolation.clone(
00130     deltaBetaPUTrackPtCutOverride = cms.double(0.5),
00131     applyDeltaBetaCorrection = True,
00132     isoConeSizeForDeltaBeta = 0.8,
00133     deltaBetaFactor = "%0.4f"%(0.0123/0.1687),
00134     applyOccupancyCut = False,
00135     applySumPtCut = True,
00136     )
00137 hpsPFTauDiscriminationByLooseIsolationDBSumPtCorr.maximumSumPtCut=hpsPFTauDiscriminationByLooseIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt
00138 
00139 
00140 hpsPFTauDiscriminationByMediumIsolationDBSumPtCorr = hpsPFTauDiscriminationByMediumIsolation.clone(
00141     deltaBetaPUTrackPtCutOverride = cms.double(0.5),
00142     applyDeltaBetaCorrection = True,
00143     isoConeSizeForDeltaBeta = 0.8,
00144     deltaBetaFactor = "%0.4f"%(0.0462/0.1687),
00145     applyOccupancyCut = False,
00146     applySumPtCut = True,
00147     )
00148 hpsPFTauDiscriminationByMediumIsolationDBSumPtCorr.maximumSumPtCut=hpsPFTauDiscriminationByMediumIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt
00149 
00150 
00151 hpsPFTauDiscriminationByTightIsolationDBSumPtCorr = hpsPFTauDiscriminationByTightIsolation.clone(
00152     deltaBetaPUTrackPtCutOverride = cms.double(0.5),
00153     applyDeltaBetaCorrection = True,
00154     isoConeSizeForDeltaBeta = 0.8,
00155     deltaBetaFactor = "%0.4f"%(0.0772/0.1687),
00156     applyOccupancyCut = False,
00157     applySumPtCut = True,
00158     )
00159 hpsPFTauDiscriminationByTightIsolationDBSumPtCorr.maximumSumPtCut=hpsPFTauDiscriminationByTightIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt
00160 
00161 hpsPFTauDiscriminationByIsolationSeqDBSumPtCorr = cms.Sequence(
00162     hpsPFTauDiscriminationByVLooseIsolationDBSumPtCorr*
00163     hpsPFTauDiscriminationByLooseIsolationDBSumPtCorr*
00164     hpsPFTauDiscriminationByMediumIsolationDBSumPtCorr*
00165     hpsPFTauDiscriminationByTightIsolationDBSumPtCorr
00166     )
00167 
00168 
00169 hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr = hpsPFTauDiscriminationByVLooseIsolationDBSumPtCorr.clone(
00170     ApplyDiscriminationByTrackerIsolation = True,
00171     ApplyDiscriminationByECALIsolation = True,
00172     deltaBetaFactor = "%0.4f"%(0.0772/0.1687),
00173     applyOccupancyCut = False,
00174     applySumPtCut = True,
00175     maximumSumPtCut = 3.0,
00176     Prediscriminants = requireDecayMode.clone()
00177     )
00178 hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00179 hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00180 
00181 hpsPFTauDiscriminationByRawCombinedIsolationDBSumPtCorr = hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr.clone(
00182     applySumPtCut = False,
00183     storeRawSumPt = cms.bool(True)
00184 )
00185 
00186 hpsPFTauDiscriminationByRawChargedIsolationDBSumPtCorr = hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr.clone(
00187     applySumPtCut = False,
00188     ApplyDiscriminationByECALIsolation = False,
00189     storeRawSumPt = cms.bool(True)
00190 )
00191 
00192 hpsPFTauDiscriminationByRawGammaIsolationDBSumPtCorr = hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr.clone(
00193     applySumPtCut = False,
00194     ApplyDiscriminationByTrackerIsolation = False,
00195     storeRawSumPt = cms.bool(True)
00196 )
00197 
00198 hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr = hpsPFTauDiscriminationByLooseIsolationDBSumPtCorr.clone(
00199     ApplyDiscriminationByTrackerIsolation = True,
00200     ApplyDiscriminationByECALIsolation = True,
00201     deltaBetaFactor = "%0.4f"%(0.0772/0.1687),
00202     applyOccupancyCut = False,
00203     applySumPtCut = True,
00204     maximumSumPtCut = 2.0,
00205     Prediscriminants = requireDecayMode.clone()
00206     )
00207 hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00208 hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00209 
00210 hpsPFTauDiscriminationByMediumCombinedIsolationDBSumPtCorr = hpsPFTauDiscriminationByMediumIsolationDBSumPtCorr.clone(
00211     ApplyDiscriminationByTrackerIsolation = True,
00212     ApplyDiscriminationByECALIsolation = True,
00213     deltaBetaFactor = "%0.4f"%(0.0772/0.1687),
00214     applyOccupancyCut = False,
00215     applySumPtCut = True,
00216     maximumSumPtCut = 1.0,
00217     Prediscriminants = requireDecayMode.clone()
00218     )
00219 hpsPFTauDiscriminationByMediumCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00220 hpsPFTauDiscriminationByMediumCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00221 
00222 hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr = hpsPFTauDiscriminationByTightIsolationDBSumPtCorr.clone(
00223     ApplyDiscriminationByTrackerIsolation = True,
00224     ApplyDiscriminationByECALIsolation = True,
00225     deltaBetaFactor = "%0.4f"%(0.0772/0.1687),
00226     applyOccupancyCut = False,
00227     applySumPtCut = True,
00228     maximumSumPtCut = 0.8,
00229     Prediscriminants = requireDecayMode.clone()
00230     )
00231 hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minTrackPt = 0.5
00232 hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr.qualityCuts.isolationQualityCuts.minGammaEt = 0.5
00233 
00234 hpsPFTauDiscriminationByCombinedIsolationSeqDBSumPtCorr = cms.Sequence(
00235     hpsPFTauDiscriminationByVLooseCombinedIsolationDBSumPtCorr*
00236     hpsPFTauDiscriminationByLooseCombinedIsolationDBSumPtCorr*
00237     hpsPFTauDiscriminationByMediumCombinedIsolationDBSumPtCorr*
00238     hpsPFTauDiscriminationByTightCombinedIsolationDBSumPtCorr
00239     )
00240 
00241 #copying discriminator against electrons and muons
00242 hpsPFTauDiscriminationByLooseElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00243     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00244     Prediscriminants = noPrediscriminants,
00245     PFElectronMVA_maxValue = cms.double(0.6)
00246     )
00247 
00248 hpsPFTauDiscriminationByMediumElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00249     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00250     Prediscriminants = noPrediscriminants,
00251     ApplyCut_EcalCrackCut = cms.bool(True)
00252     )
00253 
00254 hpsPFTauDiscriminationByTightElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00255     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00256     Prediscriminants = noPrediscriminants,
00257     ApplyCut_EcalCrackCut = cms.bool(True),
00258     ApplyCut_BremCombined = cms.bool(True)
00259     )
00260 
00261 hpsPFTauDiscriminationByLooseMuonRejection = pfRecoTauDiscriminationAgainstMuon.clone(
00262     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00263     Prediscriminants = noPrediscriminants
00264     )
00265 
00266 hpsPFTauDiscriminationByMediumMuonRejection = pfRecoTauDiscriminationAgainstMuon.clone(
00267     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00268     Prediscriminants = noPrediscriminants,
00269     discriminatorOption = cms.string('noAllArbitrated')
00270     )
00271 
00272 hpsPFTauDiscriminationByTightMuonRejection = pfRecoTauDiscriminationAgainstMuon.clone(
00273     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00274     Prediscriminants = noPrediscriminants,
00275     discriminatorOption = cms.string('noAllArbitratedWithHOP')
00276     )
00277 
00278 hpsPFTauDiscriminationByMVAElectronRejection = pfRecoTauDiscriminationAgainstElectronMVA.clone(
00279     PFTauProducer = cms.InputTag('hpsPFTauProducer'),
00280     Prediscriminants = requireDecayMode.clone(),
00281 )
00282 
00283 # Additionally require that the MVA electrons pass electron medium
00284 # (this discriminator was used on the training sample)
00285 hpsPFTauDiscriminationByMVAElectronRejection.Prediscriminants.electronMedium = \
00286         cms.PSet(
00287             Producer = cms.InputTag('hpsPFTauDiscriminationByMediumElectronRejection'),
00288             cut = cms.double(0.5)
00289         )
00290 
00291 # Define the HPS selection discriminator used in cleaning
00292 hpsSelectionDiscriminator.PFTauProducer = cms.InputTag("combinatoricRecoTaus")
00293 
00294 import RecoTauTag.RecoTau.RecoTauCleanerPlugins as cleaners
00295 
00296 hpsPFTauProducerSansRefs = cms.EDProducer(
00297     "RecoTauCleaner",
00298     src = cms.InputTag("combinatoricRecoTaus"),
00299     cleaners = cms.VPSet(
00300         # Prefer taus that dont' have charge == 3
00301         cleaners.unitCharge,
00302         # Prefer taus that are within DR<0.1 of the jet axis
00303         cleaners.matchingConeCut,
00304         # Prefer taus that pass HPS selections
00305         cms.PSet(
00306             name = cms.string("HPS_Select"),
00307             plugin = cms.string("RecoTauDiscriminantCleanerPlugin"),
00308             src = cms.InputTag("hpsSelectionDiscriminator"),
00309         ),
00310         cleaners.combinedIsolation
00311     )
00312 )
00313 
00314 hpsPFTauProducer = cms.EDProducer(
00315     "RecoTauPiZeroUnembedder",
00316     src = cms.InputTag("hpsPFTauProducerSansRefs")
00317 )
00318 
00319 produceHPSPFTaus = cms.Sequence(
00320     hpsSelectionDiscriminator
00321     #*hpsTightIsolationCleaner
00322     #*hpsMediumIsolationCleaner
00323     #*hpsLooseIsolationCleaner
00324     #*hpsVLooseIsolationCleaner
00325     *hpsPFTauProducerSansRefs
00326     *hpsPFTauProducer
00327 )
00328 
00329 produceAndDiscriminateHPSPFTaus = cms.Sequence(
00330     produceHPSPFTaus*
00331     hpsPFTauDiscriminationByDecayModeFinding*
00332     hpsPFTauDiscriminationByChargedIsolationSeq*
00333     hpsPFTauDiscriminationByIsolationSeq*
00334     #hpsPFTauDiscriminationByIsolationSeqRhoCorr*
00335     #hpsPFTauDiscriminationByIsolationSeqCustomRhoCorr*
00336     hpsPFTauDiscriminationByIsolationSeqDBSumPtCorr*
00337 
00338     hpsPFTauDiscriminationByRawCombinedIsolationDBSumPtCorr*
00339     hpsPFTauDiscriminationByRawChargedIsolationDBSumPtCorr*
00340     hpsPFTauDiscriminationByRawGammaIsolationDBSumPtCorr*
00341 
00342     hpsPFTauDiscriminationByCombinedIsolationSeqDBSumPtCorr*
00343     hpsPFTauDiscriminationByLooseElectronRejection*
00344     hpsPFTauDiscriminationByMediumElectronRejection*
00345     hpsPFTauDiscriminationByTightElectronRejection*
00346     hpsPFTauDiscriminationByMVAElectronRejection*
00347     hpsPFTauDiscriminationByLooseMuonRejection*
00348     hpsPFTauDiscriminationByMediumMuonRejection*
00349     hpsPFTauDiscriminationByTightMuonRejection
00350 )