00001 import FWCore.ParameterSet.Config as cms
00002 import RecoTauTag.RecoTau.RecoTauCleanerPlugins as cleaners
00003 from RecoTauTag.RecoTau.TauDiscriminatorTools import adaptTauDiscriminator, producerIsTauTypeMapper
00004 from RecoTauTag.RecoTau.PFRecoTauQualityCuts_cfi import PFTauQualityCuts
00005 import copy
00006
00007 from RecoTauTag.RecoTau.hpstanc_transforms import transforms, cuts
00008
00009
00010 from RecoTauTag.RecoTau.TauDiscriminatorTools import noPrediscriminants
00011
00012 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingPionPtCut_cfi import pfRecoTauDiscriminationByLeadingPionPtCut
00013
00014 combinatoricRecoTausDiscriminationByLeadingPionPtCut = pfRecoTauDiscriminationByLeadingPionPtCut.clone(
00015 PFTauProducer = cms.InputTag("combinatoricRecoTaus")
00016 )
00017
00018
00019
00020 from RecoTauTag.Configuration.RecoTauMVAConfiguration_cfi import TauTagMVAComputerRecord, esPreferLocalTancDB
00021
00022
00023 from RecoTauTag.RecoTau.RecoTauDiscriminantConfiguration import discriminantConfiguration
00024
00025 combinatoricRecoTausDiscriminationByTanc = cms.EDProducer(
00026 "RecoTauMVADiscriminator",
00027 PFTauProducer = cms.InputTag("combinatoricRecoTaus"),
00028 Prediscriminants = noPrediscriminants,
00029 dbLabel = cms.string("hpstanc"),
00030 remapOutput = cms.bool(True),
00031 mvas = cms.VPSet(
00032 cms.PSet(
00033 nCharged = cms.uint32(1),
00034 nPiZeros = cms.uint32(0),
00035 mvaLabel = cms.string("1prong0pi0"),
00036 ),
00037 cms.PSet(
00038 nCharged = cms.uint32(1),
00039 nPiZeros = cms.uint32(1),
00040 mvaLabel = cms.string("1prong1pi0"),
00041 ),
00042 cms.PSet(
00043 nCharged = cms.uint32(1),
00044 nPiZeros = cms.uint32(2),
00045 mvaLabel = cms.string("1prong2pi0"),
00046 ),
00047 cms.PSet(
00048 nCharged = cms.uint32(3),
00049 nPiZeros = cms.uint32(0),
00050 mvaLabel = cms.string("3prong0pi0"),
00051 ),
00052 ),
00053 discriminantOptions = discriminantConfiguration,
00054 )
00055
00056
00057
00058 combinatoricRecoTausTancTransform = cms.EDProducer(
00059 "RecoTauMVATransform",
00060 transforms = transforms,
00061 PFTauProducer = cms.InputTag("combinatoricRecoTaus"),
00062 toTransform = cms.InputTag("combinatoricRecoTausDiscriminationByTanc"),
00063 Prediscriminants = noPrediscriminants
00064 )
00065
00066 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByHPSSelection_cfi import hpsSelectionDiscriminator
00067
00068 combinatoricRecoTausHPSSelector = hpsSelectionDiscriminator.clone(
00069 src = cms.InputTag("combinatoricRecoTaus"),
00070 minTauPt = cms.double(5.),
00071
00072 coneSizeFormula = cms.string('0.3'),
00073 )
00074
00075
00076 hpsTancTaus = cms.EDProducer(
00077 "RecoTauCleaner",
00078 src = cms.InputTag("combinatoricRecoTaus"),
00079 cleaners = cms.VPSet(
00080
00081 cleaners.unitCharge,
00082
00083 cleaners.matchingConeCut,
00084
00085 cms.PSet(
00086 name = cms.string("lead pion"),
00087 plugin = cms.string("RecoTauDiscriminantCleanerPlugin"),
00088 src = cms.InputTag("combinatoricRecoTausDiscriminationByLeadingPionPtCut")
00089 ),
00090
00091 cms.PSet(
00092 name = cms.string("HPS selection"),
00093 plugin = cms.string("RecoTauDiscriminantCleanerPlugin"),
00094 src = cms.InputTag("combinatoricRecoTausHPSSelector")
00095 ),
00096 cleaners.combinedIsolation
00097 )
00098 )
00099
00100
00101 hpsTancTausDiscriminationByLeadingPionPtCut = combinatoricRecoTausDiscriminationByLeadingPionPtCut.clone(
00102 PFTauProducer = cms.InputTag("hpsTancTaus")
00103 )
00104
00105 _leadPionPrediscriminant = cms.PSet(
00106 BooleanOperator = cms.string("and"),
00107 leadPion = cms.PSet(
00108 Producer = cms.InputTag(
00109 'hpsTancTausDiscriminationByLeadingPionPtCut'),
00110 cut = cms.double(0.5)
00111 )
00112 )
00113
00114
00115 hpsTancTausDiscriminationByDecayModeSelection = combinatoricRecoTausHPSSelector.clone(
00116 PFTauProducer = cms.InputTag("hpsTancTaus")
00117 )
00118
00119 from RecoTauTag.Configuration.HPSPFTaus_cff import requireDecayMode,\
00120 hpsPFTauDiscriminationByVLooseIsolation,\
00121 hpsPFTauDiscriminationByLooseIsolation,\
00122 hpsPFTauDiscriminationByMediumIsolation,\
00123 hpsPFTauDiscriminationByTightIsolation
00124
00125
00126 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackFinding_cfi import pfRecoTauDiscriminationByLeadingTrackFinding
00127 hpsTancTausDiscriminationByLeadingTrackFinding = pfRecoTauDiscriminationByLeadingTrackFinding.clone(
00128 PFTauProducer = cms.InputTag("hpsTancTaus")
00129 )
00130
00131 from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackPtCut_cfi import pfRecoTauDiscriminationByLeadingTrackPtCut
00132 hpsTancTausDiscriminationByLeadingTrackPtCut = pfRecoTauDiscriminationByLeadingTrackPtCut.clone(
00133 PFTauProducer = cms.InputTag("hpsTancTaus")
00134 )
00135
00136
00137
00138 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstElectron_cfi import pfRecoTauDiscriminationAgainstElectron
00139
00140 hpsTancTausDiscriminationByLooseElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00141 PFTauProducer = cms.InputTag("hpsTancTaus"),
00142 Prediscriminants = noPrediscriminants,
00143 PFElectronMVA_maxValue = cms.double(0.6)
00144 )
00145
00146 hpsTancTausDiscriminationByMediumElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00147 PFTauProducer = cms.InputTag("hpsTancTaus"),
00148 Prediscriminants = noPrediscriminants,
00149 ApplyCut_EcalCrackCut = cms.bool(True)
00150 )
00151
00152 hpsTancTausDiscriminationByTightElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
00153 PFTauProducer = cms.InputTag("hpsTancTaus"),
00154 Prediscriminants = noPrediscriminants,
00155 ApplyCut_EcalCrackCut = cms.bool(True),
00156 ApplyCut_BremCombined = cms.bool(True)
00157 )
00158
00159 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstMuon_cfi import pfRecoTauDiscriminationAgainstMuon
00160
00161 hpsTancTausDiscriminationByLooseMuonRejection = pfRecoTauDiscriminationAgainstMuon.clone(
00162 PFTauProducer = cms.InputTag("hpsTancTaus"),
00163 Prediscriminants = noPrediscriminants
00164 )
00165
00166 hpsTancTausDiscriminationByTightMuonRejection = pfRecoTauDiscriminationAgainstMuon.clone(
00167 PFTauProducer = cms.InputTag("hpsTancTaus"),
00168 Prediscriminants = noPrediscriminants,
00169 discriminatorOption = cms.string('noAllArbitrated')
00170 )
00171
00172 from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstCaloMuon_cfi import pfRecoTauDiscriminationAgainstCaloMuon
00173 hpsTancTausDiscriminationAgainstCaloMuon = pfRecoTauDiscriminationAgainstCaloMuon.clone(
00174 PFTauProducer = cms.InputTag("hpsTancTaus")
00175 )
00176 hpsTancTausDiscriminationAgainstCaloMuon.Prediscriminants.leadTrack.Producer = cms.InputTag("hpsTancTausDiscriminationByLeadingTrackFinding")
00177
00178
00179 hpsTancRequireDecayMode = requireDecayMode.clone()
00180 hpsTancRequireDecayMode.decayMode.Producer = cms.InputTag("hpsTancTausDiscriminationByDecayModeSelection")
00181
00182 hpsTancTausDiscriminationByFlightPath = cms.EDProducer(
00183 "PFRecoTauDiscriminationByFlight",
00184 PFTauProducer = cms.InputTag("hpsTancTaus"),
00185 vertexSource = PFTauQualityCuts.primaryVertexSrc,
00186 beamspot = cms.InputTag("offlineBeamSpot"),
00187 refitPV = cms.bool(True),
00188 Prediscriminants = cms.PSet(
00189 BooleanOperator = cms.string("and"),
00190 leadTrack = cms.PSet(
00191 Producer = cms.InputTag(
00192 "hpsTancTausDiscriminationByDecayModeSelection"),
00193 cut = cms.double(0.5),
00194 )
00195 )
00196 )
00197
00198
00199 hpsTancTausDiscriminationByVLooseIsolation = \
00200 hpsPFTauDiscriminationByVLooseIsolation.clone(
00201 PFTauProducer = cms.InputTag("hpsTancTaus"),
00202 Prediscriminants = hpsTancRequireDecayMode
00203 )
00204 hpsTancTausDiscriminationByVLooseIsolation.Prediscriminants = hpsTancRequireDecayMode
00205
00206 hpsTancTausDiscriminationByLooseIsolation = \
00207 hpsPFTauDiscriminationByLooseIsolation.clone(
00208 PFTauProducer = cms.InputTag("hpsTancTaus"),
00209 Prediscriminants = hpsTancRequireDecayMode
00210 )
00211 hpsTancTausDiscriminationByLooseIsolation.Prediscriminants = hpsTancRequireDecayMode
00212
00213 hpsTancTausDiscriminationByMediumIsolation = \
00214 hpsPFTauDiscriminationByMediumIsolation.clone(
00215 PFTauProducer = cms.InputTag("hpsTancTaus"),
00216 Prediscriminants = hpsTancRequireDecayMode
00217 )
00218 hpsTancTausDiscriminationByMediumIsolation.Prediscriminants = hpsTancRequireDecayMode
00219
00220 hpsTancTausDiscriminationByTightIsolation = \
00221 hpsPFTauDiscriminationByTightIsolation.clone(
00222 PFTauProducer = cms.InputTag("hpsTancTaus"),
00223 Prediscriminants = hpsTancRequireDecayMode
00224 )
00225 hpsTancTausDiscriminationByTightIsolation.Prediscriminants = hpsTancRequireDecayMode
00226
00227 _tancPrediscriminants = _leadPionPrediscriminant.clone(
00228 hpsSelect = cms.PSet(
00229 Producer = cms.InputTag(
00230 'hpsTancTausDiscriminationByDecayModeSelection'),
00231 cut = cms.double(0.5)
00232 )
00233 )
00234
00235
00236 hpsTancTausDiscriminationByTancRaw = \
00237 combinatoricRecoTausDiscriminationByTanc.clone(
00238 PFTauProducer = cms.InputTag("hpsTancTaus"),
00239 Prediscriminants = _tancPrediscriminants,
00240 )
00241
00242
00243 hpsTancTausDiscriminationByTanc = \
00244 combinatoricRecoTausTancTransform.clone(
00245 PFTauProducer = cms.InputTag("hpsTancTaus"),
00246 toTransform = cms.InputTag("hpsTancTausDiscriminationByTancRaw"),
00247 transforms = transforms,
00248 Prediscriminants = _tancPrediscriminants,
00249 )
00250
00251 hpsTancTausDiscriminationByTancLoose = cms.EDProducer(
00252
00253
00254 "PFRecoTauDiscriminationByLeadingObjectPtCut",
00255 PFTauProducer = cms.InputTag("hpsTancTaus"),
00256 UseOnlyChargedHadrons = cms.bool(True),
00257 MinPtLeadingObject = cms.double(0.0),
00258 Prediscriminants = cms.PSet(
00259 BooleanOperator = cms.string("and"),
00260 tancCut = cms.PSet(
00261 Producer = cms.InputTag("hpsTancTausDiscriminationByTanc"),
00262 cut = cuts.looseCut
00263 )
00264 )
00265 )
00266
00267
00268 hpsTancTausDiscriminationByTancVLoose = \
00269 hpsTancTausDiscriminationByTancLoose.clone()
00270 hpsTancTausDiscriminationByTancVLoose.Prediscriminants.tancCut.cut = cuts.vlooseCut
00271
00272 hpsTancTausDiscriminationByTancMedium = \
00273 hpsTancTausDiscriminationByTancLoose.clone()
00274 hpsTancTausDiscriminationByTancMedium.Prediscriminants.tancCut.cut = cuts.mediumCut
00275
00276 hpsTancTausDiscriminationByTancTight = \
00277 hpsTancTausDiscriminationByTancLoose.clone()
00278 hpsTancTausDiscriminationByTancTight.Prediscriminants.tancCut.cut = cuts.tightCut
00279
00280 hpsTancTauInitialSequence = cms.Sequence(
00281 combinatoricRecoTausDiscriminationByLeadingPionPtCut
00282 + combinatoricRecoTausHPSSelector
00283
00284 + hpsTancTaus
00285 + hpsTancTausDiscriminationByLeadingTrackFinding
00286 + hpsTancTausDiscriminationByLeadingPionPtCut
00287 + hpsTancTausDiscriminationByLeadingTrackPtCut
00288 + hpsTancTausDiscriminationByDecayModeSelection
00289 + hpsTancTausDiscriminationByFlightPath
00290 )
00291
00292 hpsTancTauDiscriminantSequence = cms.Sequence(
00293
00294 hpsTancTausDiscriminationByTancRaw
00295 + hpsTancTausDiscriminationByTanc
00296 + hpsTancTausDiscriminationByTancVLoose
00297 + hpsTancTausDiscriminationByTancLoose
00298 + hpsTancTausDiscriminationByTancMedium
00299 + hpsTancTausDiscriminationByTancTight
00300 + hpsTancTausDiscriminationByVLooseIsolation
00301 + hpsTancTausDiscriminationByLooseIsolation
00302 + hpsTancTausDiscriminationByMediumIsolation
00303 + hpsTancTausDiscriminationByTightIsolation
00304 + hpsTancTausDiscriminationByLooseElectronRejection
00305 + hpsTancTausDiscriminationByMediumElectronRejection
00306 + hpsTancTausDiscriminationByTightElectronRejection
00307 + hpsTancTausDiscriminationByLooseMuonRejection
00308 + hpsTancTausDiscriminationByTightMuonRejection
00309 )