00001 /* 00002 * RecoTauRandomCleanerPlugin 00003 * 00004 * Author: Evan K. Friis, UC Davis 00005 * 00006 * A reco tau cleaner plugin that selects a *random* PFTau. 00007 * 00008 */ 00009 00010 #include <boost/functional/hash.hpp> 00011 #include "RecoTauTag/RecoTau/interface/RecoTauBuilderPlugins.h" 00012 00013 00014 namespace reco { namespace tau { 00015 00016 class RecoTauRandomCleanerPlugin : public RecoTauCleanerPlugin { 00017 public: 00018 RecoTauRandomCleanerPlugin(const edm::ParameterSet& pset); 00019 virtual ~RecoTauRandomCleanerPlugin(){} 00020 // Get discriminant value for a given tau Ref 00021 double operator()(const reco::PFTauRef&) const; 00022 private: 00023 unsigned int seed_; 00024 }; 00025 00026 RecoTauRandomCleanerPlugin::RecoTauRandomCleanerPlugin( 00027 const edm::ParameterSet& pset):RecoTauCleanerPlugin(pset) { 00028 seed_ = pset.exists("seed") ? pset.getParameter<unsigned int>("seed") : 1234; 00029 } 00030 00031 double RecoTauRandomCleanerPlugin::operator()(const reco::PFTauRef& tau) const { 00032 size_t output = seed_; 00033 boost::hash_combine(output, tau->pt()); 00034 boost::hash_combine(output, tau->eta()); 00035 return output; 00036 } 00037 00038 }} // end namespace reco::tautools 00039 00040 // Register our plugin 00041 #include "FWCore/Framework/interface/MakerMacros.h" 00042 DEFINE_EDM_PLUGIN(RecoTauCleanerPluginFactory, 00043 reco::tau::RecoTauRandomCleanerPlugin, 00044 "RecoTauRandomCleanerPlugin");