示例#1
0
def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer):
    """ 
    addAlgorithm takes the following parameters:
    ============================================
      process:            the CMSSW process object
      alg_size_type_corr: a string, e.g. kt4calol2l3
                          alg=kt4, size=0.4, type=calo, corr=l2l3
      reco:               indicates wether the jets should be reconstructed
	  prod                indicates if the output ntuple should be in EDM format
	                      using an EDProducer or in the JRA Ntuple format unsing
						  the EDAnalyzer
    it will then create a complete sequence within an executable path
    to kinematically select references and jets, select partons and match
    them to the references, match references and jets, and finally execute
    the JetResponseAnalyzer.
    """ 
    ## deterine algorithm, size, type (Calo|PF|Track|JPT), and wether to apply jec
    alg_size      = ''
    type          = ''
    alg_size_type = ''
    correctl1     = False
    correctl1off  = False
    correctl2l3   = False
    if (alg_size_type_corr.find('caloHLT') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('caloHLT')]
        type          = 'CaloHLT'
        alg_size_type = alg_size + 'caloHLT'
    elif (alg_size_type_corr.find('calo') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('calo')]
        type          = 'Calo'
        alg_size_type = alg_size + 'calo'
    elif (alg_size_type_corr.find('pfHLT') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('pfHLT')]
        type          = 'PFHLT'
        alg_size_type = alg_size + 'pfHLT'
    elif (alg_size_type_corr.find('pfchsHLT') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('pfchsHLT')]
        type          = 'PFchsHLT'
        alg_size_type = alg_size + 'pfchsHLT'
    elif (alg_size_type_corr.find('pfchs') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('pfchs')]
        type          = 'PFchs'
        alg_size_type = alg_size + 'pfchs'
    elif (alg_size_type_corr.find('pf') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('pf')]
        type          = 'PF'
        alg_size_type = alg_size + 'pf'
    elif (alg_size_type_corr.find('puppi') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('puppi')]
        type          = 'PUPPI'
        alg_size_type = alg_size + 'puppi'
    elif (alg_size_type_corr.find('tau') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('tau')]
        type          = 'TAU'
        if "tauHPSall" in alg_size_type_corr:
            alg_size_type = alg_size + 'tauHPSall'
        elif "tauTaNCall" in alg_size_type_corr:
            alg_size_type = alg_size + 'tauTaNCall'
        else:
            for tauDiscriminator in tauDiscriminatorDict:
                if tauDiscriminator in alg_size_type_corr: 
                    alg_size_type = tauDiscriminator
            for tauDecayMode in tauDecayModeDict:
                if tauDecayModeDict[tauDecayMode] != "" and \
                   tauDecayMode in alg_size_type_corr:
                    alg_size_type += tauDecayMode
                    
    elif (alg_size_type_corr.find('jpt') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('jpt')]
        type          = 'JPT'
        alg_size_type = alg_size + 'jpt'
    elif (alg_size_type_corr.find('trk') > 0) :
        alg_size      = alg_size_type_corr[0:alg_size_type_corr.find('trk')]
        type          = 'Track'
        alg_size_type = alg_size + 'trk'
    else:
        raise ValueError("Can't identify valid jet type: calo|caloHLT|pf|pfchs|pfHLT|jpt|trk|tau|puppi")
        
    if (alg_size_type_corr.find('l1') > 0):
        correctl1 = True
        if (alg_size_type_corr.find('l1off') > 0):
            correctl1off = True
        if not reco:
            raise ValueError("Can't subtract PU without reco!")
        
    if (alg_size_type_corr.find('l2l3') > 0):
        correctl2l3 = True


    ## check that alg_size_type_corr refers to valid jet configuration
    try:
        not reco and stdGenJetsDict.keys().index(alg_size_type)
        not reco and stdRecJetsDict.keys().index(alg_size_type)
    except ValueError:
        raise ValueError("Algorithm unavailable in standard format: " + alg_size_type)
    
    try:
        reco and genJetsDict.keys().index(alg_size_type)
        reco and recJetsDict.keys().index(alg_size_type)
    except ValueError:
        raise ValueError("Invalid jet configuration: " + alg_size_type)

    try:
        correctl2l3 and corrJetsDict.keys().index(alg_size_type_corr)
    except ValueError:
        raise ValueError("Invalid jet correction: " + alg_size_type_corr)
        
    ## reference (genjet) kinematic selection
    refPtEta = cms.EDFilter('EtaPtMinCandViewRefSelector',
        Defaults.RefPtEta,
        src = cms.InputTag(genJetsDict[alg_size_type][0])
    )
    if not reco:
        refPtEta.src = stdGenJetsDict[alg_size_type]
    setattr(process, alg_size_type + 'GenPtEta', refPtEta)

    ## reco jet kinematic selection
    jetPtEta = cms.EDFilter('EtaPtMinCandViewRefSelector',
        Defaults.JetPtEta,
        src = cms.InputTag(recJetsDict[alg_size_type][0])
    )
    if not reco:
        jetPtEta.src = stdRecJetsDict[alg_size_type]
    setattr(process, alg_size_type_corr + 'PtEta', jetPtEta)
    
    ## create the sequence
    sequence = cms.Sequence(refPtEta * jetPtEta)

	#############################
    jetPtEtaUncor = jetPtEta.clone()
    setattr(process, alg_size_type_corr + 'PtEtaUncor', jetPtEtaUncor)
    sequence = cms.Sequence(sequence * jetPtEtaUncor)
	#############################

    ## correct jets
    corrLabel = ''
    if correctl1 or correctl2l3:
        process.load('JetMETAnalysis.JetAnalyzers.JetCorrection_cff')
        (corrLabel, corrJets) = corrJetsDict[alg_size_type_corr]
        setattr(process, corrLabel, corrJets)
        sequence = cms.Sequence(corrJets * sequence)

    ## add pu density calculation
    if not correctl1 and not correctl1off:
        if type == 'CaloHLT': #added 02/15/2012
            process.kt6CaloJets = kt6CaloJets 
            process.kt6CaloJets.doRhoFastjet = True
            process.kt6CaloJets.Ghost_EtaMax = Defaults.kt6CaloJetParameters.Ghost_EtaMax.value()
            process.kt6CaloJets.Rho_EtaMax   = Defaults.kt6CaloJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6CaloJets * sequence)
        elif type == 'PFchsHLT':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
        elif type == 'PFHLT':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
    elif correctl1 and not correctl1off:  #modified 10/10/2011
        if type == 'CaloHLT': #added 02/15/2012
            process.kt6CaloJets = kt6CaloJets 
            process.kt6CaloJets.doRhoFastjet = True
            process.kt6CaloJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6CaloJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6CaloJets * sequence)
        elif type == 'Calo':
            process.kt6CaloJets = kt6CaloJets
            process.kt6CaloJets.doRhoFastjet = True
            process.kt6CaloJets.Ghost_EtaMax = Defaults.kt6CaloJetParameters.Ghost_EtaMax.value()
            process.kt6CaloJets.Rho_EtaMax   = Defaults.kt6CaloJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6CaloJets * sequence)
        elif type == 'PFchs':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
        elif type == 'PFHLT':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
        elif type == 'PFchsHLT':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
        elif type == 'PF':
            process.kt6PFJets = kt6PFJets
            process.kt6PFJets.doRhoFastjet = True
            process.kt6PFJets.Ghost_EtaMax = Defaults.kt6PFJetParameters.Ghost_EtaMax.value()
            process.kt6PFJets.Rho_EtaMax   = Defaults.kt6PFJetParameters.Rho_EtaMax
            sequence = cms.Sequence(process.kt6PFJets * sequence)
    
    ## reconstruct jets
    if type == 'JPT':
        process.load('Configuration.Geometry.GeometryIdeal_cff')
        process.load('Configuration.StandardSequences.MagneticField_cff')
