예제 #1
0
        Producer=cms.InputTag('hpsTancTausDiscriminationByLeadingPionPtCut'),
        cut=cms.double(0.5)))

# Build the HPS selection discriminator
hpsTancTausDiscriminationByDecayModeSelection = combinatoricRecoTausHPSSelector.clone(
    PFTauProducer=cms.InputTag("hpsTancTaus"))

from RecoTauTag.Configuration.HPSPFTaus_cff import requireDecayMode,\
     hpsPFTauDiscriminationByVLooseIsolation,\
     hpsPFTauDiscriminationByLooseIsolation,\
     hpsPFTauDiscriminationByMediumIsolation,\
     hpsPFTauDiscriminationByTightIsolation

# Build the lead track and lepton discriminators
from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackFinding_cfi import pfRecoTauDiscriminationByLeadingTrackFinding
hpsTancTausDiscriminationByLeadingTrackFinding = pfRecoTauDiscriminationByLeadingTrackFinding.clone(
    PFTauProducer=cms.InputTag("hpsTancTaus"))

from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackPtCut_cfi import pfRecoTauDiscriminationByLeadingTrackPtCut
hpsTancTausDiscriminationByLeadingTrackPtCut = pfRecoTauDiscriminationByLeadingTrackPtCut.clone(
    PFTauProducer=cms.InputTag("hpsTancTaus"))

# Build lepton discriminants
from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstElectron_cfi import pfRecoTauDiscriminationAgainstElectron

hpsTancTausDiscriminationByLooseElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
    PFTauProducer=cms.InputTag("hpsTancTaus"),
    Prediscriminants=noPrediscriminants,
    PFElectronMVA_maxValue=cms.double(0.6))

hpsTancTausDiscriminationByMediumElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
    PFTauProducer=cms.InputTag("hpsTancTaus"),
