00001 #ifndef HLTHighLevel_h 00002 #define HLTHighLevel_h 00003 00017 // C++ headers 00018 #include <vector> 00019 #include <string> 00020 00021 // CMSSW headers 00022 #include "FWCore/Framework/interface/Event.h" 00023 #include "FWCore/Framework/interface/EDFilter.h" 00024 #include "FWCore/Framework/interface/CurrentProcessingContext.h" 00025 #include "FWCore/Framework/interface/ESWatcher.h" 00026 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00027 #include "FWCore/Common/interface/TriggerNames.h" 00028 #include "DataFormats/Provenance/interface/ParameterSetID.h" 00029 00030 // forward declarations 00031 namespace edm { 00032 class TriggerResults; 00033 } 00034 class AlCaRecoTriggerBitsRcd; 00035 00036 // 00037 // class declaration 00038 // 00039 00040 class HLTHighLevel : public edm::EDFilter { 00041 00042 public: 00043 00044 explicit HLTHighLevel(const edm::ParameterSet&); 00045 ~HLTHighLevel(); 00046 virtual bool filter(edm::Event&, const edm::EventSetup&); 00047 00049 std::vector<std::string> pathsFromSetup(const std::string &key, 00050 const edm::EventSetup &iSetup) const; 00051 private: 00053 void init(const edm::TriggerResults & results, 00054 const edm::EventSetup &iSetup, 00055 const edm::TriggerNames & triggerNames); 00056 00058 edm::InputTag inputTag_; 00059 00061 edm::ParameterSetID triggerNamesID_; 00062 00064 bool andOr_; 00065 00067 bool throw_; 00068 00070 std::string const & pathName() const; 00071 std::string const & moduleLabel() const; 00072 00074 const std::string eventSetupPathsKey_; 00076 edm::ESWatcher<AlCaRecoTriggerBitsRcd> *watchAlCaRecoTriggerBitsRcd_; 00077 00079 std::vector<std::string> HLTPatterns_; 00080 00082 std::vector<std::string> HLTPathsByName_; 00083 00085 std::vector<unsigned int> HLTPathsByIndex_; 00086 }; 00087 00088 #endif //HLTHighLevel_h