#        process.load('JetMETAnalysis.JetAnalyzers.JPTReconstruction_cff')
#        if   alg_size == 'ak5':
#            sequence = cms.Sequence(process.ak5JPTJetsSequence * sequence)
#        elif alg_size == 'ak7':
#            sequence = cms.Sequence(process.ak7JPTJetsSequence * sequence)
#        else:
#            raise ValueError(alg_size + " not supported for JPT!")
        if correctl1 or correctl2l3:
            jetPtEta.src = corrLabel
    elif reco:
        process.load('Configuration.Geometry.GeometryIdeal_cff')
        process.load('Configuration.StandardSequences.MagneticField_cff')
        (recLabel, recJets) = recJetsDict[alg_size_type]
        if correctl1 or correctl2l3:
            corrJets.src = recLabel
            jetPtEta.src = corrLabel
        else:
            jetPtEta.src = recLabel
        if correctl1:
            recJets.doAreaFastjet = True #Should this be on for L1Offset
            recJets.Rho_EtaMax    = cms.double(4.4) # FIX LATER
        recJets.jetPtMin = cms.double(3.0)
        setattr(process, recLabel, recJets)
        sequence = cms.Sequence(recJets * sequence)
        if type == 'PUPPI':
            process.load('CommonTools.PileupAlgos.Puppi_cff')
            #puppi.candName = cms.InputTag("particleFlow")
            sequence = cms.Sequence(puppi * sequence)
        if type == 'Track':
            process.load('JetMETAnalysis.JetAnalyzers.TrackJetReconstruction_cff')
            sequence = cms.Sequence(trackJetSequence * sequence)
        elif type == 'TAU':
            from PhysicsTools.PatAlgos.tools.helpers import massSearchReplaceParam
            from RecoTauTag.TauTagTools.PFTauSelector_cfi import pfTauSelector
            #process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi")
            process.load("RecoTauTag/Configuration/RecoPFTauTag_cff")

            tauRecoSequence = cms.Sequence(process.recoTauCommonSequence)
            if "HPS" in alg_size_type:
                tauRecoSequence += process.recoTauClassicHPSSequence
            elif "TaNC" in alg_size_type:
                tauRecoSequence += process.recoTauHPSTancSequence

            (tauIsoDiscriminator, tauDecayMode) = tauDiscriminators_and_DecayModes[alg_size_type]

            if not (("HPSall" in alg_size_type or "TaNCall" in alg_size_type) and tauDecayMode == ""):
                tauDiscriminators = []
                if "HPS" in alg_size_type:
                    tauDiscriminators = [
                        "hpsPFTauDiscriminationByLooseElectronRejection",
                        "hpsPFTauDiscriminationByTightMuonRejection",
                        "hpsPFTauDiscriminationByDecayModeFinding",
                    ]
