24 " Creating SiStripInformationExtractor " <<
"\n" ;
36 " Deleting SiStripInformationExtractor " <<
"\n" ;
45 std::string localPath = std::string(
"DQM/SiStripMonitorClient/data/sistrip_plot_layout.xml");
52 " Layouts correctly readout " <<
"\n" ;
54 " Problem in reading Layout " <<
"\n" ;
57 subdetVec.push_back(
"SiStrip/MechanicalView/TIB");
58 subdetVec.push_back(
"SiStrip/MechanicalView/TOB");
59 subdetVec.push_back(
"SiStrip/MechanicalView/TID/side_2");
60 subdetVec.push_back(
"SiStrip/MechanicalView/TID/side_1");
61 subdetVec.push_back(
"SiStrip/MechanicalView/TEC/side_2");
62 subdetVec.push_back(
"SiStrip/MechanicalView/TEC/side_1");
69 static std::string indent_str =
"";
71 std::string currDir = dqm_store->
pwd();
72 std::string
dname = currDir.substr(currDir.find_last_of(
"/")+1);
73 if (dname.find(
"module_") ==0)
return;
75 str_val <<
"<li><span class=\"folder\">" << dname <<
"</span>" << std::endl;
76 std::vector<MonitorElement *> meVec = dqm_store->
getContents(currDir);
77 std::vector<std::string> subDirVec = dqm_store->
getSubdirs();
78 if ( meVec.size()== 0 && subDirVec.size() == 0 ) {
79 str_val <<
"</li> "<< std::endl;
82 str_val <<
"<ul>" << std::endl;
83 for (std::vector<MonitorElement *>::const_iterator it = meVec.begin();
84 it != meVec.end(); it++) {
87 std::string
name = (*it)->getName();
88 str_val <<
"<li> <span class=\"file\"><a href=\"javascript:RequestHistos.DrawSummaryHistogram('"
90 <<
"')\">" << name <<
"</a></span></li>" << std::endl;
93 std::string mtag =
"Modules: ";
94 for (std::vector<std::string>::const_iterator ic = subDirVec.begin();
95 ic != subDirVec.end(); ic++) {
97 std::string titl = (*ic);
98 if (titl.find(
"module_") == 0) {
99 titl = titl.substr(titl.find(
"module_")+7);
105 if (mtag.size() > 10) {
107 str_val <<
"<li> <span class=\"file\"><a href=\"#\">" << mtag <<
"</a></span></li>" << std::endl;
109 str_val <<
"</ul> "<< std::endl;
110 str_val <<
"</li> "<< std::endl;
116 static std::string indent_str =
"";
118 std::string currDir = dqm_store->
pwd();
119 std::string
dname = currDir.substr(currDir.find_last_of(
"/")+1);
120 std::string image_name;
122 str_val <<
"<li><span class=\"folder\">"
123 << dname <<
"<img src=\""
124 << image_name <<
"\"></span>" << std::endl;
125 std::vector<std::string> subDirVec = dqm_store->
getSubdirs();
126 std::vector<MonitorElement *> meVec = dqm_store->
getContents(currDir);
128 if (subDirVec.size() == 0 && meVec.size() == 0) {
129 str_val <<
"</li> "<< std::endl;
132 str_val <<
"<ul>" << std::endl;
133 if (dname.find(
"module_") != std::string::npos) {
134 if (meVec.size() > 0) {
135 for (std::vector<MonitorElement *>::const_iterator it = meVec.begin();
136 it != meVec.end(); it++) {
139 std::vector<QReport*> q_reports = me->
getQReports();
140 if (q_reports.size() > 0) {
141 std::string image_name1;
143 str_val <<
"<li><span class=\"file\"><a href=\"javascript:RequestHistos.ReadAlarmStatus('"
144 << currDir <<
"')\">"<<me->
getName()
146 << image_name1 <<
"\">"
147 <<
"</span></li>" << std::endl;
152 for (std::vector<std::string>::const_iterator ic = subDirVec.begin();
153 ic != subDirVec.end(); ic++) {
158 str_val <<
"</ul> "<< std::endl;
159 str_val <<
"</li> "<< std::endl;
165 const std::multimap<std::string, std::string>& req_map,
xgi::Output *
out){
167 std::vector<std::string> hlist;
170 uint32_t detId = atoi(
getItemValue(req_map,
"ModId").c_str());
173 int height = atoi(
getItemValue(req_map,
"height").c_str());
175 std::string opt =
" ";
181 std::vector<MonitorElement*> all_mes = dqm_store->
getContents(path);
183 *out <<
"<HPathAndHNameList>" << std::endl;
184 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
186 for (std::vector<std::string>::const_iterator ih = hlist.begin();
187 ih != hlist.end(); ih++) {
188 for (std::vector<MonitorElement *>::const_iterator it = all_mes.begin();
189 it!= all_mes.end(); it++) {
192 std::string hname = me->
getName();
193 std::string
name = hname.substr(0, hname.find(
"__det__"));
195 std::string full_path = path +
"/" + hname;
197 *out <<
"<HName>" << hname <<
"</HName>" << std::endl;
201 *out <<
"</HPathAndHNameList>" << std::endl;
208 std::vector<std::string> hlist;
214 int height = atoi(
getItemValue(req_map,
"height").c_str());
216 std::string opt =
" ";
218 std::vector<MonitorElement *> all_mes = dqm_store->
getContents(path);
221 *out <<
"<HPathAndHNameList>" << std::endl;
222 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
224 for (std::vector<std::string>::const_iterator ih = hlist.begin();
225 ih != hlist.end(); ih++) {
226 for (std::vector<MonitorElement *>::const_iterator it = all_mes.begin();
227 it!= all_mes.end(); it++) {
230 std::string hname = me->
getName();
231 std::string
name = hname.substr(0, hname.find(
"__det__"));
233 std::string full_path = path +
"/" + hname;
235 *out <<
"<HName>" << name <<
"</HName>" << std::endl;
239 *out <<
"</HPathAndHNameList>" << std::endl;
248 if (path.size() == 0)
return;
251 int height = atoi(
getItemValue(req_map,
"height").c_str());
253 std::string opt =
" ";
256 *out <<
"<HPathAndHNameList>" << std::endl;
257 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
259 std::vector<MonitorElement*> all_mes = dqm_store->
getContents(path);
260 for(std::vector<MonitorElement*>::iterator it=all_mes.begin(); it!=all_mes.end(); it++){
264 std::string full_path = path +
"/" +
name;
266 *out <<
"<HName>" << name <<
"</HName>" << std::endl;
268 *out <<
"</HPathAndHNameList>" << std::endl;
279 unsigned int ival = 0;
280 std::string image_list =
"images/" + it->first +
".lis";
282 if (!image_file)
return;
285 for (std::vector<std::string>::iterator im = it->second.begin();
286 im != it->second.end(); im++) {
288 if (path_name.size() == 0)
continue;
291 std::ostringstream
fname, ftitle;
293 fname <<
"images/EmptyPlot.png";
294 ftitle <<
"EmptyPlot";
296 fname <<
"images/" << it->first <<
"_" <<ival <<
".png";
300 image_file <<
"["<<
"\"" << fname.str() <<
"\",\"" << path_name <<
"\"]";
301 if (ival != it->second.size()) image_file <<
","<< std::endl;
303 image_file <<
"]" << std::endl;
312 uint32_t detId = atoi(
getItemValue(req_map,
"ModId").c_str());
315 int height = atoi(
getItemValue(req_map,
"height").c_str());
317 std::string opt =
" ";
323 std::vector<MonitorElement*> all_mes = dqm_store->
getContents(path);
325 *out <<
"<HPathAndHNameList>" << std::endl;
326 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
327 for (std::vector<MonitorElement *>::const_iterator it = all_mes.begin();
328 it!= all_mes.end(); it++) {
331 std::string hname = me->
getName();
332 std::string full_path;
333 full_path = path +
"/" + hname;
335 *out <<
"<HName>" << hname <<
"</HName>" << std::endl;
337 *out <<
"</HPathAndHNameList>" << std::endl;
348 int height = atoi(
getItemValue(req_map,
"height").c_str());
350 std::string
path =
"";
352 if (
hasItem(req_map,std::string(
"ModId"))) {
359 if (sname.size() > 0) path =
"SiStrip/" + sname;
361 if (path.size() == 0) path =
"dummy_path";
364 *out <<
"<HPathAndHNameList>" << std::endl;
365 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
367 if (path ==
"dummy_path") {
368 *out <<
"<HName>" <<
"Dummy" <<
"</HName>" << std::endl;
372 std::vector<std::string> htypes;
375 std::vector<MonitorElement*> all_mes = dqm_store->
getContents(path);
376 for (std::vector<std::string>::const_iterator ih = htypes.begin();
377 ih!= htypes.end(); ih++) {
378 std::string
type = (*ih);
379 if (type.size() == 0)
continue;
380 for (std::vector<MonitorElement *>::const_iterator it = all_mes.begin();
381 it!= all_mes.end(); it++) {
384 std::string hname = me->
getName();
385 if (hname.find(type) != std::string::npos) {
390 if (plot_flag ==
false)
break;
393 for (std::vector<std::string>::const_iterator ih = htypes.begin();
394 ih != htypes.end(); ih++) {
395 if ((*ih).size() > 0) {
396 *out <<
"<HName>" << (*ih) <<
"</HName>" << std::endl;
400 *out <<
"</HPathAndHNameList>" << std::endl;
410 out->getHTTPResponseHeader().addHeader(
"Content-Type",
"image/png");
411 out->getHTTPResponseHeader().addHeader(
"Pragma",
"no-cache");
412 out->getHTTPResponseHeader().addHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate,max-age=0");
413 out->getHTTPResponseHeader().addHeader(
"Expires",
"Mon, 26 Jul 1997 05:00:00 GMT");
422 *out <<
"<LayoutAndTKMapList>" << std::endl;
424 *out <<
"<LayoutList>" << std::endl;
425 for (
std::map<std::string, std::vector< std::string > >::iterator it =
layoutMap.begin();
427 *out <<
"<LName>" << it->first <<
"</LName>" << std::endl;
429 *out <<
"</LayoutList>" << std::endl;
432 *out <<
"<TKMapOptionList>" << std::endl;
433 *out <<
"<TkMapOption>" <<
"QTestAlarm" <<
"</TkMapOption>" << std::endl;
435 for (std::vector<std::string>::const_iterator isubdet =
subdetVec.begin(); isubdet !=
subdetVec.end(); isubdet++) {
436 std::string
dname = (*isubdet);
437 if (!dqm_store->
dirExists(dname))
continue;
438 dqm_store->
cd(dname);
439 std::vector<std::string> subDirVec = dqm_store->
getSubdirs();
440 if (subDirVec.size() == 0)
continue;
441 for (std::vector<std::string>::const_iterator ilayer = subDirVec.begin(); ilayer != subDirVec.end(); ilayer++) {
442 std::string lname = (*ilayer);
443 if (lname.find(
"BadModuleList") != std::string::npos)
continue;
444 dqm_store->
cd(lname);
447 std::vector<std::string> meVec = dqm_store->
getMEs();
448 for (std::vector<std::string>::const_iterator it = meVec.begin();
449 it != meVec.end(); it++) {
450 std::string hname = (*it);
451 if (hname.find(
"TkHMap_") != std::string::npos) {
452 std::string
name = hname.substr(hname.find(
"TkHMap_")+7);
453 name = name.substr(0,name.find_first_of(
"_"));
454 *out <<
"<TkMapOption>" << name <<
"</TkMapOption>" << std::endl;
459 *out <<
"</TKMapOptionList>" << std::endl;
460 *out <<
"</LayoutAndTKMapList>" << std::endl;
469 if (!dqm_store->
dirExists(dname))
return;
471 dqm_store->
cd(dname);
472 std::vector<std::string> mids;
477 *out <<
"<ModuleAndHistoList>" << std::endl;
480 *out <<
"<ModuleList>" << std::endl;
482 for (std::vector<std::string>::const_iterator it=mids.begin(); it != mids.end(); it++){
483 std::string moduleId = (*it);
484 moduleId = moduleId.substr(moduleId.find(
"module_")+7);
485 *out <<
"<ModuleNum>" << moduleId <<
"</ModuleNum>" << std::endl;
486 if (aDetId == 0) aDetId = atoi(moduleId.c_str());
489 *out <<
"</ModuleList>" << std::endl;
491 *out <<
"<HistoList>" << std::endl;
493 std::vector<MonitorElement*> detector_mes = dqm_store->
getContents(mids[0]);
494 for (std::vector<MonitorElement *>::const_iterator it = detector_mes.begin();
495 it!= detector_mes.end(); it++) {
498 std::string hname_full = me->
getName();
499 std::string hname = hname_full.substr(0, hname_full.find(
"__det__"));
500 *out <<
"<Histo>" << hname <<
"</Histo>" << std::endl;
502 *out <<
"</HistoList>" << std::endl;
503 *out <<
"</ModuleAndHistoList>" << std::endl;
509 std::vector<std::string> hnames;
510 std::string
dname = str_name;
513 *out <<
"<GlobalHistoList>" << std::endl;
515 std::vector<MonitorElement*> meVec = dqm_store->
getContents(dname);
516 for (std::vector<MonitorElement *>::const_iterator it = meVec.begin();
517 it != meVec.end(); it++) {
520 *out <<
"<GHisto>" << (*it)->
getName() <<
"</GHisto>" << std::endl;
523 *out <<
"<GHisto>" <<
" Desired directory : " <<
"</GHisto>" << std::endl;
524 *out <<
"<GHisto>" << dname <<
"</GHisto>" << std::endl;
525 *out <<
"<GHisto>" <<
" does not exist!!!! " <<
"</GHisto>" << std::endl;
527 *out <<
"</GlobalHistoList>" << std::endl;
533 std::ostringstream sumtree;
534 std::string
dname =
"SiStrip/" + str_name;
536 dqm_store->
cd(dname);
537 sumtree <<
"<ul id=\"summary_histo_tree\" class=\"filetree\">" << std::endl;
539 sumtree <<
"</ul>" << std::endl;
541 sumtree <<
" Desired Directory : " << std::endl;
542 sumtree << dname << std::endl;
543 sumtree <<
" does not exist !!!! " << std::endl;
546 *out << sumtree.str();
554 std::ostringstream alarmtree;
555 std::string
dname =
"SiStrip/" + str_name;
557 dqm_store->
cd(dname);
558 alarmtree <<
"<ul id=\"alarm_tree\" class=\"filetree\">" << std::endl;
560 alarmtree <<
"</ul>" << std::endl;
562 alarmtree <<
"Desired Directory : " << std::endl;
563 alarmtree << dname << std::endl;
564 alarmtree <<
" does not exist !!!! " << std::endl;
567 *out << alarmtree.str();
575 for (std::multimap<std::string, std::string>::const_iterator it = req_map.begin();
576 it != req_map.end(); it++) {
578 if (it->first == item_name) {
579 items.push_back(it->second);
587 std::string item_name){
588 std::multimap<std::string,std::string>::const_iterator
pos = req_map.find(item_name);
589 if (pos != req_map.end())
return true;
596 std::string item_name){
597 std::multimap<std::string,std::string>::const_iterator
pos = req_map.find(item_name);
598 std::string
value =
" ";
599 if (pos != req_map.end()) {
612 else col =
"#0000ff";
620 for (std::vector<QReport*>::const_iterator it = reports.begin(); it != reports.end();
622 status = (*it)->getStatus();
623 if (status > istat) istat =
status;
635 else name=
"images/LI_blue.gif";
643 for (std::vector<QReport*>::const_iterator it = reports.begin(); it != reports.end();
645 status = (*it)->getStatus();
646 if (status > istat) istat =
status;
658 int height = atoi(
getItemValue(req_map,
"height").c_str());
660 std::string opt =
" ";
662 std::ostringstream test_status;
665 *out <<
"<StatusAndPath>" << std::endl;
666 *out <<
"<PathList>" << std::endl;
667 if (path.size() == 0) {
668 *out <<
"<HPath>" <<
"NONE" <<
"</HPath>" << std::endl;
669 test_status <<
" ME Does not exist ! " << std::endl;
671 std::vector<MonitorElement*> all_mes = dqm_store->
getContents(path);
672 *out <<
"<HPath>" << path <<
"</HPath>" << std::endl;
673 for(std::vector<MonitorElement*>::iterator it=all_mes.begin(); it!=all_mes.end(); it++){
678 std::vector<QReport*> q_reports = me->
getQReports();
679 if (q_reports.size() == 0 && name.find(
"StripQualityFromCondDB") == std::string::npos)
continue;
680 std::string full_path = path +
"/" +
name;
683 if (q_reports.size() != 0) {
684 test_status <<
" QTest Status for " << name <<
" : " << std::endl;
685 test_status <<
" ======================================================== " << std::endl;
686 for (std::vector<QReport*>::const_iterator it = q_reports.begin(); it != q_reports.end();
688 int status = (*it)->getStatus();
693 std::string mess_str = (*it)->getMessage();
694 test_status <<
" <br/>";
695 mess_str = mess_str.substr(mess_str.find(
" Test")+5);
696 test_status <<
" QTest Name : " << mess_str.substr(0, mess_str.find(
")")+1) << std::endl;
697 test_status <<
" <br/>";
698 test_status <<
" QTest Detail : " << mess_str.substr(mess_str.find(
")")+2) << std::endl;
700 test_status <<
" ======================================================== " << std::endl;
702 *out <<
"<HName>" << name <<
"</HName>" << std::endl;
705 *out <<
"</PathList>" << std::endl;
706 *out <<
"<StatusList>" << std::endl;
707 *out <<
"<Status>" << test_status.str() <<
"</Status>" << std::endl;
708 *out <<
"</StatusList>" << std::endl;
709 *out <<
"</StatusAndPath>" << std::endl;
716 int nDetsWithError = 0;
718 std::ostringstream qtest_summary, lite_summary;
722 for (std::vector<std::string>::const_iterator isubdet =
subdetVec.begin(); isubdet !=
subdetVec.end(); isubdet++) {
723 std::string
dname = (*isubdet);
724 std::string bad_module_folder = dname +
"/" +
"BadModuleList";
725 if (!dqm_store->
dirExists(dname))
continue;
727 dqm_store->
cd(dname);
728 std::vector<std::string> mids;
731 int ndet = mids.size();
734 dqm_store->
cd(dname);
736 qtest_summary << dname.substr(dname.find(
"View/")+5) <<
" : <br/>";
737 qtest_summary <<
"=============================="<<
"<br/>";
738 if (dqm_store->
dirExists(bad_module_folder)) {
740 std::vector<MonitorElement *> meVec = dqm_store->
getContents(bad_module_folder);
741 for (std::vector<MonitorElement *>::const_iterator it = meVec.begin();
742 it != meVec.end(); it++) {
744 int flag = (*it)->getIntValue();
747 qtest_summary <<
" Module Id " << (*it)->getName() <<
" has "<< message <<
"<br/>";
750 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
751 qtest_summary <<
" Detectors : Total "<< ndet
752 <<
" with Error " << errdet <<
"<br/>";
753 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
754 nDetsWithError += errdet;
757 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
758 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
759 qtest_summary <<
" Total Detectors " << nDetsTotal;
760 qtest_summary <<
" # of Detectors with Error " << nDetsWithError <<
"<br/>";
761 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
762 qtest_summary <<
"--------------------------------------------------------------------"<<
"<br/>";
764 lite_summary <<
" Total Detectors " << nDetsTotal <<
"<br/>";
765 lite_summary <<
" # of Detectors with Error " << nDetsWithError <<
"<br/>";
768 if (type ==
"Lite") *out << lite_summary.str();
770 *out << qtest_summary.str();
785 out->getHTTPResponseHeader().addHeader(
"Content-Type",
"text/html");
786 out->getHTTPResponseHeader().addHeader(
"Pragma",
"no-cache");
787 out->getHTTPResponseHeader().addHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate,max-age=0");
788 out->getHTTPResponseHeader().addHeader(
"Expires",
"Mon, 26 Jul 1997 05:00:00 GMT");
794 out->getHTTPResponseHeader().addHeader(
"Content-Type",
"text/xml");
795 out->getHTTPResponseHeader().addHeader(
"Pragma",
"no-cache");
796 out->getHTTPResponseHeader().addHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate,max-age=0");
797 out->getHTTPResponseHeader().addHeader(
"Expires",
"Mon, 26 Jul 1997 05:00:00 GMT");
798 *out <<
"<?xml version=\"1.0\" ?>" << std::endl;
805 out->getHTTPResponseHeader().addHeader(
"Content-Type",
"text/plain");
806 out->getHTTPResponseHeader().addHeader(
"Pragma",
"no-cache");
807 out->getHTTPResponseHeader().addHeader(
"Cache-Control",
"no-store, no-cache, must-revalidate,max-age=0");
808 out->getHTTPResponseHeader().addHeader(
"Expires",
"Mon, 26 Jul 1997 05:00:00 GMT");
815 std::ostringstream sumtree;
816 std::string
dname =
"SiStrip/" + fld_name;
818 dqm_store->
cd(dname);
819 sumtree <<
"<ul id=\"non_geo_tree\" class=\"filetree\">" << std::endl;
821 sumtree <<
"</ul>" << std::endl;
823 sumtree <<
" Desired Directory : " << std::endl;
824 sumtree << dname << std::endl;
825 sumtree <<
" does not exist !!!! " << std::endl;
828 *out << sumtree.str();
835 static std::string indent_str =
"";
837 std::string currDir = dqm_store->
pwd();
838 std::string
dname = currDir.substr(currDir.find_last_of(
"/")+1);
839 str_val <<
"<li><span class=\"folder\">" << dname <<
"</span>" << std::endl;
840 std::vector<MonitorElement *> meVec = dqm_store->
getContents(currDir);
841 std::vector<std::string> subDirVec = dqm_store->
getSubdirs();
842 if ( meVec.size()== 0 && subDirVec.size() == 0 ) {
843 str_val <<
"</li> "<< std::endl;
846 str_val <<
"<ul>" << std::endl;
847 for (std::vector<MonitorElement *>::const_iterator it = meVec.begin();
848 it != meVec.end(); it++) {
851 std::string
name = (*it)->getName();
852 str_val <<
"<li> <span class=\"file\"><a href=\"javascript:RequestHistos.DrawSummaryHistogram('"
854 <<
"')\">" << name <<
"</a></span></li>" << std::endl;
856 for (std::vector<std::string>::const_iterator ic = subDirVec.begin();
857 ic != subDirVec.end(); ic++) {
862 str_val <<
"</ul> "<< std::endl;
863 str_val <<
"</li> "<< std::endl;
const std::string & getName(void) const
get name of ME
int getStatus(const std::string &path="") const
std::vector< std::string > getSubdirs(void) const
void createPlots(DQMStore *dqm_store)
void getDocument(std::string configFile, bool UseDB=false)
Methor that parses the xml file configFile.
void cd(void)
go to top directory (ie. root)
void setNewCondDBPlot(std::string &path, std::string &option, int width, int height)
static void getBadModuleStatus(uint16_t flag, std::string &message)
static void split(const std::string &str, std::vector< std::string > &tokens, const std::string &delimiters=" ")
void createStaticPlot(MonitorElement *me, const std::string &file_name)
void getNamedImageBuffer(const std::string &path, std::string &image)
void createCondDBPlots(DQMStore *dqm_store)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
std::vector< MonitorElement * > getContents(const std::string &path) const
bool dirExists(const std::string &path) const
true if directory exists
void getFolderName(int32_t rawdetid, std::string &lokal_folder)
std::vector< QReport * > getQReports(void) const
get map of QReports
std::vector< std::string > getMEs(void) const
get list of (non-dir) MEs of current directory
void goUp(void)
equivalent to "cd .."
bool getAllLayouts(std::map< std::string, std::vector< std::string > > &me_names)
static const int STATUS_OK
void setNewPlot(std::string &path, std::string &option, int width, int height)
static void getModuleFolderList(DQMStore *dqm_store, std::vector< std::string > &m_ids)
const std::string & pwd(void) const