1 import FWCore.ParameterSet.Config
as cms
13 finalTaus = cms.EDFilter(
"PATTauRefSelector",
14 src = cms.InputTag(
"slimmedTausUpdated"),
15 cut = cms.string(
"pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT2015') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2') || tauID('byVVVLooseDeepTau2017v2VSjet'))")
18 from Configuration.Eras.Modifier_run2_nanoAOD_94X2016_cff
import run2_nanoAOD_94X2016
19 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv2_cff
import run2_nanoAOD_94XMiniAODv2
20 from Configuration.Eras.Modifier_run2_nanoAOD_102Xv1_cff
import run2_nanoAOD_102Xv1
21 for era
in [run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1]:
22 era.toModify(finalTaus,
23 cut = cms.string(
"pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT2015') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2'))")
25 from Configuration.Eras.Modifier_run2_nanoAOD_94XMiniAODv1_cff
import run2_nanoAOD_94XMiniAODv1
26 for era
in [run2_nanoAOD_94XMiniAODv1,]:
27 era.toModify(finalTaus,
28 cut = cms.string(
"pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v1') || tauID('byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2') || tauID('byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2'))")
30 from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff
import run2_miniAOD_80XLegacy
31 run2_miniAOD_80XLegacy.toModify(finalTaus,
32 src = cms.InputTag(
"slimmedTaus"),
33 cut = cms.string(
"pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || tauID('byVLooseIsolationMVArun2v1DBoldDMwLT') || tauID('byVLooseIsolationMVArun2v1DBnewDMwLT') || tauID('byVLooseIsolationMVArun2v1DBdR03oldDMwLT'))")
38 return Var(
" + ".
join([
"%d * tauID('%s')" % (
pow(2,i), pattern % c)
for (i,c)
in enumerate(choices)]),
"uint8",
39 doc=doc+
": bitmask "+
", ".
join([
"%d = %s" % (
pow(2,i),c)
for (i,c)
in enumerate(choices)]))
41 return _tauIdWPMask(pattern,choices=(
"Loose",
"Tight"),doc=doc)
43 return _tauIdWPMask(pattern,choices=(
"Loose",
"Medium",
"Tight"),doc=doc)
45 return _tauIdWPMask(pattern, choices=(
"VLoose",
"Loose",
"Medium",
"Tight"), doc=doc)
47 return _tauIdWPMask(pattern,choices=(
"VLoose",
"Loose",
"Medium",
"Tight",
"VTight"),doc=doc)
49 return _tauIdWPMask(pattern,choices=(
"VLoose",
"Loose",
"Medium",
"Tight",
"VTight",
"VVTight"),doc=doc)
51 return _tauIdWPMask(pattern,choices=(
"VVLoose",
"VLoose",
"Loose",
"Medium",
"Tight",
"VTight",
"VVTight"),doc=doc)
53 return _tauIdWPMask(pattern,choices=(
"VVVLoose",
"VVLoose",
"VLoose",
"Loose",
"Medium",
"Tight",
"VTight",
"VVTight"),doc=doc)
55 tauTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
56 src = cms.InputTag(
"linkedObjects",
"taus"),
58 name= cms.string(
"Tau"),
59 doc = cms.string(
"slimmedTaus after basic selection (" + finalTaus.cut.value()+
")"),
60 singleton = cms.bool(
False),
61 extension = cms.bool(
False),
62 variables = cms.PSet()
64 _tauVarsBase = cms.PSet(P4Vars,
65 charge =
Var(
"charge", int, doc=
"electric charge"),
66 jetIdx =
Var(
"?hasUserCand('jet')?userCand('jet').key():-1", int, doc=
"index of the associated jet (-1 if none)"),
67 decayMode =
Var(
"decayMode()",int),
68 idDecayMode =
Var(
"tauID('decayModeFinding')", bool),
69 idDecayModeNewDMs =
Var(
"tauID('decayModeFindingNewDMs')", bool),
71 leadTkPtOverTauPt =
Var(
"leadChargedHadrCand.pt/pt ",float, doc=
"pt of the leading track divided by tau pt",precision=10),
72 leadTkDeltaEta =
Var(
"leadChargedHadrCand.eta - eta ",float, doc=
"eta of the leading track, minus tau eta",precision=8),
73 leadTkDeltaPhi =
Var(
"deltaPhi(leadChargedHadrCand.phi, phi) ",float, doc=
"phi of the leading track, minus tau phi",precision=8),
75 dxy =
Var(
"leadChargedHadrCand().dxy()",float, doc=
"d_{xy} of lead track with respect to PV, in cm (with sign)",precision=10),
76 dz =
Var(
"leadChargedHadrCand().dz()",float, doc=
"d_{z} of lead track with respect to PV, in cm (with sign)",precision=14),
79 rawIso =
Var(
"tauID('byCombinedIsolationDeltaBetaCorrRaw3Hits')", float, doc =
"combined isolation (deltaBeta corrections)", precision=10),
80 rawIsodR03 =
Var(
"(tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum')))", float, doc =
"combined isolation (deltaBeta corrections, dR=0.3)", precision=10),
81 chargedIso =
Var(
"tauID('chargedIsoPtSum')", float, doc =
"charged isolation", precision=10),
82 neutralIso =
Var(
"tauID('neutralIsoPtSum')", float, doc =
"neutral (photon) isolation", precision=10),
83 puCorr =
Var(
"tauID('puCorrPtSum')", float, doc =
"pileup correction", precision=10),
84 photonsOutsideSignalCone =
Var(
"tauID('photonPtSumOutsideSignalCone')", float, doc =
"sum of photons outside signal cone", precision=10),
86 rawAntiEle =
Var(
"tauID('againstElectronMVA6Raw')", float, doc=
"Anti-electron MVA discriminator V6 raw output discriminator", precision=10),
87 rawAntiEleCat =
Var(
"tauID('againstElectronMVA6category')", int, doc=
"Anti-electron MVA discriminator V6 category"),
89 idAntiMu =
_tauId2WPMask(
"againstMuon%s3", doc=
"Anti-muon discriminator V3: "),
90 idAntiEle =
_tauId5WPMask(
"againstElectron%sMVA6", doc=
"Anti-electron MVA discriminator V6"),
97 _mvaIsoVars2015 = cms.PSet(
98 rawMVAnewDM =
Var(
"tauID('byIsolationMVArun2v1DBnewDMwLTraw')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10),
99 rawMVAoldDM =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10),
100 rawMVAoldDMdR03 =
Var(
"tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10),
101 idMVAnewDM =
_tauId6WPMask(
"by%sIsolationMVArun2v1DBnewDMwLT", doc=
"IsolationMVArun2v1DBnewDMwLT ID working point (2015)"),
102 idMVAoldDM =
_tauId6WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2015)"),
103 idMVAoldDMdR03 =
_tauId6WPMask(
"by%sIsolationMVArun2v1DBdR03oldDMwLT", doc=
"IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2015)")
105 _mvaIsoVars2015Reduced = cms.PSet(
106 rawMVAoldDM =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw2015')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10),
107 idMVAoldDM =
_tauId6WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT2015", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2015)"),
109 _mvaIsoVars2017v1 = cms.PSet(
110 rawMVAoldDM2017v1 =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10),
111 idMVAoldDM2017v1 =
_tauId7WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)")
113 _mvaIsoVars2017v2 = cms.PSet(
114 rawMVAnewDM2017v2 =
Var(
"tauID('byIsolationMVArun2v1DBnewDMwLTraw2017v2')",float, doc=
"byIsolationMVArun2v1DBnewDMwLT raw output discriminator (2017v2)",precision=10),
115 rawMVAoldDM2017v2 =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v2')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v2)",precision=10),
116 rawMVAoldDMdR032017v2 =
Var(
"tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw2017v2')",float, doc=
"byIsolationMVArun2v1DBdR03oldDMwLT raw output discriminator (2017v2)",precision=10),
117 idMVAnewDM2017v2 =
_tauId7WPMask(
"by%sIsolationMVArun2v1DBnewDMwLT2017v2", doc=
"IsolationMVArun2v1DBnewDMwLT ID working point (2017v2)"),
118 idMVAoldDM2017v2 =
_tauId7WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT2017v2", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2017v2)"),
119 idMVAoldDMdR032017v2 =
_tauId7WPMask(
"by%sIsolationMVArun2v1DBdR03oldDMwLT2017v2", doc=
"IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2017v2)")
121 _mvaAntiEVars2018 = cms.PSet(
122 rawAntiEle2018 =
Var(
"tauID('againstElectronMVA6Raw2018')", float, doc=
"Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10),
123 rawAntiEleCat2018 =
Var(
"tauID('againstElectronMVA6category2018')", int, doc=
"Anti-electron MVA discriminator V6 category (2018)"),
124 idAntiEle2018 =
_tauId5WPMask(
"againstElectron%sMVA62018", doc=
"Anti-electron MVA discriminator V6 (2018)"),
126 _deepTauVars2017v2 = cms.PSet(
127 rawDeepTau2017v2VSe =
Var(
"tauID('byDeepTau2017v2VSeraw')", float, doc=
"byDeepTau2017v2VSe raw output discriminator (deepTau2017v2)", precision=10),
128 rawDeepTau2017v2VSmu =
Var(
"tauID('byDeepTau2017v2VSmuraw')", float, doc=
"byDeepTau2017v2VSmu raw output discriminator (deepTau2017v2)", precision=10),
129 rawDeepTau2017v2VSjet =
Var(
"tauID('byDeepTau2017v2VSjetraw')", float, doc=
"byDeepTau2017v2VSjet raw output discriminator (deepTau2017v2)", precision=10),
130 idDeepTau2017v2VSe =
_tauId8WPMask(
"by%sDeepTau2017v2VSe", doc=
"byDeepTau2017v2VSe ID working points (deepTau2017v2)"),
131 idDeepTau2017v2VSmu =
_tauId4WPMask(
"by%sDeepTau2017v2VSmu", doc=
"byDeepTau2017v2VSmu ID working points (deepTau2017v2)"),
132 idDeepTau2017v2VSjet =
_tauId8WPMask(
"by%sDeepTau2017v2VSjet", doc=
"byDeepTau2017v2VSjet ID working points (deepTau2017v2)"),
135 _variablesMiniV2 = cms.PSet(
138 _mvaIsoVars2015Reduced,
143 _variablesMiniV1 = _variablesMiniV2.clone()
144 _variablesMiniV1.rawMVAoldDM =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10)
145 _variablesMiniV1.rawMVAoldDM2017v1 =
Var(
"tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v1')",float, doc=
"byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10)
146 _variablesMiniV1.idMVAoldDM =
_tauId6WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2015)")
147 _variablesMiniV1.idMVAoldDM2017v1 =
_tauId7WPMask(
"by%sIsolationMVArun2v1DBoldDMwLT2017v1", doc=
"IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)")
148 _variables80X = cms.PSet(
153 tauTable.variables=_variablesMiniV2
155 for era
in [run2_nanoAOD_94XMiniAODv1,]:
156 era.toModify(tauTable,
157 variables = _variablesMiniV1
159 run2_miniAOD_80XLegacy.toModify(tauTable,
160 variables = _variables80X
162 for era
in [run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1]:
163 era.toModify(tauTable.variables,
164 rawDeepTau2017v2VSe =
None,
165 rawDeepTau2017v2VSmu =
None,
166 rawDeepTau2017v2VSjet =
None,
167 idDeepTau2017v2VSe =
None,
168 idDeepTau2017v2VSmu =
None,
169 idDeepTau2017v2VSjet =
None 172 tauGenJets.GenParticles = cms.InputTag(
"prunedGenParticles")
173 tauGenJets.includeNeutrinos = cms.bool(
False)
175 genVisTaus = cms.EDProducer(
"GenVisTauProducer",
176 src = cms.InputTag(
"tauGenJetsSelectorAllHadrons"),
177 srcGenParticles = cms.InputTag(
"prunedGenParticles")
180 genVisTauTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
181 src = cms.InputTag(
"genVisTaus"),
182 cut = cms.string(
"pt > 10."),
183 name = cms.string(
"GenVisTau"),
184 doc = cms.string(
"gen hadronic taus "),
185 singleton = cms.bool(
False),
186 extension = cms.bool(
False),
187 variables = cms.PSet(
188 pt =
Var(
"pt", float,precision=8),
189 phi =
Var(
"phi", float,precision=8),
190 eta =
Var(
"eta", float,precision=8),
191 mass =
Var(
"mass", float,precision=8),
192 charge =
Var(
"charge", int),
193 status =
Var(
"status", int, doc=
"Hadronic tau decay mode. 0=OneProng0PiZero, 1=OneProng1PiZero, 2=OneProng2PiZero, 10=ThreeProng0PiZero, 11=ThreeProng1PiZero, 15=Other"),
194 genPartIdxMother =
Var(
"?numberOfMothers>0?motherRef(0).key():-1", int, doc=
"index of the mother particle"),
198 tausMCMatchLepTauForTable = cms.EDProducer(
"MCMatcher",
200 matched = cms.InputTag(
"finalGenParticles"),
201 mcPdgId = cms.vint32(11,13),
202 checkCharge = cms.bool(
False),
203 mcStatus = cms.vint32(),
204 maxDeltaR = cms.double(0.3),
205 maxDPtRel = cms.double(0.5),
206 resolveAmbiguities = cms.bool(
True),
207 resolveByMatchQuality = cms.bool(
True),
210 tausMCMatchHadTauForTable = cms.EDProducer(
"MCMatcher",
212 matched = cms.InputTag(
"genVisTaus"),
213 mcPdgId = cms.vint32(15),
214 checkCharge = cms.bool(
False),
215 mcStatus = cms.vint32(),
216 maxDeltaR = cms.double(0.3),
217 maxDPtRel = cms.double(1.),
218 resolveAmbiguities = cms.bool(
True),
219 resolveByMatchQuality = cms.bool(
True),
222 tauMCTable = cms.EDProducer(
"CandMCMatchTableProducer",
224 mcMap = cms.InputTag(
"tausMCMatchLepTauForTable"),
225 mcMapVisTau = cms.InputTag(
"tausMCMatchHadTauForTable"),
226 objName = tauTable.name,
227 objType = tauTable.name,
228 branchName = cms.string(
"genPart"),
229 docString = cms.string(
"MC matching to status==2 taus"),
233 tauSequence = cms.Sequence(patTauMVAIDsSeq + finalTaus)
234 _tauSequence80X = cms.Sequence(finalTaus)
235 run2_miniAOD_80XLegacy.toReplaceWith(tauSequence,_tauSequence80X)
236 tauTables = cms.Sequence(tauTable)
237 tauMC = cms.Sequence(tauGenJets + tauGenJetsSelectorAllHadrons + genVisTaus + genVisTauTable + tausMCMatchLepTauForTable + tausMCMatchHadTauForTable + tauMCTable)
def _tauId7WPMask(pattern, doc)
def _tauId5WPMask(pattern, doc)
def _tauId4WPMask(pattern, doc)
def Var(expr, valtype, compression=None, doc=None, mcOnly=False, precision=-1)
def _tauId3WPMask(pattern, doc)
def _tauId6WPMask(pattern, doc)
def _tauIdWPMask(pattern, choices, doc="")
Tables for final output and docs ##########################.
static std::string join(char **cmd)
def _tauId2WPMask(pattern, doc)
def _tauId8WPMask(pattern, doc)
Power< A, B >::type pow(const A &a, const B &b)