#                elif "TaNC" in alg_size_type:
#                    tauDiscriminators = [
#                        "hpsTancTausDiscriminationByLooseElectronRejection",
#                        "hpsTancTausDiscriminationByTightMuonRejection",
#                        "hpsTancTausDiscriminationByDecayModeSelection"
#                    ]
                tauDiscriminators.append(tauIsoDiscriminator)
#                                
                tauDiscriminatorConfigs = []
                for tauDiscriminator in tauDiscriminators:
                    tauDiscriminatorConfigs.append(
                        cms.PSet(
                            discriminator = cms.InputTag(tauDiscriminator),
                            selectionCut = cms.double(0.5)
                        )
                    )
#                
                selTauModule = pfTauSelector.clone(
                    src = cms.InputTag(recLabel),
                    discriminators = cms.VPSet(tauDiscriminatorConfigs)
                )
		# merge OneProg1Pi0 and OneProng2Pi0
                if (tauDecayMode == "OneProng1Pi0" or tauDecayMode == "OneProng2Pi0"):
                    setattr(selTauModule, "cut", cms.string("decayMode() == 1 || decayMode() == 2"))
		else:
                     if tauDecayMode != "*":
                          #setattr(selTauModule, "cut", cms.string("isDecayMode('%s')" % tauDecayMode))
                          setattr(selTauModule, "cut", cms.string("decayMode() == %s" % tauDecayMode))
                selTauModuleName = alg_size_type + "Selected"
                setattr(process, selTauModuleName, selTauModule)
                tauRecoSequence += getattr(process, selTauModuleName)
