CMS 3D CMS Logo

CSCDQM_Dispatcher.h

Go to the documentation of this file.
00001 /*
00002  * =====================================================================================
00003  *
00004  *       Filename:  CSCDQM_Dispatcher.h
00005  *
00006  *    Description:  Framework frontend and Histogram Cache controller
00007  *
00008  *        Version:  1.0
00009  *        Created:  10/03/2008 10:26:04 AM
00010  *       Revision:  none
00011  *       Compiler:  gcc
00012  *
00013  *         Author:  Valdas Rapsevicius, valdas.rapsevicius@cern.ch
00014  *        Company:  CERN, CH
00015  *
00016  * =====================================================================================
00017  */
00018 
00019 #ifndef CSCDQM_Dispatcher_H
00020 #define CSCDQM_Dispatcher_H
00021 
00022 #include <typeinfo>
00023 
00024 #include <boost/thread.hpp>
00025 #include <boost/thread/recursive_mutex.hpp>
00026 
00027 #include "DQM/CSCMonitorModule/interface/CSCDQM_Configuration.h"
00028 #include "DQM/CSCMonitorModule/interface/CSCDQM_EventProcessor.h"
00029 #include "DQM/CSCMonitorModule/interface/CSCDQM_Collection.h"
00030 #include "DQM/CSCMonitorModule/interface/CSCDQM_Cache.h"
00031 #include "DQM/CSCMonitorModule/interface/CSCDQM_Logger.h"
00032 #include "DQM/CSCMonitorModule/interface/CSCDQM_Lock.h"
00033 
00034 namespace cscdqm {
00035 
00036   class EventProcessorMutex : public Lock {
00037 
00038     private:
00039 
00040       EventProcessor processor;
00041       Configuration *config;
00042 
00043     public:
00044 
00045       EventProcessorMutex(Configuration* const p_config) : processor(p_config) {
00046         config = p_config;
00047       }
00048       void updateFractionAndEfficiencyHistos();
00049 
00050   };
00051 
00056   class Dispatcher {
00057 
00058     public:
00059 
00060       Dispatcher(Configuration* const p_config, MonitorObjectProvider* const p_provider);
00061       ~Dispatcher() { threads.join_all(); }
00062 
00063       void init();
00064 
00065       void updateFractionAndEfficiencyHistos();
00066       const bool nextBookedCSC(unsigned int& n, unsigned int& crateId, unsigned int& dmbId) const;
00067 
00068       Collection* getCollection() { return &collection; }
00069        
00070       const bool getHisto(const HistoDef& histoD, MonitorObject*& me);
00071 
00072     private:
00073 
00074       void updateFractionAndEfficiencyHistosAuto();
00075 
00076       Configuration         *config;
00077       MonitorObjectProvider *provider;
00078       Collection            collection;
00079       EventProcessor        processor;
00080       Cache                 cache;
00081 
00082       EventProcessorMutex processorFract;
00083       boost::thread_group threads;
00084       boost::function<void ()> fnUpdate;
00085 
00086 #ifdef DQMLOCAL
00087 
00088     public:
00089 
00090       void processEvent(const char* data, const int32_t dataSize, const uint32_t errorStat, const int32_t nodeNumber);
00091 
00092 #endif      
00093 
00094 #ifdef DQMGLOBAL
00095 
00096     public:
00097 
00098       void processEvent(const edm::Event& e, const edm::InputTag& inputTag);
00099 
00100 #endif      
00101 
00102   };
00103 
00104 }
00105 
00106 #endif

Generated on Tue Jun 9 17:32:32 2009 for CMSSW by  doxygen 1.5.4