![]() |
![]() |
00001 #include "FWCore/Framework/interface/EventSetup.h" 00002 #include "FWCore/Framework/interface/Event.h" 00003 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00004 #include "HLTrigger/HLTcore/interface/HLTFilter.h" 00005 00006 class HLTDynamicPrescaler : public HLTFilter { 00007 public: 00008 explicit HLTDynamicPrescaler(edm::ParameterSet const & configuration); 00009 ~HLTDynamicPrescaler(); 00010 00011 bool filter(edm::Event & event, edm::EventSetup const & setup); 00012 void endJob(); 00013 00014 private: 00015 unsigned int m_count; // event counter 00016 unsigned int m_scale; // accept one event every m_scale, which will change dynamically 00017 }; 00018 00019 HLTDynamicPrescaler::HLTDynamicPrescaler(edm::ParameterSet const & configuration) : 00020 m_count(0), 00021 m_scale(1) { 00022 } 00023 00024 HLTDynamicPrescaler::~HLTDynamicPrescaler() { 00025 } 00026 00027 bool HLTDynamicPrescaler::filter(edm::Event & event, edm::EventSetup const & setup) { 00028 ++m_count; 00029 00030 if (m_count % m_scale) 00031 return false; 00032 00033 if (m_count == m_scale * 10) 00034 m_scale = m_count; 00035 00036 return true; 00037 } 00038 00039 void HLTDynamicPrescaler::endJob() { 00040 } 00041 00042 #include "FWCore/Framework/interface/MakerMacros.h" 00043 DEFINE_FWK_MODULE(HLTDynamicPrescaler);