#                        
#                jetPtEta.src = cms.InputTag(selTauModuleName)
#            
            process.load("PhysicsTools.JetMCAlgos.TauGenJets_cfi")
#
            sequence = cms.Sequence(tauRecoSequence * process.tauGenJets * sequence)

    # reconstruct genjets
    if reco:
        (genLabel, genJets) = genJetsDict[alg_size_type]
        setattr(process, genLabel, genJets)
        
        sequence.replace(refPtEta, genJets * refPtEta)

        if type == 'Calo':
            setattr(process, 'genParticlesForJetsNoNu', genParticlesForJetsNoNu) #chaned to NoNu from NoMuNoNu
            sequence = cms.Sequence(genParticlesForJetsNoNu * sequence)
        else:
            setattr(process,'genParticlesForJetsNoNu',genParticlesForJetsNoNu)
            sequence = cms.Sequence(genParticlesForJetsNoNu * sequence)
        refPtEta.src = genJets.label()
        
    ## filter / map partons only if flavor information is requested
    if Defaults.JetResponseParameters.doFlavor.value() :
        setattr(process, 'partons', partons)
        if reco: #added 02/29/2012
            jetsTag = cms.InputTag(genJetsDict[alg_size_type][0])
        else:
            jetsTag = cms.InputTag(stdGenJetsDict[alg_size_type])
        genToParton = cms.EDProducer('JetPartonMatcher',
            jets = jetsTag,
            #jets = cms.InputTag(genJets.label()), #commented out on 02/29/2012 for line above.
            coneSizeToAssociate = cms.double(0.3),
            partons = cms.InputTag('partons')
        )
        setattr(process, alg_size_type + 'GenToParton', genToParton)
        sequence = cms.Sequence(sequence * partons * genToParton)
        
    ## reference to jet matching
    jetToRef = cms.EDProducer('MatchRecToGen',
        srcGen = cms.InputTag(refPtEta.label()),
        srcRec = cms.InputTag(jetPtEta.label())
    )
    setattr(process,alg_size_type_corr + 'JetToRef', jetToRef)
    sequence = cms.Sequence(sequence * jetToRef)

	##############################
    jetToUncorJet = cms.EDProducer('MatchRecToGen',
        srcGen = cms.InputTag(jetPtEtaUncor.label()),
        srcRec = cms.InputTag(jetPtEta.label())
    )
    setattr(process,alg_size_type_corr + 'JetToUncorJet', jetToUncorJet)
    sequence = cms.Sequence(sequence * jetToUncorJet)
	##############################
	
    ## jet response analyzer
    jraAnalyzer = 'JetResponseAnalyzer'
    jra = cms.EDAnalyzer(jraAnalyzer,
                         Defaults.JetResponseParameters,
                         srcRefToJetMap    = cms.InputTag(jetToRef.label(), 'gen2rec'),
                         srcRef            = cms.InputTag(refPtEta.label()),
                         jecLabel          = cms.string(''),
                         srcRhos           = cms.InputTag(''),
                         srcRho            = cms.InputTag(''),
                         srcRhoHLT         = cms.InputTag(''),
                         srcVtx            = cms.InputTag('offlinePrimaryVertices'),
                         srcJetToUncorJetMap = cms.InputTag(jetToUncorJet.label(), 'rec2gen'),
                         srcPFCandidates   = cms.InputTag('')
                        )
    if doProducer:
        jraAnalyzer = 'JetResponseAnalyzerProducer'
        jra = cms.EDProducer(jraAnalyzer,
                             Defaults.JetResponseParameters,
                             srcRefToJetMap    = cms.InputTag(jetToRef.label(), 'gen2rec'),
                             srcRef            = cms.InputTag(refPtEta.label()),
                             jecLabel          = cms.string(''),
                             srcRho            = cms.InputTag(''),
                             srcRhoHLT         = cms.InputTag(''),
                             srcVtx            = cms.InputTag('offlinePrimaryVertices'),
                             srcJetToUncorJetMap = cms.InputTag(jetToUncorJet.label(), 'rec2gen'),
                             srcPFCandidates   = cms.InputTag('')
                             )

    if type == 'CaloHLT':
        jra.srcRho = ak4CaloL1Fastjet.srcRho #added 02/15/2012
        jra.srcRhoHLT = ak5CaloHLTL1Fastjet.srcRho
    elif type == 'Calo':
        jra.srcRho = ak4CaloL1Fastjet.srcRho #added 10/14/2011
    elif type == 'PFchs':
        process.kt6PFchsJetsRhos = kt6PFJets.clone(src = 'pfNoPileUpJME',
                                                   doFastJetNonUniform = cms.bool(True),
                                                   puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5), 
                                                   puWidth = cms.double(.8),
                                                   nExclude = cms.uint32(2))
        sequence = cms.Sequence(process.kt6PFchsJetsRhos * sequence)
        jra.srcRhos = cms.InputTag("kt6PFchsJetsRhos", "rhos")
        jra.srcRho = cms.InputTag("fixedGridRhoFastjetAll")#ak4PFchsL1Fastjet.srcRho #added 10/14/2011
        jra.srcPFCandidates = cms.InputTag('pfNoPileUpJME')
    elif type == 'PFHLT':
        jra.srcRho = ak4PFL1Fastjet.srcRho #added 02/15/2012
        jra.srcRhoHLT = ak5PFHLTL1Fastjet.srcRho
    elif type == 'PFchsHLT':
        jra.srcRho = ak4PFchsL1Fastjet.srcRho #added 02/15/2012
        jra.srcRhoHLT = ak5PFchsHLTL1Fastjet.srcRho
    elif type == 'PF':
        process.kt6PFJetsRhos = kt6PFJets.clone(doFastJetNonUniform = cms.bool(True),
                                                puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5),
                                                puWidth = cms.double(.8), 
                                                nExclude = cms.uint32(2))
        sequence = cms.Sequence(process.kt6PFJetsRhos * sequence)
        jra.srcRhos = cms.InputTag("kt6PFJetsRhos", "rhos")
        jra.srcRho = ak4PFL1Fastjet.srcRho #added 10/14/2011
        jra.srcPFCandidates = cms.InputTag('particleFlow')
    elif type == 'PUPPI':
        process.kt6PFJetsRhos = kt6PFJets.clone(doFastJetNonUniform = cms.bool(True),
                                                puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5),
                                                puWidth = cms.double(.8), nExclude = cms.uint32(2))
        sequence = cms.Sequence(process.kt6PFJetsRhos * sequence)
        jra.srcRhos = cms.InputTag("kt6PFJetsRhos", "rhos")
        jra.srcRho = cms.InputTag("fixedGridRhoFastjetAll")#ak4PFchsL1Fastjet.srcRho
        jra.srcPFCandidates = cms.InputTag('puppi')
    elif type == 'JPT':
        jra.srcRho = ak4CaloL1Fastjet.srcRho

    if correctl1 or correctl2l3:
        jra.jecLabel = corrJets.correctors[0].replace("Corrector","")

    if Defaults.JetResponseParameters.doFlavor.value():
		jra.srcRefToPartonMap = cms.InputTag(genToParton.label())

    setattr(process,alg_size_type_corr,jra)
    sequence = cms.Sequence(sequence * jra)
    
    ## add chs to path is needed
    if type == 'PFchs':
        sequence = cms.Sequence(process.pfNoPileUpJMESequence * sequence)

    ## create the path and put in the sequence
    sequence = cms.Sequence(sequence)
    setattr(process, alg_size_type_corr + 'Sequence', sequence)
    path = cms.Path( sequence )
    setattr(process, alg_size_type_corr + 'Path', path)
    print alg_size_type_corr
