174 algo, rParam, btagDiscriminators, btagInfos, patJets, labelName, postfix):
177 requiredTagInfos =
list(btagInfos)
178 for btagDiscr
in btagDiscriminators :
179 for requiredTagInfo
in supportedBtagDiscr[btagDiscr] :
180 tagInfoCovered =
False
181 for tagInfo
in requiredTagInfos :
182 if requiredTagInfo == tagInfo :
183 tagInfoCovered =
True
185 if not tagInfoCovered :
186 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.RecoCTagging_cff")
203 acceptedTagInfos =
list()
204 for btagInfo
in requiredTagInfos:
205 if hasattr(btag,btagInfo):
206 if btagInfo ==
'pfImpactParameterTagInfos':
207 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterTagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
209 _btagInfo = getattr(process, btagInfo+labelName+postfix)
210 _btagInfo.explicitJTA = cms.bool(explicitJTA)
211 if btagInfo ==
'pfImpactParameterAK8TagInfos':
212 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterAK8TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
214 _btagInfo = getattr(process, btagInfo+labelName+postfix)
215 _btagInfo.explicitJTA = cms.bool(explicitJTA)
216 if btagInfo ==
'pfImpactParameterCA15TagInfos':
217 setattr(process, btagInfo+labelName+postfix, btag.pfImpactParameterCA15TagInfos.clone(jets = jetSource,primaryVertex=pvSource,candidates=pfCandidates))
219 _btagInfo = getattr(process, btagInfo+labelName+postfix)
220 _btagInfo.explicitJTA = cms.bool(explicitJTA)
221 if btagInfo ==
'pfSecondaryVertexTagInfos':
222 setattr(process, btagInfo+labelName+postfix, btag.pfSecondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix)))
223 if btagInfo ==
'pfInclusiveSecondaryVertexFinderTagInfos':
224 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
226 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
227 if btagInfo ==
'pfInclusiveSecondaryVertexFinderAK8TagInfos':
228 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderAK8TagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterAK8TagInfos'+labelName+postfix), extSVCollection=svSource))
230 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
231 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCA15TagInfos':
232 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderCA15TagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterCA15TagInfos'+labelName+postfix), extSVCollection=svSource))
234 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
235 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCvsLTagInfos':
238 btagInfo+labelName+postfix,
239 btag.pfInclusiveSecondaryVertexFinderCvsLTagInfos.clone(
240 trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix),
241 extSVCollection=svSource
245 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
246 if btagInfo ==
'pfInclusiveSecondaryVertexFinderCvsBTagInfos':
249 btagInfo+labelName+postfix,
250 btag.pfInclusiveSecondaryVertexFinderCvsBTagInfos.clone(
251 trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix),
252 extSVCollection=svSource
256 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
257 if btagInfo ==
'pfSecondaryVertexNegativeTagInfos':
258 setattr(process, btagInfo+labelName+postfix, btag.pfSecondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix)))
259 if btagInfo ==
'pfInclusiveSecondaryVertexFinderNegativeTagInfos':
260 setattr(process, btagInfo+labelName+postfix, btag.pfInclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'pfImpactParameterTagInfos'+labelName+postfix), extSVCollection=svSource))
262 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
263 if btagInfo ==
'impactParameterTagInfos':
264 setattr(process, btagInfo+labelName+postfix, btag.impactParameterTagInfos.clone(jetTracks = cms.InputTag(
'jetTracksAssociatorAtVertex'+labelName+postfix), primaryVertex=pvSource))
265 if btagInfo ==
'secondaryVertexTagInfos':
266 setattr(process, btagInfo+labelName+postfix, btag.secondaryVertexTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
267 if btagInfo ==
'inclusiveSecondaryVertexFinderTagInfos':
268 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
270 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
271 if btagInfo ==
'inclusiveSecondaryVertexFinderFilteredTagInfos':
272 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
274 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
275 if btagInfo ==
'secondaryVertexNegativeTagInfos':
276 setattr(process, btagInfo+labelName+postfix, btag.secondaryVertexNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
277 if btagInfo ==
'inclusiveSecondaryVertexFinderNegativeTagInfos':
278 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
280 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
281 if btagInfo ==
'inclusiveSecondaryVertexFinderFilteredNegativeTagInfos':
282 setattr(process, btagInfo+labelName+postfix, btag.inclusiveSecondaryVertexFinderFilteredNegativeTagInfos.clone(trackIPTagInfos = cms.InputTag(
'impactParameterTagInfos'+labelName+postfix)))
284 setupSVClustering(getattr(process, btagInfo+labelName+postfix), algo, rParam, fatJets, groomedFatJets)
285 if btagInfo ==
'softMuonTagInfos':
286 setattr(process, btagInfo+labelName+postfix, btag.softMuonTagInfos.clone(jets = jetSource, primaryVertex=pvSource))
287 if btagInfo ==
'softPFMuonsTagInfos':
288 setattr(process, btagInfo+labelName+postfix, btag.softPFMuonsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, muons=muSource))
289 if btagInfo ==
'softPFElectronsTagInfos':
290 setattr(process, btagInfo+labelName+postfix, btag.softPFElectronsTagInfos.clone(jets = jetSource, primaryVertex=pvSource, electrons=elSource))
291 acceptedTagInfos.append(btagInfo)
292 elif hasattr(toptag, btagInfo) :
293 acceptedTagInfos.append(btagInfo)
295 print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagInfo)
297 acceptedBtagDiscriminators =
list()
298 for btagDiscr
in btagDiscriminators :
299 if hasattr(btag,btagDiscr):
300 setattr(process, btagDiscr+labelName+postfix, getattr(btag, btagDiscr).
clone(tagInfos = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in supportedBtagDiscr[btagDiscr] ] )))
301 acceptedBtagDiscriminators.append(btagDiscr)
303 print ' --> %s ignored, since not available via RecoBTag.Configuration.RecoBTag_cff!'%(btagDiscr)
305 patJets.tagInfoSources = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in acceptedTagInfos ] )
306 patJets.discriminatorSources = cms.VInputTag( *[ cms.InputTag(x+labelName+postfix)
for x
in acceptedBtagDiscriminators ] )
307 if len(acceptedBtagDiscriminators) > 0 :
308 patJets.addBTagInfo =
True
311 if 'pfInclusiveSecondaryVertexFinderTagInfos' in acceptedTagInfos:
312 if not hasattr( process,
'inclusiveCandidateVertexing' ):
313 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
314 if 'inclusiveSecondaryVertexFinderTagInfos' in acceptedTagInfos:
315 if not hasattr( process,
'inclusiveVertexing' ):
316 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
317 if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
318 if not hasattr( process,
'inclusiveVertexing' ):
319 process.load(
'RecoVertex.AdaptiveVertexFinder.inclusiveVertexing_cff' )
320 if 'inclusiveSecondaryVertexFinderFilteredTagInfos' in acceptedTagInfos:
321 if not hasattr( process,
'inclusiveSecondaryVerticesFiltered' ):
322 process.load(
'RecoBTag.SecondaryVertex.secondaryVertex_cff' )
323 if not hasattr( process,
'bToCharmDecayVertexMerged' ):
324 process.load(
'RecoBTag.SecondaryVertex.bToCharmDecayVertexMerger_cfi' )
325 if 'caTopTagInfos' in acceptedTagInfos :
326 patJets.addTagInfos =
True
327 if not hasattr( process,
'caTopTagInfos' )
and not hasattr( process,
'caTopTagInfosAK8' ):
328 process.load(
'RecoJets.JetProducers.caTopTaggers_cff' )