1 import FWCore.ParameterSet.Config
as cms
11 if hasattr(process, label+postfix):
12 result = getattr(process, label + postfix)
14 raise ValueError(
"Error in <applyPostfix>: No module of name = %s attached to process !!" % (label + postfix))
19 tauSource = cms.InputTag(
'caloRecoTauProducer'),
22 print ' switching PAT Tau input to: ', tauSource
24 applyPostfix(process,
"tauMatch" + patTauLabel, postfix).src = tauSource
25 applyPostfix(process,
"tauGenJetMatch"+ patTauLabel, postfix).src = tauSource
27 applyPostfix(process,
"patTaus" + patTauLabel, postfix).tauSource = tauSource
29 applyPostfix(process,
"patTaus" + patTauLabel, postfix).tauTransverseImpactParameterSource =
"" 33 print "NO PF Isolation will be computed for CaloTau (this could be improved later)" 34 applyPostfix(process,
"patTaus" + patTauLabel, postfix).isolation = cms.PSet()
35 applyPostfix(process,
"patTaus" + patTauLabel, postfix).isoDeposits = cms.PSet()
36 applyPostfix(process,
"patTaus" + patTauLabel, postfix).userIsolation = cms.PSet()
39 if hasattr(process,
"cleanPatTaus" + patTauLabel + postfix):
40 getattr(process,
"cleanPatTaus" + patTauLabel + postfix).preselection = preselection
43 """ Build a PSet defining the tau ID sources to embed into the pat::Tau """ 45 for label, discriminator
in idSources:
46 if ":" in discriminator:
47 discr = discriminator.split(
":")
48 setattr(output, label, cms.InputTag(tauType + discr[0] + postfix +
":" + discr[1]))
50 setattr(output, label, cms.InputTag(tauType + discriminator + postfix))
59 """internal auxiliary function to switch to **any** PFTau collection""" 60 print ' switching PAT Tau input to: ', tauSource
62 applyPostfix(process,
"tauMatch" + patTauLabel, postfix).src = tauSource
63 applyPostfix(process,
"tauGenJetMatch" + patTauLabel, postfix).src = tauSource
65 applyPostfix(process,
"tauIsoDepositPFCandidates" + patTauLabel, postfix).src = tauSource
66 applyPostfix(process,
"tauIsoDepositPFCandidates" + patTauLabel, postfix).ExtractorPSet.tauSource = tauSource
67 applyPostfix(process,
"tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).src = tauSource
68 applyPostfix(process,
"tauIsoDepositPFChargedHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = tauSource
69 applyPostfix(process,
"tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).src = tauSource
70 applyPostfix(process,
"tauIsoDepositPFNeutralHadrons" + patTauLabel, postfix).ExtractorPSet.tauSource = tauSource
71 applyPostfix(process,
"tauIsoDepositPFGammas" + patTauLabel, postfix).src = tauSource
72 applyPostfix(process,
"tauIsoDepositPFGammas" + patTauLabel, postfix).ExtractorPSet.tauSource = tauSource
74 applyPostfix(process,
"patTaus" + patTauLabel, postfix).tauSource = tauSource
76 applyPostfix(process,
"patTaus" + patTauLabel, postfix).tauTransverseImpactParameterSource =
"" 79 if hasattr(process,
"cleanPatTaus" + patTauLabel + postfix):
80 getattr(process,
"cleanPatTaus" + patTauLabel + postfix).preselection = preselection
83 classicTauIDSources = [
84 (
"leadingTrackFinding",
"DiscriminationByLeadingTrackFinding"),
85 (
"leadingTrackPtCut",
"DiscriminationByLeadingTrackPtCut"),
86 (
"trackIsolation",
"DiscriminationByTrackIsolation"),
87 (
"ecalIsolation",
"DiscriminationByECALIsolation"),
88 (
"byIsolation",
"DiscriminationByIsolation"),
89 (
"againstElectron",
"DiscriminationAgainstElectron"),
90 (
"againstMuon",
"DiscriminationAgainstMuon")
93 classicPFTauIDSources = [
94 (
"leadingPionPtCut",
"DiscriminationByLeadingPionPtCut"),
95 (
"trackIsolationUsingLeadingPion",
"DiscriminationByTrackIsolationUsingLeadingPion"),
96 (
"ecalIsolationUsingLeadingPion",
"DiscriminationByECALIsolationUsingLeadingPion"),
97 (
"byIsolationUsingLeadingPion",
"DiscriminationByIsolationUsingLeadingPion")
102 (
"decayModeFindingNewDMs",
"DiscriminationByDecayModeFindingNewDMs"),
103 (
"decayModeFinding",
"DiscriminationByDecayModeFinding"),
104 (
"byLooseCombinedIsolationDeltaBetaCorr3Hits",
"DiscriminationByLooseCombinedIsolationDBSumPtCorr3Hits"),
105 (
"byMediumCombinedIsolationDeltaBetaCorr3Hits",
"DiscriminationByMediumCombinedIsolationDBSumPtCorr3Hits"),
106 (
"byTightCombinedIsolationDeltaBetaCorr3Hits",
"DiscriminationByTightCombinedIsolationDBSumPtCorr3Hits"),
107 (
"byCombinedIsolationDeltaBetaCorrRaw3Hits",
"DiscriminationByRawCombinedIsolationDBSumPtCorr3Hits"),
108 (
"byLooseCombinedIsolationDeltaBetaCorr3HitsdR03",
"DiscriminationByLooseCombinedIsolationDBSumPtCorr3HitsdR03"),
109 (
"byMediumCombinedIsolationDeltaBetaCorr3HitsdR03",
"DiscriminationByMediumCombinedIsolationDBSumPtCorr3HitsdR03"),
110 (
"byTightCombinedIsolationDeltaBetaCorr3HitsdR03",
"DiscriminationByTightCombinedIsolationDBSumPtCorr3HitsdR03"),
111 (
"byPhotonPtSumOutsideSignalCone",
"DiscriminationByPhotonPtSumOutsideSignalCone"),
112 (
"chargedIsoPtSum",
"ChargedIsoPtSum"),
113 (
"neutralIsoPtSum",
"NeutralIsoPtSum"),
114 (
"puCorrPtSum",
"PUcorrPtSum"),
115 (
"neutralIsoPtSumWeight",
"NeutralIsoPtSumWeight"),
116 (
"footprintCorrection",
"FootprintCorrection"),
117 (
"photonPtSumOutsideSignalCone",
"PhotonPtSumOutsideSignalCone"),
118 (
"againstMuonLoose3",
"DiscriminationByLooseMuonRejection3"),
119 (
"againstMuonTight3",
"DiscriminationByTightMuonRejection3"),
120 (
"byIsolationMVArun2v1DBoldDMwLTraw",
"DiscriminationByIsolationMVArun2v1DBoldDMwLTraw"),
121 (
"byVLooseIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1DBoldDMwLT"),
122 (
"byLooseIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByLooseIsolationMVArun2v1DBoldDMwLT"),
123 (
"byMediumIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByMediumIsolationMVArun2v1DBoldDMwLT"),
124 (
"byTightIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByTightIsolationMVArun2v1DBoldDMwLT"),
125 (
"byVTightIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByVTightIsolationMVArun2v1DBoldDMwLT"),
126 (
"byVVTightIsolationMVArun2v1DBoldDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1DBoldDMwLT"),
127 (
"byIsolationMVArun2v1DBnewDMwLTraw",
"DiscriminationByIsolationMVArun2v1DBnewDMwLTraw"),
128 (
"byVLooseIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1DBnewDMwLT"),
129 (
"byLooseIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByLooseIsolationMVArun2v1DBnewDMwLT"),
130 (
"byMediumIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByMediumIsolationMVArun2v1DBnewDMwLT"),
131 (
"byTightIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByTightIsolationMVArun2v1DBnewDMwLT"),
132 (
"byVTightIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByVTightIsolationMVArun2v1DBnewDMwLT"),
133 (
"byVVTightIsolationMVArun2v1DBnewDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1DBnewDMwLT"),
134 (
"byIsolationMVArun2v1PWoldDMwLTraw",
"DiscriminationByIsolationMVArun2v1PWoldDMwLTraw"),
135 (
"byVLooseIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1PWoldDMwLT"),
136 (
"byLooseIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByLooseIsolationMVArun2v1PWoldDMwLT"),
137 (
"byMediumIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByMediumIsolationMVArun2v1PWoldDMwLT"),
138 (
"byTightIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByTightIsolationMVArun2v1PWoldDMwLT"),
139 (
"byVTightIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByVTightIsolationMVArun2v1PWoldDMwLT"),
140 (
"byVVTightIsolationMVArun2v1PWoldDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1PWoldDMwLT"),
141 (
"byIsolationMVArun2v1PWnewDMwLTraw",
"DiscriminationByIsolationMVArun2v1PWnewDMwLTraw"),
142 (
"byVLooseIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1PWnewDMwLT"),
143 (
"byLooseIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByLooseIsolationMVArun2v1PWnewDMwLT"),
144 (
"byMediumIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByMediumIsolationMVArun2v1PWnewDMwLT"),
145 (
"byTightIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByTightIsolationMVArun2v1PWnewDMwLT"),
146 (
"byVTightIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByVTightIsolationMVArun2v1PWnewDMwLT"),
147 (
"byVVTightIsolationMVArun2v1PWnewDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1PWnewDMwLT"),
148 (
"chargedIsoPtSumdR03",
"ChargedIsoPtSumdR03"),
149 (
"neutralIsoPtSumdR03",
"NeutralIsoPtSumdR03"),
150 (
"neutralIsoPtSumWeightdR03",
"NeutralIsoPtSumWeightdR03"),
151 (
"footprintCorrectiondR03",
"FootprintCorrectiondR03"),
152 (
"photonPtSumOutsideSignalConedR03",
"PhotonPtSumOutsideSignalConedR03"),
153 (
"byIsolationMVArun2v1DBdR03oldDMwLTraw",
"DiscriminationByIsolationMVArun2v1DBdR03oldDMwLTraw"),
154 (
"byVLooseIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1DBdR03oldDMwLT"),
155 (
"byLooseIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByLooseIsolationMVArun2v1DBdR03oldDMwLT"),
156 (
"byMediumIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByMediumIsolationMVArun2v1DBdR03oldDMwLT"),
157 (
"byTightIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByTightIsolationMVArun2v1DBdR03oldDMwLT"),
158 (
"byVTightIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByVTightIsolationMVArun2v1DBdR03oldDMwLT"),
159 (
"byVVTightIsolationMVArun2v1DBdR03oldDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1DBdR03oldDMwLT"),
160 (
"byIsolationMVArun2v1PWdR03oldDMwLTraw",
"DiscriminationByIsolationMVArun2v1PWdR03oldDMwLTraw"),
161 (
"byVLooseIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByVLooseIsolationMVArun2v1PWdR03oldDMwLT"),
162 (
"byLooseIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByLooseIsolationMVArun2v1PWdR03oldDMwLT"),
163 (
"byMediumIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByMediumIsolationMVArun2v1PWdR03oldDMwLT"),
164 (
"byTightIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByTightIsolationMVArun2v1PWdR03oldDMwLT"),
165 (
"byVTightIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByVTightIsolationMVArun2v1PWdR03oldDMwLT"),
166 (
"byVVTightIsolationMVArun2v1PWdR03oldDMwLT",
"DiscriminationByVVTightIsolationMVArun2v1PWdR03oldDMwLT"),
167 (
"againstElectronMVA6Raw",
"DiscriminationByMVA6rawElectronRejection"),
168 (
"againstElectronMVA6category",
"DiscriminationByMVA6rawElectronRejection:category"),
169 (
"againstElectronVLooseMVA6",
"DiscriminationByMVA6VLooseElectronRejection"),
170 (
"againstElectronLooseMVA6",
"DiscriminationByMVA6LooseElectronRejection"),
171 (
"againstElectronMediumMVA6",
"DiscriminationByMVA6MediumElectronRejection"),
172 (
"againstElectronTightMVA6",
"DiscriminationByMVA6TightElectronRejection"),
173 (
"againstElectronVTightMVA6",
"DiscriminationByMVA6VTightElectronRejection"),
178 tauSource = cms.InputTag(
'fixedConePFTauProducer'),
181 fixedConeIDSources = copy.copy(classicTauIDSources)
182 fixedConeIDSources.extend(classicPFTauIDSources)
184 _switchToPFTau(process, tauSource,
'fixedConePFTau', fixedConeIDSources,
185 patTauLabel = patTauLabel, postfix = postfix)
189 tauSource = cms.InputTag(
'shrinkingConePFTauProducer'),
192 shrinkingIDSources = copy.copy(classicTauIDSources)
193 shrinkingIDSources.extend(classicPFTauIDSources)
195 _switchToPFTau(process, tauSource,
'shrinkingConePFTau', shrinkingIDSources,
196 patTauLabel = patTauLabel, postfix = postfix)
200 tauSource = cms.InputTag(
'hpsPFTauProducer'),
206 patTauLabel = patTauLabel, postfix = postfix)
209 applyPostfix(process,
"patTaus" + patTauLabel, postfix).tauTransverseImpactParameterSource = tauSource.value().
replace(
"Producer",
"TransverseImpactParameters")
212 if hasattr(process,
"cleanPatTaus" + patTauLabel + postfix):
213 getattr(process,
"cleanPatTaus" + patTauLabel + postfix).preselection = preselection
215 from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff
import run2_miniAOD_80XLegacy
216 from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff
import run2_miniAOD_94XFall17
217 for era
in [ run2_miniAOD_80XLegacy, run2_miniAOD_94XFall17]:
218 _patTaus = getattr(process,
"patTaus"+patTauLabel+postfix)
219 _extTauIDSources = _patTaus.tauIDSources.clone()
220 _extTauIDSources.byVVLooseIsolationMVArun2v1DBoldDMwLT = cms.InputTag(
"hpsPFTauDiscriminationByVVLooseIsolationMVArun2v1DBoldDMwLT")
221 era.toModify(_patTaus, tauIDSources = _extTauIDSources)
226 tauSource = cms.InputTag(
'hpsPFTauProducer'),
230 'shrinkingConePFTau' : switchToPFTauShrinkingCone,
231 'fixedConePFTau' : switchToPFTauFixedCone,
232 'hpsPFTau' : switchToPFTauHPS,
233 'caloRecoTau' : switchToCaloTau
235 if not pfTauType
in mapping.keys():
236 raise ValueError(
"Error in <switchToPFTauByType>: Undefined pfTauType = %s !!" % pfTauType)
238 mapping[pfTauType](process, tauSource = tauSource,
239 patTauLabel = patTauLabel, postfix = postfix)
243 """ Add a new collection of taus. Takes the configuration from the 244 already configured standard tau collection as starting point; 245 replaces before calling addTauCollection will also affect the 248 _label=
'addTauCollection' 249 _defaultParameters=dicttypes.SortedKeysDict()
251 ConfigToolBase.__init__(self)
253 self._defaultValue,
'Input tau collection', cms.InputTag)
255 self._defaultValue,
"label to indicate the tau algorithm (e.g.'hps')", str)
257 self._defaultValue,
"label to indicate the type of constituents (either 'PFTau' or 'Tau')", str)
259 True,
"run sequence for computing particle-flow based IsoDeposits")
261 "hps",
"standard algorithm label of the collection from which the clones " \
262 +
"for the new tau collection will be taken from " \
263 +
"(note that this tau collection has to be available in the event before hand)")
265 "PFTau",
"standard constituent type label of the collection from which the clones " \
266 +
" for the new tau collection will be taken from "\
267 +
"(note that this tau collection has to be available in the event before hand)")
276 tauCollection =
None,
279 doPFIsoDeposits =
None,
282 standardType =
None):
284 if tauCollection
is None:
286 if algoLabel
is None:
288 if typeLabel
is None:
290 if doPFIsoDeposits
is None:
292 if standardAlgo
is None:
294 if standardType
is None:
297 self.setParameter(
'tauCollection', tauCollection)
298 self.setParameter(
'algoLabel', algoLabel)
299 self.setParameter(
'typeLabel', typeLabel)
300 self.setParameter(
'doPFIsoDeposits', doPFIsoDeposits)
301 self.setParameter(
'standardAlgo', standardAlgo)
302 self.setParameter(
'standardType', standardType)
307 tauCollection = self.
_parameters[
'tauCollection'].value
310 doPFIsoDeposits = self.
_parameters[
'doPFIsoDeposits'].value
311 standardAlgo = self.
_parameters[
'standardAlgo'].value
312 standardType = self.
_parameters[
'standardType'].value
316 if typeLabel ==
'Tau':
317 print "NO PF Isolation will be computed for CaloTau (this could be improved later)" 318 doPFIsoDeposits =
False 322 def oldLabel(prefix = ''):
326 return prefix +
"PatTaus" 331 def capitalize(label):
332 return label[0].capitalize() + label[1:]
336 def newLabel(oldLabel):
338 if ( oldLabel.find(standardAlgo) >= 0
and oldLabel.find(standardType) >= 0 ):
339 oldLabel = oldLabel.replace(standardAlgo, algoLabel).
replace(standardType, typeLabel)
341 oldLabel = oldLabel + capitalize(algoLabel + typeLabel)
345 def addClone(hook, **replaceStatements):
348 newModule = getattr(process, hook).
clone(**replaceStatements)
351 def addPFIsoDepositClone(hook, **replaceStatements):
352 newModule = getattr(process, hook).
clone(**replaceStatements)
353 newModuleIsoDepositExtractor = getattr(newModule,
"ExtractorPSet")
354 setattr(newModuleIsoDepositExtractor,
"tauSource", getattr(newModule,
"src"))
357 addClone(oldLabel(), tauSource = tauCollection)
360 addClone(oldLabel(
'selected'), src = cms.InputTag(newLabel(oldLabel())))
363 addClone(oldLabel(
'clean'), src=cms.InputTag(newLabel(oldLabel(
'selected'))))
366 newTaus = getattr(process, newLabel(oldLabel()))
369 addClone(
'tauMatch', src = tauCollection)
370 addClone(
'tauGenJetMatch', src = tauCollection)
374 addPFIsoDepositClone(
'tauIsoDepositPFCandidates', src = tauCollection)
375 addPFIsoDepositClone(
'tauIsoDepositPFChargedHadrons', src = tauCollection)
376 addPFIsoDepositClone(
'tauIsoDepositPFNeutralHadrons', src = tauCollection)
377 addPFIsoDepositClone(
'tauIsoDepositPFGammas', src = tauCollection)
381 x.setModuleLabel(newLabel(x.moduleLabel))
384 fixInputTag(newTaus.genParticleMatch)
385 fixInputTag(newTaus.genJetMatch)
386 fixInputTag(newTaus.isoDeposits.pfAllParticles)
387 fixInputTag(newTaus.isoDeposits.pfNeutralHadron)
388 fixInputTag(newTaus.isoDeposits.pfChargedHadron)
389 fixInputTag(newTaus.isoDeposits.pfGamma)
390 fixInputTag(newTaus.userIsolation.pfAllParticles.src)
391 fixInputTag(newTaus.userIsolation.pfNeutralHadron.src)
392 fixInputTag(newTaus.userIsolation.pfChargedHadron.src)
393 fixInputTag(newTaus.userIsolation.pfGamma.src)
397 oldTaus = getattr(process, oldLabel())
398 if typeLabel ==
'Tau':
400 tauSource = getattr(newTaus,
"tauSource"),
401 patTauLabel = capitalize(algoLabel + typeLabel))
404 tauSource = getattr(newTaus,
"tauSource"),
405 patTauLabel = capitalize(algoLabel + typeLabel))
def replace(string, replacements)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)