CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/DQM/L1TMonitor/interface/L1TRateHelper.h

Go to the documentation of this file.
00001 #ifndef L1TRateHelper_H
00002 #define L1TRateHelper_H
00003 
00007 #include <map>
00008 
00009 namespace L1TRateHelper {
00010 
00011       struct TRateStruct {
00012         TRateStruct() : m_orbitLow(-1), m_orbitHigh(-1), m_events(0) {}; 
00013         void add(int orbit) {
00014           if (orbit < m_orbitLow || m_orbitLow==-1) m_orbitLow=orbit;
00015           if (orbit > m_orbitHigh || m_orbitHigh==-1) m_orbitHigh=orbit;
00016           ++m_events;
00017         };
00018         int getTime() { return (m_orbitHigh+m_orbitLow)/2/m_timeBin; } 
00019         static  int getTimeForOrbit(const  int &orbit) {return orbit/m_timeBin; };
00020         static const   int m_timeBin = 11224; 
00021         int m_orbitLow; 
00022         int m_orbitHigh; 
00023         int m_events;
00024         // (1 s) / (25 ns)) / 3564 = 11 223,3446
00025         bool operator()(const   int &o1, const  int &o2) const {
00026           return getTimeForOrbit(o1) < getTimeForOrbit(o2); 
00027         };
00028 
00029       };
00030       
00031       class L1TRateHelper  {
00032       
00033         public:
00034           L1TRateHelper() : m_lastRemovedOrbit(-1), m_timeStart(-1) {};
00035             
00036          
00041           std::pair<int, int> removeAndGetRateForEarliestTime();
00042             
00044           void addOrbit(int orbit) { if (orbit > m_lastRemovedOrbit) m_rateMap[orbit].add(orbit);};
00045           
00047           int  getEarliestTime() {
00048             if (m_rateMap.begin() == m_rateMap.end() ) return -1;
00049             return m_rateMap.begin()->second.getTime();
00050           };
00051           
00053           int  getLastTime() {
00054             if (m_rateMap.begin() == m_rateMap.end() ) return -1;
00055             return m_rateMap.rbegin()->second.getTime();
00056           };
00057           
00059           int  getTimeForOrbit(int orbit) {return TRateStruct::getTimeForOrbit(orbit); };
00060                 
00061         private:
00062           typedef std::map <int, TRateStruct, TRateStruct > TRateMap;
00063           TRateMap m_rateMap;
00064           int m_lastRemovedOrbit;
00065           int m_timeStart; 
00066               
00067       
00068       
00069       };      
00070 }
00071 
00072 
00073 
00074 #endif