175 algo, rParam, btagDiscriminators, btagInfos, patJets, labelName, postfix):
178 requiredTagInfos =
list(btagInfos)
179 for btagDiscr
in btagDiscriminators :
180 for requiredTagInfo
in supportedBtagDiscr[btagDiscr] :
181 tagInfoCovered =
False
182 for tagInfo
in requiredTagInfos :
183 if requiredTagInfo == tagInfo :
184 tagInfoCovered =
True
186 if not tagInfoCovered :
187 requiredTagInfos.append(requiredTagInfo)
189 if hasattr( process,
'candidateJetProbabilityComputer' ) ==
False :
191 process.load(
"RecoBTag.ImpactParameter.impactParameter_cff")
192 process.load(
"RecoBTag.SecondaryVertex.secondaryVertex_cff")
193 process.load(
"RecoBTag.SoftLepton.softLepton_cff")
194 process.load(
"RecoBTag.Combined.combinedMVA_cff")
195 process.load(
"RecoBTag.CTagging.cTagging_cff")
197 process.load(
"RecoBTag.ImpactParameter.impactParameter_EventSetup_cff")
198 process.load(
"RecoBTag.SecondaryVertex.secondaryVertex_EventSetup_cff")
199 process.load(
"RecoBTag.SoftLepton.softLepton_EventSetup_cff")
200 process.load(
"RecoBTag.Combined.combinedMVA_EventSetup_cff")
201 process.load(
"RecoBTag.CTagging.cTagging_EventSetup_cff")
208 acceptedTagInfos =
list()
209 for btagInfo
in requiredTagInfos:
210 if hasattr(btag,btagInfo):
211 if btagInfo ==
'pfImpactParameterTagInfos':
212 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterTagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
214 _btagInfo = getattr(process, btagInfo+labelName+postfix)
215 _btagInfo.explicitJTA = cms.bool(explicitJTA)
216 if btagInfo ==
'pfImpactParameterAK8TagInfos':
217 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterAK8TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
219 _btagInfo = getattr(process, btagInfo+labelName+postfix)
220 _btagInfo.explicitJTA = cms.bool(explicitJTA)
221 if btagInfo ==
'pfImpactParameterCA15TagInfos':
222 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterCA15TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
224 _btagInfo = getattr(process, btagInfo+labelName+postfix)
225 _btagInfo.explicitJTA = cms.bool(explicitJTA)
226 if btagInfo ==
'pfSecondaryVertexTagInfos':
227 setattr(process, btagInfo+labelName+postfix, btag.pfSecondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix)))
228 if btagInfo ==
'pfInclusiveSecondaryVertexFinderTagInfos':
229 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
230 if svClustering
or fatJets != cms.InputTag(
''):
231 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
232 if btagInfo ==
'pfInclusiveSecondaryVertexFinderAK8TagInfos':
233 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderAK8TagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterAK8TagInfos'+labelName+postfix), extSVCollection=svSource))
234 if svClustering
or fatJets != cms.InputTag(
''):
235 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
236 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCA15TagInfos':
237 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderCA15TagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterCA15TagInfos'+labelName+postfix), extSVCollection=svSource))
238 if svClustering
or fatJets != cms.InputTag(
''):
239 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
240 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCvsLTagInfos':
243 btagInfo+labelName+postfix,
244 btag.pfInclusiveSecondaryVertexFinderCvsLTagInfos.clone(
245 trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix),
246 extSVCollection=svSource
249 if svClustering
or fatJets != cms.InputTag(
''):
250 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
251 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCvsBTagInfos':
254 btagInfo+labelName+postfix,
255 btag.pfInclusiveSecondaryVertexFinderCvsBTagInfos.clone(
256 trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix),
257 extSVCollection=svSource
260 if svClustering
or fatJets != cms.InputTag(
''):
261 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
262 if btagInfo ==
'pfInclusiveSecondaryVertexFinderNegativeCvsLTagInfos':
265 btagInfo+labelName+postfix,
266 btag.pfInclusiveSecondaryVertexFinderNegativeCvsLTagInfos.clone(
267 trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix),
268 extSVCollection=svSource
271 if svClustering
or fatJets != cms.InputTag(
''):
272 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
273 if btagInfo ==
'pfSecondaryVertexNegativeTagInfos':
274 setattr(process, btagInfo+labelName+postfix, btag.pfSecondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix)))
275 if btagInfo ==
'pfInclusiveSecondaryVertexFinderNegativeTagInfos':
276 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
277 if svClustering
or fatJets != cms.InputTag(
''):
278 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
279 if btagInfo ==
'impactParameterTagInfos':
280 setattr(process, btagInfo+labelName+postfix, btag.impactParameterTagInfos.clone(jetTracks = cms.InputTag(
'jetTracksAssociatorAtVertex'+labelName+postfix), primaryVertex=pvSource))
281 if btagInfo ==
'secondaryVertexTagInfos':
282 setattr(process, btagInfo+labelName+postfix, btag.secondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
283 if btagInfo ==
'inclusiveSecondaryVertexFinderTagInfos':
284 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
285 if svClustering
or fatJets != cms.InputTag(
''):
286 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
287 if btagInfo ==
'inclusiveSecondaryVertexFinderFilteredTagInfos':
288 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
289 if svClustering
or fatJets != cms.InputTag(
''):
290 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
291 if btagInfo ==
'secondaryVertexNegativeTagInfos':
292 setattr(process, btagInfo+labelName+postfix, btag.secondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
293 if btagInfo ==
'inclusiveSecondaryVertexFinderNegativeTagInfos':
294 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
295 if svClustering
or fatJets != cms.InputTag(
''):
296 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
297 if btagInfo ==
'inclusiveSecondaryVertexFinderFilteredNegativeTagInfos':
298 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
299 if svClustering
or fatJets != cms.InputTag(
''):
300 setupSVClustering(getattr(process, btagInfo+labelName+postfix), svClustering, algo, rParam, fatJets, groomedFatJets)
301 if btagInfo ==
'softMuonTagInfos':
302 setattr(process, btagInfo+labelName+postfix, btag.softMuonTagInfos.clone(jets = jetSource, primaryVertex=pvSource))
303 if btagInfo ==
'softPFMuonsTagInfos':
304 setattr(process, btagInfo+labelName+postfix, btag.softPFMuonsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
305 if btagInfo ==
'softPFElectronsTagInfos':
306 setattr(process, btagInfo+labelName+postfix, btag.softPFElectronsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
307 acceptedTagInfos.append(btagInfo)
308 elif hasattr(toptag, btagInfo) :
309 acceptedTagInfos.append(btagInfo)
311 print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagInfo)
313 acceptedBtagDiscriminators =
list()
314 for btagDiscr
in btagDiscriminators :
315 if hasattr(btag,btagDiscr):
316 setattr(process, btagDiscr+labelName+postfix, getattr(btag, btagDiscr).
clone(tagInfos = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in supportedBtagDiscr[btagDiscr] ] )))
317 acceptedBtagDiscriminators.append(btagDiscr)
319 print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagDiscr)
321 patJets.tagInfoSources = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in acceptedTagInfos ] )
322 patJets.discriminatorSources = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in acceptedBtagDiscriminators ] )
323 if len(acceptedBtagDiscriminators) > 0 :
324 patJets.addBTagInfo =
True
327 if 'pfInclusiveSecondaryVertexFinderTagInfos' in acceptedTagInfos:
328 if not hasattr( process,
'inclusiveCandidateVertexing' ):
329 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
330 if 'inclusiveSecondaryVertexFinderTagInfos' in acceptedTagInfos:
331 if not hasattr( process,
'inclusiveVertexing' ):
332 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
333 if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
334 if not hasattr( process,
'inclusiveVertexing' ):
335 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
336 if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
337 if not hasattr( process,
'inclusiveSecondaryVerticesFiltered' ):
338 process.load(
'RecoBTag.SecondaryVertex.inclusiveSecondaryVerticesFiltered_cfi' )
339 if not hasattr( process,
'bToCharmDecayVertexMerged' ):
340 process.load(
'RecoBTag.SecondaryVertex.bToCharmDecayVertexMerger_cfi' )
341 if 'caTopTagInfos' in acceptedTagInfos :
342 patJets.addTagInfos =
True
343 if not hasattr( process,
'caTopTagInfos' )
and not hasattr( process,
'caTopTagInfosAK8' ):
344 process.load(
'RecoJets.JetProducers.caTopTaggers_cff' )