Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cwb_mkhtml_sim.C
Go to the documentation of this file.
1 // make the html simulation report : used by the cwb_report command
2 {
3 
4  #define NMDC_MAX 64
5 
6  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_ROOTLOGON_FILE"));
7  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_PARAMETERS_FILE"));
8  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_UPARAMETERS_FILE"));
9  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_PPARAMETERS_FILE"));
10  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_UPPARAMETERS_FILE"));
11  CWB::Toolbox::checkFile(gSystem->Getenv("CWB_EPPARAMETERS_FILE"));
12 
13  // initialize the ifo name (takes into account the non built-in detectors)
15  for(int n=0;n<nIFO;n++) {
16  if(strlen(ifo[n])!=0) strcpy(IFO[n],ifo[n]); else strcpy(IFO[n],detParms[n].name);
17  }
18 
19  // If fad is enable & simulation==4 & multi=true
20  // FAD multi plot for each mdc set are substituted in the sim report
21  // page to the eff_freq plots
22  TString pp_fad_multi = "FALSE";
23  if(pp_fad!="" && simulation==4) {
24  // get multi parameter from pp_fad
25  pp_fad_multi = CWB::Toolbox::getParameter(pp_fad,"--multi");
26  if(pp_fad_multi=="") pp_fad_multi="false";
27  pp_fad_multi.ToUpper();
28  }
29 
30  // read injection file types
31  char imdc_set[NMDC_MAX][128]; // injection set
32  size_t imdc_type[NMDC_MAX]; // injection type
33  char imdc_name[NMDC_MAX][128]; // injection name
34  double imdc_fcentral[NMDC_MAX]; // injection central frequencies
35  double imdc_fbandwidth[NMDC_MAX]; // injection bandwidth frequencies
36  size_t imdc_index[NMDC_MAX]; // type reference array
37  size_t imdc_iset[NMDC_MAX]; // injection set index
38 
39  int ninj=ReadInjType(mdc_inj_file,NMDC_MAX,imdc_set,imdc_type,
40  imdc_name,imdc_fcentral,imdc_fbandwidth);
41  if(ninj==0) {cout << "cwb_mkhtml_sim.C : Error - no injection - terminated" << endl;exit(1);}
42 
44  int nset=0;
45  for(int i=0;i<ninj;i++) {
46  bool bnew=true;
47  for(int j=0;j<nset;j++) if(imdc_set[i]==imdc_set_name[j]) bnew=false;
48  if(bnew) imdc_set_name[nset++]=imdc_set[i];
49  }
50  cout << "nset : " << nset << endl;
51 
52  // copy injection file list mdc types to report data dir
53 
54  char cmd[1024];
55  sprintf(cmd,"cp %s %s/%s/injectionList.txt",mdc_inj_file,pp_dir,pp_data_dir);
56  cout << cmd << endl;
57  gSystem->Exec(cmd);
58 
59  // create body.html file
60 
65 
66  ofstream out;
67  char fileout[256];
68  sprintf(fileout,"%s/body.html", pp_dir);
69  cout << fileout << endl;
70  out.open(fileout,ios::out);
71  if (!out.good()) {cout << "cwb_mkhtml_sim.C : Error Opening File : " << fileout << endl;exit(1);}
72 
73  // if CWB_DOC_URL is define then man infos are added to web pages
75  if(gSystem->Getenv("CWB_DOC_URL")!=NULL) {
76  cwb_doc_url=TString(gSystem->Getenv("CWB_DOC_URL"));
77  }
78 
79  out << "<hr>" << endl;
80  char plot_list[1024];
81  sprintf(plot_list,"<a target=\"_parent\" name=\"Full Plot List\" href=\"%s\"><h3>Full Plot List</h3></a>",pp_data_dir);
82  if(cwb_doc_url!="") out<<"<table width=100%> <tr> <td align=\"left\">"<<endl;
83  out << plot_list << endl;
84  if(cwb_doc_url!="") {
85  out<<"</td>"<<endl;
86  out<<"<td align=\"right\">"<<endl;
87  out<<"<a target=\"_parent\" href=\""<<cwb_doc_url.Data()
88  <<"/cwb/man/Simulation-part.html#Simulation-part\">infos</a>"<<endl;
89  out<<"</td> </tr> </table>"<<endl;
90  }
91 
92  // read evt_parameters_ALL.txt
93  char evt_par_fname[2048];
94  ifstream in_evt_par;
95  sprintf(evt_par_fname,"%s/evt_parameters_ALL.txt",PP_DATA_PATH.Data());
96  in_evt_par.open(evt_par_fname,ios::in);
97  if(!in_evt_par.good())
98  {cout << "cwb_mkhtml_sim.C : Error Opening File : " << evt_par_fname << endl;exit(1);}
99  int epar_id;
100  TString epar_mdc_name;
101  float f_mean,f_rms,t_mean,t_rms;
102  TString EPAR_MDC_NAME[NMDC_MAX];
103  float F_MEAN[NMDC_MAX],T_RMS[NMDC_MAX];
104  int ecnt=0;
105  while (1) {
106  in_evt_par >> epar_id >> epar_mdc_name >> f_mean >> f_rms >> t_mean >> t_rms;
107  if (!in_evt_par.good()) break;
108  EPAR_MDC_NAME[ecnt]=epar_mdc_name;
109  F_MEAN[ecnt]=f_mean;
110  T_RMS[ecnt]=t_rms;
111  cout << "EVT_PAR : " << EPAR_MDC_NAME[ecnt] << " " << F_MEAN[ecnt] << " " << T_RMS[ecnt] << endl;
112  ecnt++;
113  }
114  in_evt_par.close();
115 
116  char outwrite[2048];
117  char file[2048];
118  for (int iset=0;iset<nset;iset++) {
119 
120  cout << "MDC Set: " << iset << " " << endl;
121  char th_psfix[256];
122  sprintf(th_psfix,"_%d_%d",int(T_cor*100),int(T_cut*10));
123  //TString threshold(th_psfix);
124  TString threshold("");
125  cout << "DIR: " << PP_DATA_PATH.Data() << endl;
126 
127 /* ?
128  char file_fit[2048];
129  ofstream out_fit;
130  sprintf(file_fit,"%s/fit_parameters_%s.txt",PP_DATA_PATH.Data(),threshold.Data());
131  out_fit.open(file_fit,ios::out);
132  int set_count=0;
133 */
134 
135  cout << imdc_set_name[iset].Data() << endl;
136  char file[256];
137  sprintf(file,"%s/fit_parameters_%s%s.txt",PP_DATA_PATH.Data(),imdc_set_name[iset].Data(),threshold.Data());
138  cout << file << endl;
139  ifstream simin_hb;
140  simin_hb.open(file,ios::in);
141  if (!simin_hb.good()) {cout << "cwb_mkhtml_sim.C : Error Opening File : " << file << endl;exit(1);}
142  int hb_count;
143  TString hb_piumeno, hb_temp_wave;
144  float hb_chi2, hb_err, hb_par1, hb_par2, hb_par3;
145  double hb_hrss10[NMDC_MAX], hb_hrss50[NMDC_MAX], hb_hrss90[NMDC_MAX];
146  TF1* gfit;
147  TString hb_waveform[NMDC_MAX];
148  for (int i=0; i<NMDC_MAX; i++) {
149  hb_hrss10[i]=0;
150  hb_hrss50[i]=0;
151  hb_hrss90[i]=0;
152  hb_waveform[i]="";
153  }
154  int maxcount=0;
155  while (1) {
156  simin_hb >> hb_count >> hb_chi2 >> hb_hrss50[maxcount] >> hb_piumeno
157  >> hb_err >> hb_par1 >> hb_par2 >> hb_par3 >> hb_temp_wave;
158  if (!simin_hb.good()) break;
159  hb_waveform[maxcount]=(TString)hb_temp_wave;
160 /* ?
161  out_fit << " " << set_count << " " << hb_chi2 << " " << hb_hrss50[maxcount]
162  << " " << hb_piumeno << " " << hb_err << " " << hb_par1 << " "
163  << hb_par2 << " " << hb_par3 << " " << hb_temp_wave << endl;
164  set_count++;
165 */
166  double inf = simulation==2 ? log10(factors[0]/2.) : -23;
167  double sup = simulation==2 ? log10(2.*factors[nfactor-1]) : -18.5;
168 
169  if(simulation==1 && pp_factor2distance) {
170  inf = log10(pp_factor2distance/factors[nfactor-1]);
171  sup = log10(pp_factor2distance/factors[0]);
172  }
173 
174  double par0=TMath::Log10(hb_hrss50[maxcount]);
175  gfit = new TF1("logNfit",logNfit,pow(10.0,inf),pow(10.0,sup),5);
176  gfit->SetNpx(100000);
177  gfit->SetParameters(par0,hb_par1,hb_par2,hb_par3,pp_factor2distance);
178  hb_hrss10[maxcount]=gfit->GetX(.1,pow(10.0,inf),pow(10.0,sup));
179  hb_hrss90[maxcount]=gfit->GetX(.9,pow(10.0,inf),pow(10.0,sup));
180  if(gfit->Eval(hb_hrss90[maxcount])<0.89) hb_hrss90[maxcount]=-1;
181  maxcount++;
182  }
183 
184  // table title
185  out << "<font color=\"red\" style=\"font-weight:bold;\">"" <center>\t<p><h2>Detection efficiency for injections "
186  << imdc_set_name[iset].Data() << "</h2>\t<p><center></font>" << endl;
187  out <<"<table cellspacing=\"0\" cellpadding=\"6\" border=\"1\" align=\"center\">" << endl;
188 
189  // table row 1 (description)
190  out <<"<tr align=\"center\">"<<endl;
191 /* ?
192  sprintf(file,"%s/fit_parameters_%s.txt",PP_DATA_DIR.Data(),threshold.Data());
193 */
194  sprintf(file,"%s/fit_parameters_%s.txt",PP_DATA_DIR.Data(),imdc_set_name[iset].Data());
195  out <<"<th colspan=\"4\"><a target=\"_parent\" href="<<file<<">fit pararameter</a></th>"<<endl;
196  if(pp_fad_multi=="FALSE") {
197  if(pp_factor2distance) {
198  out <<"<th colspan=\""<<nIFO+4<<"\">distance vs frequency</th>"<<endl;
199  } else {
200  out <<"<th colspan=\""<<nIFO+4<<"\">efficiency vs frequency</th>"<<endl;
201  }
202  } else {
203  out <<"<th colspan=\""<<nIFO+4<<"\">False Alarm Density vs rho</th>"<<endl;
204  }
205  out <<"</tr>"<<endl;
206 
207  // table row 2 (figures)
208  out<<"<tr align=\"center\">"<<endl;
209  sprintf(outwrite,
210  "<td colspan=\"4\" align=\"center\"><a target=\"_parent\" href=\"%s/eff_%s%s.gif\"><img src=\"%s/eff_%s%s.gif\" height=300></a></td>",
211  PP_DATA_DIR.Data(),imdc_set_name[iset].Data(),threshold.Data(),PP_DATA_DIR.Data(),imdc_set_name[iset].Data(),threshold.Data());
212  out << outwrite << endl;
213  if(pp_fad_multi=="FALSE") {
214  sprintf(outwrite,
215  "<td colspan=\"%d\" align=\"center\"><a target=\"_parent\" href=\"%s/eff_freq_%s.gif\"><img src=\"%s/eff_freq_%s.gif\" height=300></a></td>",
216  nIFO+4,PP_DATA_DIR.Data(),imdc_set_name[iset].Data(),PP_DATA_DIR.Data(),imdc_set_name[iset].Data());
217  } else {
218  sprintf(outwrite,
219  "<td colspan=\"%d\" align=\"center\"><a target=\"_parent\" href=\"%s/../fad/fad_rho_%s.gif\"><img src=\"%s/../fad/fad_rho_%s.gif\" height=300></a></td>",
220  nIFO+4,PP_DATA_DIR.Data(),imdc_set_name[iset].Data(),PP_DATA_DIR.Data(),imdc_set_name[iset].Data());
221  }
222  out << outwrite << endl;
223  out<<"</tr>"<<endl;
224 
225  // table row 3 (mdc_name/hrss10%/hrss50%/hrss90%/ifo_hrss_nre/time/freq/eff titles)
226  out<<"<tr align=\"center\">"<<endl;
227  out <<"<td> waveform </td>"<<endl;
228  if(simulation==1 && pp_factor2distance) {
229  out <<"<td> distance@10% </td>"<<endl;
230  out <<"<td> distance@50% </td>"<<endl;
231  out <<"<td> distance@90% </td>"<<endl;
232  } else if(simulation==2) {
233  out <<"<td> snr@10% </td>"<<endl;
234  out <<"<td> snr@50% </td>"<<endl;
235  out <<"<td> snr@90% </td>"<<endl;
236  } else {
237  out <<"<td> hrss@10% </td>"<<endl;
238  out <<"<td> hrss@50% </td>"<<endl;
239  out <<"<td> hrss@90% </td>"<<endl;
240  }
241  for (int nn=0;nn<nIFO;nn++) out << "<th>"<<IFO[nn]<<"</th>"<<endl;
242  out<<"<th>time (rms)</th>"<<endl;
243  out<<"<th>freq (mean)</th>"<<endl;
244  out<<"<th>eff</th>"<<endl;
245  out<<"</tr>"<<endl;
246 
247  // table row 4 (mdc_name/hrss10%/hrss50%/hrss90% values)
248  out<<"<tr align=\"center\">"<<endl;
249 
250  sprintf(outwrite,"<td>%s",hb_waveform[0].Data()); out << outwrite << endl;
251  for (int i=1; i<maxcount; i++) {
252  sprintf(outwrite,"<br>%s",hb_waveform[i].Data()); out << outwrite << endl;
253  }
254  out<<"</td>"<<endl;
255 
256  if(pp_show_eff_fit_curve) { // write hrss@10/50/90 from efficiency fits
257 
258  sprintf(outwrite,"<td> %.2e",hb_hrss10[0]); out << outwrite << endl;
259  for (int i=1; i<maxcount; i++) {
260  sprintf(outwrite,"<br>%.2e",hb_hrss10[i]); out << outwrite << endl;
261  }
262  out<<"</td>"<<endl;
263 
264  sprintf(outwrite,"<td> %.2e",hb_hrss50[0]); out << outwrite << endl;
265  for (int i=1; i<maxcount; i++) {
266  sprintf(outwrite,"<br>%.2e",hb_hrss50[i]); out << outwrite << endl;
267  }
268  out<<"</td>"<<endl;
269 
270  if(hb_hrss90[0]>0) {
271  sprintf(outwrite,"<td> %.2e",hb_hrss90[0]); out << outwrite << endl;
272  } else {
273  sprintf(outwrite,"<td> NA"); out << outwrite << endl;
274  }
275  for (int i=1; i<maxcount; i++) {
276  if(hb_hrss90[i]>0) {
277  sprintf(outwrite,"<br>%.2e",hb_hrss90[i]); out << outwrite << endl;
278  } else {
279  sprintf(outwrite,"<br>NA"); out << outwrite << endl;
280  }
281  }
282  out<<"</td>"<<endl;
283 
284  } else { // write blanck spaces
285 
286  for(int k=0;k<3;k++) {
287  out << "<td> " << endl;
288  for (int i=1; i<maxcount; i++) out << "<br>" << endl;
289  out<<"</td>"<<endl;
290  }
291  }
292 
293  // table row 4 (ifo_hrss_nre/time/freq/eff links)
294  for (int nn=0;nn<nIFO;nn++) {
295  out << "<td>" << endl;
296  for (int i=0; i<maxcount; i++) {
297  sprintf(outwrite,"<a target=\"_parent\" href=\"%s/hrss_%s_%s.gif\">hrss</a> / ",
298  PP_DATA_DIR.Data(),IFO[nn],hb_waveform[i].Data());
299  sprintf(outwrite,"%s<a target=\"_parent\" href=\"%s/nre_%s_%s.gif\">nre</a><br>",
300  outwrite,PP_DATA_DIR.Data(),IFO[nn],hb_waveform[i].Data());
301  out << outwrite << endl;
302  }
303  out << "</td>" << endl;
304  }
305 
306  out << "<td align=\'right\'>" << endl;
307  for (int i=0; i<maxcount; i++) {
308  int ik=0;for(int k=0;k<ecnt;k++) if(EPAR_MDC_NAME[k]==hb_waveform[i]) ik=k;
309  sprintf(outwrite,"<a target=\"_parent\" href=\"%s/t_%s.gif\">%3.1f ms</a><br>",
310  PP_DATA_DIR.Data(),hb_waveform[i].Data(),1000*T_RMS[ik]);
311  out << outwrite << endl;
312  }
313  out << "</td>" << endl;
314 
315  out << "<td align=\'right\'>" << endl;
316  for (int i=0; i<maxcount; i++) {
317  int ik=0;for(int k=0;k<ecnt;k++) if(EPAR_MDC_NAME[k]==hb_waveform[i]) ik=k;
318  sprintf(outwrite,"<a target=\"_parent\" href=\"%s/f_%s.gif\">%3.2f Hz</a><br>",
319  PP_DATA_DIR.Data(),hb_waveform[i].Data(),F_MEAN[ik]);
320  out << outwrite << endl;
321  }
322  out << "</td>" << endl;
323 
324  out << "<td>" << endl;
325  for (int i=0; i<maxcount; i++) {
326  sprintf(outwrite,"<a target=\"_parent\" href=\"%s/%s.gif\">plot</a> / ",
327  PP_DATA_DIR.Data(),hb_waveform[i].Data());
328  out << outwrite << endl;
329 
330  sprintf(outwrite,"<a target=\"_parent\" href=\"%s/eff_%s.txt\">txt</a><br>",
331  PP_DATA_DIR.Data(),hb_waveform[i].Data());
332  out << outwrite << endl;
333  }
334  out << "</td>" << endl;
335 
336  out << "</tr>" << endl;
337 
338  out << "</table>" << endl;
339 /* ?
340  out_fit.close();
341 */
342 
343  out << "<p>" << endl;
344  out << endl;
345  }
346  out.close();
347  exit(0);
348 }
349 
char mdc_inj_file[1024]
char cmd[1024]
int ninj
par[0] name
int n
Definition: cwb_net.C:10
char fileout[256]
TString("c")
size_t imdc_type[NMDC_MAX]
double T_cor
TString PP_DATA_PATH
int j
Definition: cwb_net.C:10
i drho i
static bool checkFile(TString fName, bool question=false, TString message="")
Definition: Toolbox.cc:3956
char IFO[NIFO_MAX][NMDC_MAX]
TString * imdc_set_name
#define NMDC_MAX
char ifo[NIFO_MAX][8]
#define nIFO
int nset
double imdc_fcentral[NMDC_MAX]
size_t imdc_iset[NMDC_MAX]
char netdir[1024]
const int NIFO_MAX
Definition: wat.hh:4
ofstream out
char imdc_name[NMDC_MAX][128]
TString pp_fad_multi
int k
double imdc_fbandwidth[NMDC_MAX]
int ReadInjType(TString ifName, int ntype_max, char set[][128], size_t type[], char name[][128], double fcentral[], double fbandwidth[])
Definition: Toolfun.hh:740
double factors[100]
Definition: test_config1.C:84
TString PP_DATA_DIR
char imdc_set[NMDC_MAX][128]
static TString getParameter(TString options, TString param="")
Definition: Toolbox.cc:5943
ifstream in
size_t imdc_index[NMDC_MAX]
string file
Definition: cwb_online.py:385
char pp_dir[512]
Definition: test_config1.C:155
char pp_data_dir[1024]
TString cwb_doc_url
strcpy(RunLabel, RUN_LABEL)
nfactor[0]
Definition: cwb_eced.C:10
double T_cut
simulation
Definition: cwb_eced.C:9
detectorParams detParms[4]
Double_t logNfit(Double_t *x, Double_t *par)
Definition: Toolfun.hh:20
sprintf(netdir,"%s/%s", pp_dir, pp_data_dir)
exit(0)