00001 #ifndef _SiStripInformationExtractor_h_ 00002 #define _SiStripInformationExtractor_h_ 00003 00004 #include "DQMServices/Core/interface/MonitorElement.h" 00005 #include "FWCore/Framework/interface/ESHandle.h" 00006 00007 00008 #include "xgi/Utils.h" 00009 #include "xgi/Method.h" 00010 00011 00012 #include <fstream> 00013 #include <sstream> 00014 #include <map> 00015 #include <vector> 00016 #include <string> 00017 #include <map> 00018 00019 class SiStripLayoutParser; 00020 class SiStripDetCabling; 00021 class DQMStore; 00022 class QReport; 00023 class SiStripHistoPlotter; 00024 00025 class SiStripInformationExtractor { 00026 00027 public: 00028 00029 SiStripInformationExtractor(); 00030 ~SiStripInformationExtractor(); 00031 00032 void getSingleModuleHistos(DQMStore * dqm_store, 00033 const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00034 void getGlobalHistos(DQMStore* dqm_store, 00035 const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00036 void getHistosFromPath(DQMStore * dqm_store, 00037 const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00038 void getTrackerMapHistos(DQMStore* dqm_store, 00039 const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00040 void getCondDBHistos(DQMStore* dqm_store, 00041 const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00042 00043 void readModuleAndHistoList(DQMStore* dqm_store,std::string& sname, const edm::ESHandle<SiStripDetCabling>& detcabling,xgi::Output * out); 00044 void plotHistosFromLayout(DQMStore * dqm_store); 00045 void readSummaryHistoTree(DQMStore* dqm_store, std::string& str_name, 00046 xgi::Output * out); 00047 void readAlarmTree(DQMStore* dqm_store, std::string& str_name, 00048 xgi::Output * out); 00049 00050 void readStatusMessage(DQMStore* dqm_store, std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00051 void readGlobalHistoList(DQMStore* dqm_store, std::string& dname, xgi::Output * out); 00052 void readLayoutNames(std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00053 00054 void readQTestSummary(DQMStore* dqm_store, std::string type, const edm::ESHandle<SiStripDetCabling>& detcabling, xgi::Output * out); 00055 00056 void readNonGeomHistoTree(DQMStore* dqm_store, std::string& fld_name, xgi::Output * out); 00057 00058 void createImages(DQMStore* dqm_store); 00059 void getIMGCImage(const std::multimap<std::string, std::string>& req_map, xgi::Output * out); 00060 00061 private: 00062 00063 void readConfiguration(); 00064 00065 00066 00067 void getItemList(const std::multimap<std::string, std::string>& req_map, 00068 std::string item_name, std::vector<std::string>& items); 00069 bool hasItem(const std::multimap<std::string, std::string>& req_map, 00070 std::string item_name); 00071 std::string getItemValue(const std::multimap<std::string, std::string>& req_map, 00072 std::string item_name); 00073 void printSummaryHistoList(DQMStore* dqm_store, std::ostringstream& str_val); 00074 void printAlarmList(DQMStore * dqm_store, std::ostringstream& str_val); 00075 void printNonGeomHistoList(DQMStore * dqm_store, std::ostringstream& str_val); 00076 00077 void selectImage(std::string& name, int status); 00078 void selectImage(std::string& name, std::vector<QReport*> & reports); 00079 void selectColor(std::string& col, int status); 00080 void selectColor(std::string& col, std::vector<QReport*>& reports); 00081 00082 00083 void setHTMLHeader(xgi::Output * out); 00084 void setXMLHeader(xgi::Output * out); 00085 void setPlainHeader(xgi::Output * out); 00086 00087 00088 SiStripLayoutParser* layoutParser_; 00089 00090 std::map<std::string, std::vector< std::string > > layoutMap; 00091 bool readReference_; 00092 00093 00094 SiStripHistoPlotter* histoPlotter_; 00095 }; 00096 #endif