예제 #2
0
def configureFakeRateProductionRECO(process, recoTauProducer = 'hpsPFTauProducer', frSet = 'ewkTauIdTaNCloose'):

    fr_and_efficiency_config = {}
    addConfigItems(fr_and_efficiency_config, fr_config)
    addConfigItems(fr_and_efficiency_config, eff_config)

    retVal = {}
    retVal["frConfig"] = {}

    process.tauFakeRates = cms.Sequence()

    for frType, frConfig in fr_and_efficiency_config[recoTauProducer][frSet].items():
        print "Making DB loader: %s fake rates for %s" % (frType, frSet)

        # copy the SQL-lite file to working area
        db_source_file = frConfig['db']
        local_db_file_name = frSet + frType + os.path.basename(db_source_file)
        local_db_copy_name = os.path.join(data_directory, local_db_file_name)
        if not os.path.exists(data_directory):
            os.makedirs(data_directory)
        do_copy = False
        if not os.path.exists(local_db_copy_name):
            do_copy = True
        else:
            if not os.path.exists(db_source_file):
                print "WARNING!!! Can't find source file %s" % db_source_file
                print "I can't check if it's outdated!"
            else:
                if os.stat(local_db_copy_name).st_mtime < os.stat(db_source_file).st_mtime:
                    print " DB file is outdated!"
                    do_copy = True
        if do_copy:
            print "Copying fakerate db:", db_source_file, \
                    "->", local_db_copy_name
            shutil.copy(db_source_file, local_db_copy_name)

        local_db_file_in_path = os.path.join(data_directory_fip, local_db_file_name)

        # create PoolDBESSource module
        dbLoaderModule = cms.ESSource("PoolDBESSource",
            CondDBSetup,
            timetype = cms.string('runnumber'),
            toGet = cms.VPSet(cms.PSet(
                record = cms.string('TauTagMVAComputerRcd'),
                tag = cms.string(frConfig['tag'])
            )),
            connect = cms.string('sqlite_fip:%s' % local_db_file_in_path),
            BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'),
            # Give it a unique name in the EventSetup
            appendToDataLabel = cms.string("%s_%s" % (frSet, frType)),
        )
        dbLoaderModuleName = frType + "LoadDB"
        setattr(process, dbLoaderModuleName, dbLoaderModule)

        # create "predisciminator" module
        preDiscrModule = pfRecoTauDiscriminationByLeadingTrackFinding.clone(
            PFTauProducer = cms.InputTag(recoTauProducer),
            Prediscriminants = noPrediscriminants,
        )
        preDiscrModuleName = frType + "PreDiscr"
        setattr(process, preDiscrModuleName, preDiscrModule)
	process.tauFakeRates += preDiscrModule

	# create "discriminator" module
        # extracting fake-rate from k-NN tree
        mvaDiscrModule = cms.EDProducer("RecoTauMVADiscriminator",
            PFTauProducer = cms.InputTag(recoTauProducer),
            Prediscriminants = cms.PSet(
                BooleanOperator = cms.string("and"),
                leadTrack = cms.PSet(
                    Producer = cms.InputTag(preDiscrModuleName),
                    cut = cms.double(0.5)
                )
            ),
            # point it to the correct DB instance
            dbLabel = cms.string("%s_%s" % (frSet, frType)),
            # use identical k-NN extraction for all tau decay modes
            mvas = cms.VPSet(),
            # set name of MVA computer container.
            #
            # NOTE: needs to match name defined in trainTauFakeRate_cfg
	    #
            defaultMVA = cms.string("train"),
            # store "raw" k-NN output in discriminator
            # (no remapping [-1,+1] --> [0,1] required)
            remapOutput = cms.bool(False)
        )
        mvaDiscrModuleName = frType + "MVAdiscr"
        setattr(process, mvaDiscrModuleName, mvaDiscrModule)
	process.tauFakeRates += mvaDiscrModule

        # convert fake-rate from discriminator to pat::LookupTableRecord format
        patLUTconverterModule = cms.EDProducer("PFTauDiscriminatorToPatEfficiencies",
            discSrc = cms.InputTag(mvaDiscrModuleName),
            tauSrc = cms.InputTag(recoTauProducer)
        )
        patLUTconverterModuleName = frType + "PATlutConverter"
	setattr(process, patLUTconverterModuleName, patLUTconverterModule)
        process.tauFakeRates += patLUTconverterModule

        retVal['frConfig'][frType] = patLUTconverterModuleName
        
    retVal['sequence'] = process.tauFakeRates

    return retVal
예제 #3
0
# Build the HPS selection discriminator
hpsTancTausDiscriminationByDecayModeSelection = combinatoricRecoTausHPSSelector.clone(
    PFTauProducer = cms.InputTag("hpsTancTaus")
    )

from RecoTauTag.Configuration.HPSPFTaus_cff import requireDecayMode,\
     hpsPFTauDiscriminationByVLooseIsolation,\
     hpsPFTauDiscriminationByLooseIsolation,\
     hpsPFTauDiscriminationByMediumIsolation,\
     hpsPFTauDiscriminationByTightIsolation

# Build the lead track and lepton discriminators
from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackFinding_cfi import pfRecoTauDiscriminationByLeadingTrackFinding
hpsTancTausDiscriminationByLeadingTrackFinding = pfRecoTauDiscriminationByLeadingTrackFinding.clone(
    PFTauProducer = cms.InputTag("hpsTancTaus")
    )

from RecoTauTag.RecoTau.PFRecoTauDiscriminationByLeadingTrackPtCut_cfi import pfRecoTauDiscriminationByLeadingTrackPtCut
hpsTancTausDiscriminationByLeadingTrackPtCut = pfRecoTauDiscriminationByLeadingTrackPtCut.clone(
    PFTauProducer = cms.InputTag("hpsTancTaus")
    )


# Build lepton discriminants
from RecoTauTag.RecoTau.PFRecoTauDiscriminationAgainstElectron_cfi import pfRecoTauDiscriminationAgainstElectron

hpsTancTausDiscriminationByLooseElectronRejection = pfRecoTauDiscriminationAgainstElectron.clone(
    PFTauProducer = cms.InputTag("hpsTancTaus"),
    Prediscriminants = noPrediscriminants,
    PFElectronMVA_maxValue = cms.double(0.6)