34 sprintf(html_footer,
"%s/html/etc/html/footer.html",gSystem->Getenv(
"HOME_WAT"));
35 if(gSystem->AccessPathName(html_footer)) {
37 cout <<
"Please do : " << endl;
38 cout <<
"cd $HOME_WAT" << endl;
39 cout <<
"make html_footer" << endl;
46 if(gSystem->Getenv(
"CWB_DOC_URL")!=NULL) {
47 cwb_doc_url=
TString(gSystem->Getenv(
"CWB_DOC_URL"));
52 if(gSystem->Getenv(
"SITE_CLUSTER")==NULL) {
53 cout <<
"Error : environment SITE_CLUSTER is not defined!!!" << endl;
exit(1);
55 site_cluster=
TString(gSystem->Getenv(
"SITE_CLUSTER"));
61 if(gSystem->Getenv(
"CWB_MERGE_LABEL")==NULL) {
62 cout <<
"Error : environment CWB_MERGE_LABEL is not defined!!!" << endl;
exit(1);
69 if(merge_label[0]!=
'M') {
70 cout <<
"Error : label " << merge_label.Data() <<
" has bad format (M#)" << endl;
exit(1);
74 if(!lcheck.IsDigit()) {
75 cout <<
"Error : label " << merge_label.Data() <<
" has bad format (M#)" << endl;
exit(1);
77 iversion=lcheck.Atoi();
84 cout <<
"Number of jobs in the merged lists : " << merge_jobList.size() << endl;
97 int estat = gSystem->GetPathInfo(condor_dag_file,&
id,&size,&
flags,&mt);
101 cout <<
"Number of jobs/factors in the condor lists : " << condor_jobList.size() <<
"/" <<
nfactor << endl;
105 if(merge_jobList.size()<
nfactor*condor_jobList.size()) {
106 sprintf(merge_job_list_str,
"<font color=\"red\">%d</font>",(
int)merge_jobList.size());
108 sprintf(merge_job_list_str,
"%d",(
int)merge_jobList.size());
112 if(condor_jobList.size()>0 && merge_jobList.size()>0) {
114 sprintf(condor_job_list_str,
"(%d*%d)",
nfactor,(
int)condor_jobList.size());
115 sprintf(percentage_job_list_str,
"<font color=\"blue\">%2.1f%%</font>",
116 100.*merge_jobList.size()/(
nfactor*condor_jobList.size()));
118 sprintf(condor_job_list_str,
"%d", (
int)condor_jobList.size());
119 sprintf(percentage_job_list_str,
"<font color=\"blue\">%2.1f%%</font>",
120 100.*merge_jobList.size()/condor_jobList.size());
123 sprintf(condor_job_list_str,
"0");
124 sprintf(percentage_job_list_str,
"<font color=\"blue\">%2.1f%%</font>",0.);
129 if(gSystem->Getenv(
"HOME_WAT")==NULL) {
130 cout <<
"Error : environment HOME_WAT is not defined!!!" << endl;
exit(1);
132 home_wat=
TString(gSystem->Getenv(
"HOME_WAT"));
135 if(gSystem->Getenv(
"CWB_NETC_FILE")==NULL) {
136 cout <<
"Error : environment CWB_NETC_FILE is not defined!!!" << endl;
exit(1);
138 cwb_netc_file=
TString(gSystem->Getenv(
"CWB_NETC_FILE"));
141 if(gSystem->Getenv(
"CWB_PARAMETERS_FILE")==NULL) {
142 cout <<
"Error : environment CWB_PARAMETERS_FILE is not defined!!!" << endl;
exit(1);
144 cwb_parameters_file=
TString(gSystem->Getenv(
"CWB_PARAMETERS_FILE"));
147 if(gSystem->Getenv(
"CWB_UPARAMETERS_FILE")==NULL) {
148 cout <<
"Error : environment CWB_UPARAMETERS_FILE is not defined!!!" << endl;
exit(1);
150 cwb_uparameters_file=
TString(gSystem->Getenv(
"CWB_UPARAMETERS_FILE"));
153 if(gSystem->Getenv(
"CWB_PPARAMETERS_FILE")==NULL) {
154 cout <<
"Error : environment CWB_PPARAMETERS_FILE is not defined!!!" << endl;
exit(1);
156 cwb_pparameters_file=
TString(gSystem->Getenv(
"CWB_PPARAMETERS_FILE"));
159 if(gSystem->Getenv(
"CWB_UPPARAMETERS_FILE")==NULL) {
160 cout <<
"Error : environment CWB_UPPARAMETERS_FILE is not defined!!!" << endl;
exit(1);
162 cwb_upparameters_file=
TString(gSystem->Getenv(
"CWB_UPPARAMETERS_FILE"));
171 TFile*
wfile =
new TFile(merged_file_name);
172 if(wfile==NULL) {cout <<
"Error : file " << merged_file_name.Data() <<
" not found" << endl;
exit(1);}
181 bool hwat=
false,hgit=
false,hcfg_branch=
false,hcfg_tag=
false,hcfg_diff=
false,hfrlib=
false,hroot=
false,hlal=
false;
182 for(
int j=0;
j<typeList->GetSize();
j++) {
183 TObjString* typeObjString = (TObjString*)typeList->At(
j);
184 TString typeName = typeObjString->GetString();
185 if(typeName==
"WATVERSION") hwat=
true;
186 if(typeName==
"GITVERSION") hgit=
true;
187 if(typeName==
"FRLIBVERSION") hfrlib=
true;
188 if(typeName==
"ROOTVERSION") hroot=
true;
189 if(typeName==
"LALVERSION") hlal=
true;
190 if(typeName==
"CWB_CONFIG_BRANCH") hcfg_branch=
true;
191 if(typeName==
"CWB_CONFIG_TAG") hcfg_tag=
true;
192 if(typeName==
"CWB_CONFIG_DIFF") hcfg_diff=
true;
195 for(
int i=0;
i<stageList->GetSize();
i++) {
196 TObjString* stageObjString = (TObjString*)stageList->At(
i);
197 TString stageName = stageObjString->GetString();
198 char* stage =
const_cast<char*
>(stageName.Data());
199 TString stageLabel = stageName; stageLabel.Resize(2); stageLabel+=
TString(
"-");
200 log = hwat ? hst->
GetHistory(stage,const_cast<char*>(
"WATVERSION")) :
"";
201 if(log!=
"") pr_wat_ver += log+
" ";
202 log = hgit ? hst->
GetHistory(stage,const_cast<char*>(
"GITVERSION")) :
"";
204 log = hfrlib ? hst->
GetHistory(stage,const_cast<char*>(
"FRLIBVERSION")) :
"";
206 log = hroot ? hst->
GetHistory(stage,const_cast<char*>(
"ROOTVERSION")) :
"";
208 log = hlal ? hst->
GetHistory(stage,const_cast<char*>(
"LALVERSION")) :
"";
210 log = hcfg_branch ? hst->
GetHistory(stage,const_cast<char*>(
"CWB_CONFIG_BRANCH")) :
"";
212 log = hcfg_tag ? hst->
GetHistory(stage,const_cast<char*>(
"CWB_CONFIG_TAG")) :
"";
214 log = hcfg_diff ? hst->
GetHistory(stage,const_cast<char*>(
"CWB_CONFIG_DIFF")) :
"";
217 if(stageName==
"CUTS") merge_cuts=hst->
GetHistory(stage,const_cast<char*>(
"PARAMETERS"));
219 if(pr_wat_ver==
"") pr_wat_ver=
"n/a";
234 sprintf(cmd,
"export CWB_BENCH_OPTS=");
235 sprintf(cmd,
"%s'--bench jet --plot hist %s --save %s/jet_benchmark.png';",cmd,max_opt,odir);
236 sprintf(cmd,
"%s root -n -l -b ",cmd);
237 sprintf(cmd,
"%s ${CWB_ROOTLOGON_FILE} ${CWB_PARAMETERS_FILE}",cmd);
238 sprintf(cmd,
"%s ${CWB_UPARAMETERS_FILE} ${CWB_EPARAMETERS_FILE}",cmd);
239 sprintf(cmd,
"%s ${CWB_MACROS}/cwb_condor_benchmark.C",cmd);
247 sprintf(cmd,
"export CWB_BENCH_OPTS=");
248 sprintf(cmd,
"%s'--bench mem --plot hist %s --save %s/mem_benchmark.png';",cmd,max_opt,odir);
249 sprintf(cmd,
"%s root -n -l -b ",cmd);
250 sprintf(cmd,
"%s ${CWB_ROOTLOGON_FILE} ${CWB_PARAMETERS_FILE}",cmd);
251 sprintf(cmd,
"%s ${CWB_UPARAMETERS_FILE} ${CWB_EPARAMETERS_FILE}",cmd);
252 sprintf(cmd,
"%s ${CWB_MACROS}/cwb_condor_benchmark.C",cmd);
259 for(
int i=0;
i<condor_jobList.size();
i++)
260 if(condor_jobList[
i]>max_jobs) max_jobs=condor_jobList[
i];
261 if(max_jobs==0) max_jobs = merge_jobList.size();
263 vector<TString> jobFile(max_jobs);
265 for (
int i=0;
i<condor_jobList.size();
i++)
267 for (
int i=0;
i<merge_jobList.size();
i++) {
268 if(merge_jobList[
i]>max_jobs) {
269 cout <<
"cwb_mkhtml_header.C - Error : number of jobs in merged list is > job in condor list" << endl;
273 jobFile[merge_jobList[
i]-1]=merge_jobFileList[
i];
279 out <<
"<html>" << endl;
281 sprintf(jstatus,
"<font color=\"black\">Job Status : </font>");
282 sprintf(jstatus,
"%s<font color=\"red\">%s</font>",jstatus,merge_job_list_str);
283 sprintf(jstatus,
"%s<font color=\"black\">/%s - </font>",jstatus,condor_job_list_str);
284 sprintf(jstatus,
"%s<font color=\"blue\">%s</font>",jstatus,percentage_job_list_str);
285 out <<
"<font style=\"font-weight:bold;\"><center><p><h2>" 286 << jstatus <<
"</h2><p><center></font>" << endl;
288 out <<
"<hr><br>" << endl;
289 out <<
"<table border=0 cellpadding=2 align=\"center\">" << endl;
290 out <<
"<tr align=\"center\">" << endl;
292 out <<
"<td><a href=\"jet_benchmark.png\"><img src=\"jet_benchmark.png\" width=450></a></td>" << endl;
294 out <<
"<td><a href=\"mem_benchmark.png\"><img src=\"mem_benchmark.png\" width=450></a></td>" << endl;
295 out <<
"</tr>" << endl;
296 out <<
"<tr align=\"center\">" << endl;
300 out <<
"<td>max hour = auto </td>" << endl;
304 out <<
"<td>max mem = auto </td>" << endl;
305 out <<
"</tr>" << endl;
306 out <<
"</table>" << endl;
308 out <<
"<hr><br>" << endl;
310 out <<
"<a><td><font color=\"black\"> List of unfinished jobs </font></td></a>" << endl;
311 out <<
"<br><br>" << endl;
312 out <<
"<table border=0 cellpadding=2 align=\"center\">" << endl;
327 out <<
"<tr align=\"center\">" << endl;
329 sprintf(oline,
"<td><font color=\"blue\">%d</font></td>",ib+1);
331 sprintf(oline,
"<td><font color=\"blue\">%d:%d</font></td>",ib+1,ie+1);
332 out << oline << endl;
335 out << oline << endl;
338 out << oline << endl;
339 sprintf(oline,
"<td align=\"left\"><font color=\"red\">%s</font></td>",
"unfinished/excluded");
340 out << oline << endl;
341 out <<
"</tr>" << endl;
345 out <<
"<tr align=\"center\">" << endl;
346 sprintf(oline,
"<td><font color=\"black\">%d</font></td>",
i+1);
347 out << oline << endl;
349 out << oline << endl;
350 TObjArray* token = jobFile[
i].Tokenize(
TString(
'_'));
351 TObjString* stoken =(TObjString*)token->At(token->GetEntries()-2);
352 jobFile[
i].ReplaceAll(
"_"+stoken->GetString()+
"_job",
"_*_job");
353 if(token)
delete token;
354 sprintf(oline,
"<td align=\"left\"><font color=\"blue\">%s</font></td>",jobFile[
i].Data());
355 out << oline << endl;
356 sprintf(oline,
"<td align=\"left\"><font color=\"red\">%s</font></td>",status.Data());
357 out << oline << endl;
358 out <<
"</tr>" << endl;
362 out <<
"</table>" << endl;
363 out <<
"</html>" << endl;
368 html.SetEtcDir(gSystem->ExpandPathName(
"$HOME_WAT/html/etc/html"));
369 html.SetProductName(
"CWB");
370 TString html_input_dir=
"$CWB_TOOLBOX:$CWB_GWAT:$CWB_HISTORY:$HOME_CWB";
371 html_input_dir+=
":$CWB_STFT:$CWB_BICO:$HOME_WAT/wat:$ROOTSYS/include";
372 html_input_dir+=
":"+
TString(odir);
373 html.SetInputDir(html_input_dir.Data());
380 fflush(stderr); fgetpos(stderr, &pos);
381 int fd = dup(fileno(stderr));
382 freopen(
"/dev/null",
"w", stderr);
386 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"cwb_parameters.C");
387 html.Convert(cwb_parameters_file.Data(),ftitle,
odir);
389 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"user_parameters.C");
390 html.Convert(cwb_uparameters_path.Data(),ftitle,
odir);
391 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"cwb_pparameters.C");
392 html.Convert(cwb_pparameters_file.Data(),ftitle,
odir);
394 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"user_pparameters.C");
395 html.Convert(cwb_upparameters_path.Data(),ftitle,
odir);
398 fflush(stderr); dup2(fd, fileno(stderr));
close(fd);
399 clearerr(stderr); fsetpos(stderr, &pos);
403 int rnID =
int(gRandom->Rndm(13)*1.e9);
404 UserGroup_t* _uinfo = gSystem->GetUserInfo();
405 TString _uname = _uinfo->fUser;
407 sprintf(tdir,
"/dev/shm/%s/%d",_uname.Data(),rnID);
411 char pluginName[1024]=
"";
412 sprintf(pluginName,
"%s/CWB_Plugin.C",tdir);
413 plugin.SaveSource(pluginName);
414 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"CWB_Plugin.C");
415 html.Convert(pluginName,ftitle,odir);
419 char configPluginName[1024]=
"";
420 sprintf(configPluginName,
"%s/CWB_configPlugin.C",tdir);
422 sprintf(ftitle,
"<h2 class=\"convert\" align=\"center\"> %s </h2>",
"CWB_configPlugin.C");
423 html.Convert(configPluginName,ftitle,odir);
430 cout <<
"make header file : " << ofile << endl;
432 if (!hout.good()) {cout <<
"Error Opening File : " << ofile << endl;
exit(1);}
434 TString Rho_LF,RhOut,RhAcor,svED,sPEN,sIFAR,sWIN,sHRSS,sHRSS_LF,sfLow,sfHigh,sfResample;
435 TString sdelta,sgamma,ssubnet,sbpp,snetRHO,snetCC;
436 TString sT_cor,sT_cut,sT_scc,spp_vetoes;
477 char pp_fbandcuts[1024]=
"";
488 spp_vetoes+=
"hveto ";
499 sprintf(s,
"%.2f",sRate); sfResample=
s;
506 double skyres = sphere_solid_angle/
npix;
507 sprintf(sSkyMapRes,
"healpix - order = %d - skyres = %2.3f (deg^2)",(
int)
healpix,skyres);
510 sprintf(sSkyMapRes,
"built-in - skyres = %2.3f (deg^2)",angle*angle);
515 sprintf(sTFres,
"%s %gx(1/%g)",sTFres,(sRate/2)/TMath::Power(2,
n),sRate/TMath::Power(2,
n));
521 char pp_framelib_ver[32];
sprintf(pp_framelib_ver,
"%f",FRAMELIB_VERSION);
522 const char *pp_root_ver = gROOT->GetVersion();
527 if(
GetGitInfos(
"diff",
"$CWB_CONFIG")!=
"") pp_cfg_ver +=
"/M";
531 in.getline(istring,1024);
532 if (!in.good())
break;
534 ostring.ReplaceAll(
"FLOW",sfLow);
535 ostring.ReplaceAll(
"FHIGH",sfHigh);
536 ostring.ReplaceAll(
"SKYMAPRES",sSkyMapRes);
537 ostring.ReplaceAll(
"TFRES",sTFres);
538 ostring.ReplaceAll(
"FRESAMPLE",sfResample);
539 ostring.ReplaceAll(
"RUN_LABEL",
RunLabel);
540 ostring.ReplaceAll(
"ST_COR",sT_cor);
541 ostring.ReplaceAll(
"RHO_LF",Rho_LF);
542 ostring.ReplaceAll(
"ST_CUT",sT_cut);
543 ostring.ReplaceAll(
"RH_OUT",RhOut);
544 ostring.ReplaceAll(
"RH_ACOR",RhAcor);
545 ostring.ReplaceAll(
"svED",svED);
546 ostring.ReplaceAll(
"ST_SCC",sT_scc);
547 ostring.ReplaceAll(
"sPEN",sPEN);
548 ostring.ReplaceAll(
"sIFAR",sIFAR);
549 ostring.ReplaceAll(
"sWIN",sWIN);
550 ostring.ReplaceAll(
"sHRSS_LF",sHRSS_LF);
551 ostring.ReplaceAll(
"sHRSS",sHRSS);
552 ostring.ReplaceAll(
"sPP_VETOES",spp_vetoes);
554 ostring.ReplaceAll(
"BUILD_DATE",
wat::Time(
"now").GetDateString());
555 ostring.ReplaceAll(
"PR_WAT_VER",pr_wat_ver);
560 ostring.ReplaceAll(
"PP_WAT_VER",
watversion(
's'));
561 ostring.ReplaceAll(
"PP_WAT_GIT",
watversion(
'r'));
562 ostring.ReplaceAll(
"PP_ROOT_VER",pp_root_ver);
563 ostring.ReplaceAll(
"PP_FRAMELIB_VER",pp_framelib_ver);
565 ostring.ReplaceAll(
"PP_CFG_VER",pp_cfg_ver);
569 ostring.ReplaceAll(
"PP_LAL_VER",
"");
571 ostring.ReplaceAll(
"PIPELINE",analysis);
572 ostring.ReplaceAll(
"SEARCH",ssearch);
573 ostring.ReplaceAll(
"SIMULATION",ssimulation);
574 ostring.ReplaceAll(
"DELTA",sdelta);
575 ostring.ReplaceAll(
"GAMMA",sgamma);
576 ostring.ReplaceAll(
"SUBNET",ssubnet);
577 ostring.ReplaceAll(
"BPP",sbpp);
578 ostring.ReplaceAll(
"PP_IRHO",spp_irho);
579 ostring.ReplaceAll(
"PP_INETCC",spp_inetcc);
580 ostring.ReplaceAll(
"NETRHO",snetRHO);
581 ostring.ReplaceAll(
"NETCC",snetCC);
582 ostring.ReplaceAll(
"PP_FREQ_BAND_CUTS",pp_fbandcuts);
583 ostring.ReplaceAll(
"MERGE_CUTS",merge_cuts);
584 ostring.ReplaceAll(
"TITLE",
title);
585 ostring.ReplaceAll(
"SITE_CLUSTER",site_cluster);
586 ostring.ReplaceAll(
"WORK_DIR",
work_dir);
588 ostring.ReplaceAll(
"JOB_MERGE",merge_job_list_str);
589 ostring.ReplaceAll(
"JOB_CONDOR",condor_job_list_str);
590 ostring.ReplaceAll(
"JOB_PERCENTAGE",percentage_job_list_str);
592 ostring.ReplaceAll(
"<!--CUT_SCC",
"");
593 ostring.ReplaceAll(
"CUT_SCC-->",
"");
596 ostring.ReplaceAll(
"<!--CUT_PEN",
"");
597 ostring.ReplaceAll(
"CUT_PEN-->",
"");
600 ostring.ReplaceAll(
"<!--CUT_IFAR",
"");
601 ostring.ReplaceAll(
"CUT_IFAR-->",
"");
604 ostring.ReplaceAll(
"<!--CUT_WIN",
"");
605 ostring.ReplaceAll(
"CUT_WIN-->",
"");
607 ostring.ReplaceAll(
"</html>",
"");
609 ostring.ReplaceAll(
"<!--CUT_NED",
"");
610 ostring.ReplaceAll(
"CUT_NED-->",
"");
612 if (spp_vetoes!=
"") {
613 ostring.ReplaceAll(
"<!--CUT_PP_VETOES",
"");
614 ostring.ReplaceAll(
"CUT_PP_VETOES-->",
"");
617 ostring.ReplaceAll(
"<!--CWB_PLUGIN",
"");
618 ostring.ReplaceAll(
"CWB_PLUGIN-->",
"");
621 ostring.ReplaceAll(
"<!--CWB_CONF_PLUGIN",
"");
622 ostring.ReplaceAll(
"CWB_CONF_PLUGIN-->",
"");
625 ostring.ReplaceAll(
"<!--CWB1G_PARAMETERS",
"");
626 ostring.ReplaceAll(
"CWB1G_PARAMETERS-->",
"");
628 ostring.ReplaceAll(
"<!--CWB2G_PARAMETERS",
"");
629 ostring.ReplaceAll(
"CWB2G_PARAMETERS-->",
"");
631 if(cwb_doc_url!=
"") {
632 ostring.ReplaceAll(
"<!--CWB_DOC_URL",
"");
633 ostring.ReplaceAll(
"CWB_DOC_URL-->",
"");
634 ostring.ReplaceAll(
"XCWB_DOC_URL",cwb_doc_url.Data());
636 ostring.ReplaceAll(
"</html>",
"");
637 hout << ostring.Data() << endl;
char condor_dag_file[1024]
char * watversion(char c='s')
char full_condor_dir[1024]
cout<< "baudline_FFL : "<< baudline_FFL<< endl;ofstream out;out.open(baudline_FFL, ios::out);if(!out.good()) {cout<< "Error Opening File : "<< baudline_FFL<< endl;exit(1);} ifstream in;in.open(frFiles[ifoID], ios::in);if(!in.good()) {cout<< "Error Opening File : "<< frFiles[ifoID]<< endl;exit(1);} TString pfile_path="";char istring[1024];while(1) { in > istring
char html_header_template[1024]
strcpy(RunLabel, RUN_LABEL)
char * GetHistory(char *StageName, char *Type)