CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/EventFilter/StorageManager/interface/FragmentMonitorCollection.h

Go to the documentation of this file.
00001 // $Id: FragmentMonitorCollection.h,v 1.8 2011/03/07 15:31:32 mommsen Exp $
00003 
00004 #ifndef EventFilter_StorageManager_FragmentMonitorCollection_h
00005 #define EventFilter_StorageManager_FragmentMonitorCollection_h
00006 
00007 #include "xdata/Double.h"
00008 #include "xdata/UnsignedInteger32.h"
00009 
00010 #include "EventFilter/StorageManager/interface/MonitorCollection.h"
00011 
00012 
00013 namespace stor {
00014 
00023   class FragmentMonitorCollection : public MonitorCollection
00024   {
00025   private:
00026 
00027     MonitoredQuantity allFragmentSizes_;
00028     MonitoredQuantity allFragmentBandwidth_;
00029 
00030     MonitoredQuantity eventFragmentSizes_;
00031     MonitoredQuantity eventFragmentBandwidth_;
00032 
00033     MonitoredQuantity dqmEventFragmentSizes_;
00034     MonitoredQuantity dqmEventFragmentBandwidth_;
00035 
00036 
00037   public:
00038 
00039     struct FragmentStats
00040     {
00041       MonitoredQuantity::Stats allFragmentSizeStats;
00042       MonitoredQuantity::Stats allFragmentBandwidthStats;
00043 
00044       MonitoredQuantity::Stats eventFragmentSizeStats;
00045       MonitoredQuantity::Stats eventFragmentBandwidthStats;
00046 
00047       MonitoredQuantity::Stats dqmEventFragmentSizeStats;
00048       MonitoredQuantity::Stats dqmEventFragmentBandwidthStats;
00049     };
00050 
00051     explicit FragmentMonitorCollection(const utils::Duration_t& updateInterval);
00052 
00056     void addFragmentSample(const double bytecount);
00057 
00061     void addEventFragmentSample(const double bytecount);
00062 
00066      void addDQMEventFragmentSample(const double bytecount);
00067 
00068     const MonitoredQuantity& getAllFragmentSizeMQ() const {
00069       return allFragmentSizes_;
00070     }
00071     MonitoredQuantity& getAllFragmentSizeMQ() {
00072       return allFragmentSizes_;
00073     }
00074 
00075     const MonitoredQuantity& getEventFragmentSizeMQ() const {
00076       return eventFragmentSizes_;
00077     }
00078     MonitoredQuantity& getEventFragmentSizeMQ() {
00079       return eventFragmentSizes_;
00080     }
00081 
00082     const MonitoredQuantity& getDQMEventFragmentSizeMQ() const {
00083       return dqmEventFragmentSizes_;
00084     }
00085     MonitoredQuantity& getDQMEventFragmentSizeMQ() {
00086       return dqmEventFragmentSizes_;
00087     }
00088 
00089     const MonitoredQuantity& getAllFragmentBandwidthMQ() const {
00090       return allFragmentBandwidth_;
00091     }
00092     MonitoredQuantity& getAllFragmentBandwidthMQ() {
00093       return allFragmentBandwidth_;
00094     }
00095 
00096     const MonitoredQuantity& getEventFragmentBandwidthMQ() const {
00097       return eventFragmentBandwidth_;
00098     }
00099     MonitoredQuantity& getEventFragmentBandwidthMQ() {
00100       return eventFragmentBandwidth_;
00101     }
00102 
00103     const MonitoredQuantity& getDQMEventFragmentBandwidthMQ() const {
00104       return dqmEventFragmentBandwidth_;
00105     }
00106     MonitoredQuantity& getDQMEventFragmentBandwidthMQ() {
00107       return dqmEventFragmentBandwidth_;
00108     }
00109 
00113     void getStats(FragmentStats& stats) const;
00114 
00115 
00116   private:
00117 
00118     //Prevent copying of the FragmentMonitorCollection
00119     FragmentMonitorCollection(FragmentMonitorCollection const&);
00120     FragmentMonitorCollection& operator=(FragmentMonitorCollection const&);
00121 
00122     virtual void do_calculateStatistics();
00123     virtual void do_reset();
00124     virtual void do_appendInfoSpaceItems(InfoSpaceItems&);
00125     virtual void do_updateInfoSpaceItems();
00126 
00127     xdata::UnsignedInteger32 receivedFrames_; // Total I2O frames received
00128     xdata::Double instantBandwidth_;          // Recent bandwidth in MB/s
00129     xdata::Double instantRate_;               // Recent number of frames/s
00130 
00131   };
00132   
00133 } // namespace stor
00134 
00135 #endif // EventFilter_StorageManager_FragmentMonitorCollection_h 
00136 
00137