示例#2
0
pfTauPileUpVertices = cms.EDFilter(
    "RecoTauPileUpVertexSelector",
    src=cms.InputTag("offlinePrimaryVertices"),
    minTrackSumPt=cms.double(5),
    filter=cms.bool(False),
)

pfTauTagInfoProducer = pfRecoTauTagInfoProducer.clone()
pfTauTagInfoProducer.PFCandidateProducer = ak5PFJets.src
pfTauTagInfoProducer.PFJetTracksAssociatorProducer = 'pfJetTracksAssociatorAtVertex'

pfTausPreSequence = cms.Sequence(pfJetTracksAssociatorAtVertex +
                                 pfTauPFJets08Region + pfTauPileUpVertices +
                                 pfTauTagInfoProducer)

# Select taus from given collection that pass cloned discriminants
pfTaus = pfTauSelector.clone()
pfTaus.src = cms.InputTag("pfTausProducer")
pfTaus.discriminators = cms.VPSet(
    cms.PSet(
        discriminator=cms.InputTag("pfTausDiscriminationByDecayModeFinding"),
        selectionCut=cms.double(0.5)),
    cms.PSet(discriminator=cms.InputTag("pfTausDiscriminationByIsolation"),
             selectionCut=cms.double(0.5)))

pfTausPtrs = cms.EDProducer("PFTauFwdPtrProducer", src=cms.InputTag("pfTaus"))

