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"),
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
# 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)