CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/HLTrigger/special/src/HLTDynamicPrescaler.cc

Go to the documentation of this file.
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);