00001 #ifndef HDQMSummary_h 00002 #define HDQMSummary_h 00003 00004 #include<vector> 00005 #include<map> 00006 #include<iostream> 00007 #include<boost/cstdint.hpp> 00008 #include "FWCore/Utilities/interface/Exception.h" 00009 00016 /* 00017 namespace hdqmsummary { 00018 enum CMSRegion { TRACKER = 0, 00019 TIB = 1, 00020 TIB_1 = 11, TIB_2 = 12, TIB_3 = 13, TIB_4 = 14, 00021 TOB = 2, 00022 TOB_1 = 21, TOB_2 = 22, TOB_3 = 23, TOB_4 = 24, TOB_5 = 25, TOB_6 = 26, 00023 TID = 3, 00024 TIDM = 31, 00025 TIDP = 32, 00026 TIDM_1 = 311, TIDM_2 = 312, TIDM_3 = 313, 00027 TIDP_1 = 321, TIDP_2 = 322, TIDP_3 = 323, 00028 TEC = 4, 00029 TECM = 41, 00030 TECP = 42, 00031 TECM_1 = 411, TECM_2 = 412, TECM_3 = 413, TECM_4 = 414, TECM_5 = 415, TECM_6 = 416, TECM_7 = 417, TECM_8 = 418, TECM_9 = 419, 00032 TECP_1 = 421, TECP_2 = 422, TECP_3 = 423, TECP_4 = 424, TECP_5 = 425, TECP_6 = 426, TECP_7 = 427, TECP_8 = 428, TECP_9 = 429 00033 }; 00034 } 00035 */ 00036 00037 class HDQMSummary { 00038 00039 public: 00040 00041 struct DetRegistry{ 00042 uint32_t detid; 00043 uint32_t ibegin; 00044 }; 00045 00046 class StrictWeakOrdering{ 00047 public: 00048 bool operator() (const DetRegistry& p,const uint32_t& i) const {return p.detid < i;} 00049 }; 00050 00051 00052 // SOME DEFINITIONS 00053 // 00054 typedef std::vector<float>::const_iterator ContainerIterator; 00055 typedef std::pair<ContainerIterator, ContainerIterator> Range; 00056 typedef std::vector<DetRegistry> Registry; 00057 typedef Registry::const_iterator RegistryIterator; 00058 typedef std::vector<float> InputVector; 00059 00060 00061 HDQMSummary(std::vector<std::string>& userDBContent); 00062 HDQMSummary(const HDQMSummary& input); 00063 HDQMSummary(){}; 00064 ~HDQMSummary(){}; 00065 00066 00067 ContainerIterator getDataVectorBegin() const {return v_sum_.begin(); } 00068 ContainerIterator getDataVectorEnd() const {return v_sum_.end(); } 00069 RegistryIterator getRegistryVectorBegin() const {return indexes_.begin();} 00070 RegistryIterator getRegistryVectorEnd() const {return indexes_.end(); } 00071 00072 // RETURNS POSITION OF DETID IN v_sum_ 00073 // 00074 const Range getRange(const uint32_t& detID) const; 00075 00076 00077 // RETURNS LIST OF DETIDS 00078 // 00079 std::vector<uint32_t> getDetIds() const; 00080 00081 00082 // INSERT SUMMARY OBJECTS... 00083 // 00084 bool put(const uint32_t& detID, InputVector &input, std::vector<std::string>& userContent ); 00085 void setObj(const uint32_t& detID, std::string elementName, float value); 00086 00087 00088 // RETRIEVE SUMMARY OBJECTS... 00089 // 00090 00091 // returns a vector of selected infos related to a given detId 00092 std::vector<float> getSummaryObj(uint32_t& detID, std::vector<std::string> list) const; 00093 00094 // returns a vector filled with "info elementName" for each detId 00095 // The order is SORTED according to the one used in getDetIds() ! 00096 std::vector<float> getSummaryObj(std::string elementName) const; 00097 00098 // returns the entire SummaryObj related to one detId 00099 std::vector<float> getSummaryObj(uint32_t& detID) const; 00100 00101 // returns everything, all SummaryObjects for all detIds (unsorted !) 00102 std::vector<float> getSummaryObj() const; 00103 00104 00105 // INLINE METHODS ABOUT RUN, TIME VALUE... 00106 // 00107 inline void setUserDBContent(std::vector<std::string> userDBContent) { userDBContent_ = userDBContent;} 00108 inline void setRunNr(int inputRunNr) { runNr_ = inputRunNr; } 00109 inline void setTimeValue(unsigned long long inputTimeValue){ timeValue_=inputTimeValue;} 00110 00111 inline unsigned long long getTimeValue() const { return timeValue_; } 00112 inline std::vector<std::string> getUserDBContent() const { return userDBContent_; } 00113 inline int getRunNr() const { return runNr_; } 00114 00115 00116 // PRINT METHOD... 00117 // 00118 void print(); 00119 00120 00121 // HDQMSummary MEMBERS... 00122 // 00123 std::vector<std::string> userDBContent_; 00124 std::vector<float> v_sum_; 00125 std::vector<DetRegistry> indexes_; 00126 00127 int runNr_; 00128 unsigned long long timeValue_; 00129 00130 00131 protected: 00132 00133 // RETURNS POSITION OF ELEMENTNAME IN userDBContent_ 00134 const short getPosition(std::string elementName) const; 00135 00136 00137 }; 00138 00139 00140 #endif