00001 #ifndef DQM_SiStripCommissioningSources_CommissioningTask_H
00002 #define DQM_SiStripCommissioningSources_CommissioningTask_H
00003
00004 #include "CondFormats/SiStripObjects/interface/FedChannelConnection.h"
00005 #include "DataFormats/Common/interface/DetSet.h"
00006 #include "DataFormats/SiStripCommon/interface/SiStripEventSummary.h"
00007 #include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
00008 #include "boost/cstdint.hpp"
00009 #include <vector>
00010 #include <string>
00011 #include <iomanip>
00012
00013 class TAxis;
00014 class DQMStore;
00015 class MonitorElement;
00016 namespace edm { class EventSetup; }
00017
00021 class CommissioningTask {
00022
00023 public:
00024
00025
00026
00027 CommissioningTask( DQMStore*,
00028 const FedChannelConnection&,
00029 const std::string& my_name );
00030
00031 virtual ~CommissioningTask();
00032
00033
00034
00037 class HistoSet {
00038 public:
00039 HistoSet();
00040 void histo( MonitorElement* );
00041 MonitorElement* histo();
00042 uint32_t bin( float value );
00043 std::vector<float> vNumOfEntries_;
00044 std::vector<float> vSumOfContents_;
00045 std::vector<double> vSumOfSquares_;
00046 bool isProfile_;
00047 private:
00048 MonitorElement* histo_;
00049 TAxis* axis_;
00050 };
00051
00052
00053
00055 void bookHistograms();
00056
00058 void fillHistograms( const SiStripEventSummary&,
00059 const edm::DetSet<SiStripRawDigi>& );
00060
00062 void fillHistograms( const SiStripEventSummary&,
00063 const uint16_t& fed_id,
00064 const std::map<uint16_t,float>& fed_ch );
00065
00067 void updateHistograms();
00068
00070 inline const uint32_t& fillCntr() const;
00071
00073 inline const uint32_t& updateFreq() const;
00074
00076 inline void updateFreq( const uint32_t& );
00077
00079 inline const std::string& myName() const;
00080
00082 inline void eventSetup( const edm::EventSetup* );
00083
00084 protected:
00085
00086
00087
00089 void updateHistoSet( HistoSet&, const uint32_t& bin, const float& value );
00090
00092 void updateHistoSet( HistoSet&, const uint32_t& bin );
00093
00095 void updateHistoSet( HistoSet&, const float& value );
00096
00098 void updateHistoSet( HistoSet& );
00099
00101 inline DQMStore* const dqm() const;
00102
00104 inline const FedChannelConnection& connection() const;
00105
00107 inline const uint32_t& fecKey() const;
00108
00110 inline const uint32_t& fedKey() const;
00111
00113 inline const edm::EventSetup* const eventSetup() const;
00114
00115 private:
00116
00117
00118
00119 CommissioningTask() {;}
00120
00121 virtual void book();
00122
00123 virtual void fill( const SiStripEventSummary&,
00124 const edm::DetSet<SiStripRawDigi>& );
00125
00126 virtual void fill( const SiStripEventSummary&,
00127 const uint16_t& fed_id,
00128 const std::map<uint16_t,float>& fed_ch );
00129
00130 virtual void update();
00131
00132
00133
00134 DQMStore* dqm_;
00135
00136 uint32_t updateFreq_;
00137
00138 uint32_t fillCntr_;
00139
00140 FedChannelConnection connection_;
00141
00142 uint32_t fedKey_;
00143
00144 uint32_t fecKey_;
00145
00146 bool booked_;
00147
00148 std::string myName_;
00149
00150 const edm::EventSetup* eventSetup_;
00151
00152 };
00153
00154
00155
00156 const uint32_t& CommissioningTask::fillCntr() const { return fillCntr_; }
00157 const uint32_t& CommissioningTask::updateFreq() const { return updateFreq_; }
00158 void CommissioningTask::updateFreq( const uint32_t& freq ) { updateFreq_ = freq; }
00159 const std::string& CommissioningTask::myName() const { return myName_; }
00160
00161 DQMStore* const CommissioningTask::dqm() const { return dqm_; }
00162 const FedChannelConnection& CommissioningTask::connection() const { return connection_; }
00163
00164 const uint32_t& CommissioningTask::fecKey() const { return fecKey_; }
00165 const uint32_t& CommissioningTask::fedKey() const { return fedKey_; }
00166
00167 void CommissioningTask::eventSetup( const edm::EventSetup* setup ) { eventSetup_ = setup; }
00168 const edm::EventSetup* const CommissioningTask::eventSetup() const { return eventSetup_; }
00169
00170 #endif // DQM_SiStripCommissioningSources_CommissioningTask_H