pfTauSequence = cms.Sequence(pfTausPreSequence + pfTausBaseSequence + pfTaus +
                             pfTausPtrs)
import FWCore.ParameterSet.Config as cms
from RecoTauTag.TauTagTools.PFTauSelector_cfi import pfTauSelector
hltPFTauSelector = pfTauSelector.clone(
    src=cms.InputTag("fixedConePFTauProducer"),
    discriminators=cms.VPSet(
        cms.PSet(discriminator=cms.InputTag(
            "fixedConePFTauDiscriminationByIsolation"),
                 selectionCut=cms.double(0.5))),
    cut=cms.string("pt > 0"),
)
示例#4
0

pfTauTagInfoProducer = pfRecoTauTagInfoProducer.clone()
pfTauTagInfoProducer.PFCandidateProducer = jetConfig.ak4PFJets.src
pfTauTagInfoProducer.PFJetTracksAssociatorProducer = 'pfJetTracksAssociatorAtVertex'


pfTausPreSequence = cms.Sequence(
    pfJetTracksAssociatorAtVertex +
    pfTauPFJets08Region +
    pfTauPileUpVertices +
    pfTauTagInfoProducer
)

# Select taus from given collection that pass cloned discriminants
pfTaus = pfTauSelector.clone()
pfTaus.src = cms.InputTag("pfTausProducer")
pfTaus.discriminators = cms.VPSet(
        cms.PSet( discriminator=cms.InputTag("pfTausDiscriminationByDecayModeFinding"),selectionCut=cms.double(0.5) ),
            )

pfTausPtrs = cms.EDProducer("PFTauFwdPtrProducer",
                             src=cms.InputTag("pfTaus")
                                                        )

pfTauSequence = cms.Sequence(
    pfTausPreSequence +
    pfTausBaseSequence +
    pfTaus +
    pfTausPtrs
 )
示例#5
0
import FWCore.ParameterSet.Config as cms
from RecoTauTag.TauTagTools.PFTauSelector_cfi import pfTauSelector
hltPFTauSelector = pfTauSelector.clone(
    src = cms.InputTag("fixedConePFTauProducer"),
    discriminators = cms.VPSet(
        cms.PSet( discriminator=cms.InputTag("fixedConePFTauDiscriminationByIsolation"),selectionCut=cms.double(0.5))
    ),
    cut = cms.string("pt > 0"),
)