00001 import FWCore.ParameterSet.Config as cms
00002 import copy
00003
00004 '''
00005
00006 Sequences for HPS taus
00007
00008 '''
00009
00010
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
00018 from RecoTauTag.RecoTau.TauDiscriminatorTools import *
00019
00020
00021
00022 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByHPSSelection_cfi import hpsSelectionDiscriminator
00023 hpsPFTauDiscriminationByDecayModeFinding = hpsSelectionDiscriminator.clone(
00024 PFTauProducer = cms.InputTag('hpsPFTauProducer')
00025 )
00026
00027
00028
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
00039 hpsPFTauDiscriminationByLooseChargedIsolation = pfRecoTauDiscriminationByIsolation.clone(
00040 PFTauProducer = cms.InputTag("hpsPFTauProducer"),
00041 Prediscriminants = requireDecayMode.clone(),
00042 ApplyDiscriminationByECALIsolation = False
00043 )
00044
00045
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
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
00116
00117
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
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
00284
00285 hpsPFTauDiscriminationByMVAElectronRejection.Prediscriminants.electronMedium = \
00286 cms.PSet(
00287 Producer = cms.InputTag('hpsPFTauDiscriminationByMediumElectronRejection'),
00288 cut = cms.double(0.5)
00289 )
00290
00291
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
00301 cleaners.unitCharge,
00302
00303 cleaners.matchingConeCut,
00304
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
00322
00323
00324
00325 *hpsPFTauProducerSansRefs
00326 *hpsPFTauProducer
00327 )
00328
00329 produceAndDiscriminateHPSPFTaus = cms.Sequence(
00330 produceHPSPFTaus*
00331 hpsPFTauDiscriminationByDecayModeFinding*
00332 hpsPFTauDiscriminationByChargedIsolationSeq*
00333 hpsPFTauDiscriminationByIsolationSeq*
00334
00335
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 )