00001 #ifndef HLTSmartSinglet_h 00002 #define HLTSmartSinglet_h 00003 00020 #include "HLTrigger/HLTcore/interface/HLTFilter.h" 00021 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" 00022 #include<vector> 00023 00024 #include "CommonTools/Utils/interface/StringCutObjectSelector.h" 00025 #include<string> 00026 00027 // 00028 // class declaration 00029 // 00030 00031 template<typename T> 00032 class HLTSmartSinglet : public HLTFilter { 00033 00034 public: 00035 00036 explicit HLTSmartSinglet(const edm::ParameterSet&); 00037 ~HLTSmartSinglet(); 00038 static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); 00039 virtual bool hltFilter(edm::Event&, const edm::EventSetup&, trigger::TriggerFilterObjectWithRefs & filterproduct); 00040 00041 private: 00042 edm::InputTag inputTag_; // input tag identifying product 00043 int triggerType_; // triggerType 00044 std::string cut_; // smart cut 00045 int min_N_; // number of objects passing cuts required 00046 00047 StringCutObjectSelector<T,true> select_; // smart selector 00048 }; 00049 00050 #endif //HLTSmartSinglet_h