Logo Coherent WaveBurst  
Reference Guide
Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
cwb_mkcfad.C
Go to the documentation of this file.
1 // This macro is used to computed the false alarm probability of combined searches
2 // Uses as input parameters the files produced by the report sim when pp_fad is enabled
3 //
4 // fapList :
5 // the fapList is the name of the file which contains the list of searches
6 // for each search the format is :
7 //
8 // $SEARCH TAG COLOR STYPE
9 // - TAG : label to be used in the legend
10 // - COLOR : line color
11 // - STYPE : line style
12 //
13 // $FAD FADvsRHO PRODvsFAD
14 // - FADvsRHO : file name of FAD vs RHO
15 // - PRODvsFAD : file name of PROD vs FAD
16 //
17 // $FAR FARvsRHO OBSTYPEvsFAR
18 // - FARvsRHO : file name of FAR vs RHO
19 // - OBSTIMEvsFAR : file name of OBSTIME vs FAR
20 //
21 // Example :
22 //
23 // $SEARCH LH_S6B_LF_LF 1 1
24 // $FAR FARvsRHO_ALL.txt OBSTIMEvsFAR_ALL.txt
25 // $FAD FADvsRHO_ALL.txt PRODvsFAD_ALL.txt
26 //
27 // fapMode :
28 // the fapMode is the mode used to produce the combined searches
29 // the fapMode can contains a combination of the following options : FAD/FAR/RHO
30 // the combined curves are obtained from the minimum FAP_FAD, FAP_FAR, FAP_RHO
31 // where FAP_XXX is the False Alarm Probability computed using the ranked
32 // events according to XXX=(FAD/FAR/RHO)
33 //
34 // Examples :
35 //
36 // fadMode = "FAD"
37 // fadMode = "FAD FAR"
38 // fadMode = "FAD FAR RHO"
39 //
40 // Auxiliary parameters :
41 // rho_min : minimum rho showed in the plot (def=0, the value is computed from input files)
42 // rho_max : maximum rho showed in the plot (def=0, the value is computed from input files)
43 // refline : vertical line showed as reference in the plot (def=0, not showed)
44 // reflabel: refernce label used in the legend (def="reference")
45 // pfile : saved file name. If !="" -> save plot with name pfile (def="")
46 // if == "batch" the macro is executed in batch mode
47 //
48 // How to run (example) :
49 // root 'cwb_mkcfad.C("FAP.lst","FAD FAR RHO",5,40,7.35,"BigDog")'
50 //
51 
52 #define MAX_FAP 20
53 #define SHOW_3SIGMA // plot 3 sigma probability line
54 #define PROB_3SIGMA (1./370.398) // percentage outside 3 sigma gaussian probability
55 
56 // NOTE : FAX = FAD or FAR
57 
58 //#define XAXIS_IS_IFAX // uncomment to use as xaxis IFAX instead of RHO
59 
60 double GetFAP(double rho, int n, int nFAP, TString* FAXvsRHO, TString* PRODvsFAX);
61 
62 void GetFAPvsRHO(int n, vector<double>& x, vector<double>& y,
63  int nFAP, TString* FAXvsRHO, TString* PRODvsFAX);
64 
65 void GetFAPvsRHO(vector<double>& x, vector<double>& y,
66  int nFAP, TString* FARvsRHO, TString* OBSTIMEvsFAR);
67 
68 TGraph* GetGraph(vector<double> x, vector<double> y,
69  TString ptitle, TString xtitle, TString ytitle);
70 
71 double gRHO_MIN = 0;
72 double gRHO_MAX = 0;
73 
74 double gFAP_MIN = 1.79769e+308;
75 double gFAP_MAX = -1.79769e+308;
76 
77 void cwb_mkcfad(TString fapList, TString fapMode, double rho_min=0, double rho_max=0,
78  double refline=0, TString reflabel="reference", TString pfile="") {
79 
80  bool batch=false;
81  if(pfile=="batch") {gROOT->SetBatch(true);pfile="";batch=true;}
82 
83  if(pfile!="" && !pfile.EndsWith(".png")) {
84  cout << endl;
85  cout << "cwb_mkcfad : Error in pfile name : " << pfile << endl;
86  cout << " file name must ends with .png" << endl << endl;
87  exit(1);
88  }
89 
90  gRHO_MIN = rho_min;
91  gRHO_MAX = rho_max;
92 
93  TString FARvsRHO[MAX_FAP];
94  TString OBSTIMEvsFAR[MAX_FAP];
95  TString FADvsRHO[MAX_FAP];
96  TString PRODvsFAD[MAX_FAP];
97  TString FAP_LABEL[MAX_FAP];
98  int FAP_COLOR[MAX_FAP];
99  int FAP_STYLE[MAX_FAP];
100  unsigned int FAP_TYPE[MAX_FAP];
101  for(int i=0;i<MAX_FAP;i++) FAP_TYPE[i]=0;
102 
103  // Open list
104  ifstream in;
105  in.open(fapList.Data(),ios::in);
106  if (!in.good()) {cout << "Error Opening File : " << fapList.Data() << endl;exit(1);}
107 
108  int size=0;
109  char str[1024];
110  int fpos=0;
111  while(true) {
112  in.getline(str,1024);
113  if (!in.good()) break;
114  if(str[0] != '#') size++;
115  }
116  cout << "size " << size << endl;
117  in.clear(ios::goodbit);
118  in.seekg(0, ios::beg);
119  if (size==0) {cout << "Error : File " << fapList.Data() << " is empty" << endl;exit(1);}
120 
121  char iFARvsRHO[1024];
122  char iOBSTIMEvsFAR[1024];
123  char iFADvsRHO[1024];
124  char iPRODvsFAD[1024];
125  char iFAP_LABEL[1024];
126  char iFAP_TAG[1024];
127  int iFAP_COLOR;
128  int iFAP_STYLE;
129  int nFAP=0;
130  char line[1024];
131  while(true) {
132  in.getline(line,1024);
133  if (in.eof()) break;
134  std::stringstream linestream(line);
135  if(TString(line).BeginsWith("#")) continue;
136  if(TString(line)=="") continue;
137  if(TString(line).BeginsWith("$SEARCH")) {
138  if(FAP_TYPE[nFAP]>1) nFAP++;
139  linestream >> iFAP_TAG >> iFAP_LABEL >> iFAP_COLOR >> iFAP_STYLE;
140  FAP_LABEL[nFAP]=iFAP_LABEL;
141  FAP_COLOR[nFAP]=iFAP_COLOR;
142  FAP_STYLE[nFAP]=iFAP_STYLE;
143  FAP_TYPE[nFAP]=1;
144  }
145  if(TString(line).BeginsWith("$FAR")) {
146  linestream >> iFAP_TAG >> iFARvsRHO >> iOBSTIMEvsFAR;
147  FARvsRHO[nFAP]=iFARvsRHO;
148  OBSTIMEvsFAR[nFAP]=iOBSTIMEvsFAR;
149  FAP_TYPE[nFAP]|=2;
150  }
151  if(TString(line).BeginsWith("$FAD")) {
152  linestream >> iFAP_TAG >> iFADvsRHO >> iPRODvsFAD;
153  FADvsRHO[nFAP]=iFADvsRHO;
154  PRODvsFAD[nFAP]=iPRODvsFAD;
155  FAP_TYPE[nFAP]|=4;
156  }
157  }
158  if(FAP_TYPE[nFAP]>1) nFAP++;
159  in.close();
160 
161  for(int i=0;i<nFAP;i++) {
162  cout << "SEARCH : " << FAP_LABEL[i] << " " << FAP_COLOR[i] << " " << FAP_STYLE[i] << endl;
163  if(FAP_TYPE[i]&2) cout << FARvsRHO[i] << " " << OBSTIMEvsFAR[i] << endl;
164  if(FAP_TYPE[i]&4) cout << FADvsRHO[i] << " " << PRODvsFAD[i] << endl;
165  cout << endl;
166  for(int j=i;j<nFAP;j++) if(FAP_TYPE[i]!=FAP_TYPE[j]) {
167  cout << "cwb_mkcfap : Error - searches not consistent !!!" << endl;
168  cout << " Missing FAR or FAD declaration" << endl << endl;
169  exit(1);
170  }
171  if((!fapMode.Contains("RHO"))&&(!fapMode.Contains("FAR"))&&(!fapMode.Contains("FAD"))) {
172  cout << "cwb_mkcfap : Error - fapMode not contains valid declarations (FAD/FAR/RHO)" << endl;
173  exit(1);
174  }
175  if((!FAP_TYPE[i]&2)&&(fapMode.Contains("RHO"))) {
176  cout << "cwb_mkcfap : Error - fapMode=RHO needs FAR declarations" << endl;
177  exit(1);
178  }
179  if((!FAP_TYPE[i]&2)&&(fapMode.Contains("FAR"))) {
180  cout << "cwb_mkcfap : Error - fapMode=FAR needs FAR declarations" << endl;
181  exit(1);
182  }
183  if((!FAP_TYPE[i]&2)&&(fapMode.Contains("FAD"))) {
184  cout << "cwb_mkcfap : Error - fapMode=FAD needs FAD declarations" << endl;
185  exit(1);
186  }
187  }
188 
189  if((fapMode.Contains("RHO"))&&(!fapMode.Contains("FAR"))&&(!fapMode.Contains("FAD"))) {
190  for(int i=0;i<nFAP;i++) FAP_COLOR[i]=2; // red
191  }
192 
193  // get FAP for RHO=refline
194  if(refline>0) {
195  cout << endl << "---------------------------------------------------------------------" << endl;
196  for(int i=0;i<nFAP;i++) {
197  double FAP;
198  if(FAP_TYPE[i]&2) FAP = GetFAP(refline, i, nFAP, FARvsRHO, OBSTIMEvsFAR);
199  if(FAP_TYPE[i]&4) FAP = GetFAP(refline, i, nFAP, FADvsRHO, PRODvsFAD);
200  cout << "Search : " << FAP_LABEL[i] << "\t -> FAP at RHO = " << refline << " is " << FAP << endl;
201  }
202  cout << "---------------------------------------------------------------------" << endl << endl;
203  if(batch) exit(0);
204  }
205 
206  // create canvas
207  TCanvas* gCANVAS;
208  gCANVAS = new TCanvas("canvas", "canvas",16,30,825,546);
209  gCANVAS->Range(-19.4801,-9.25,-17.4775,83.25);
210  gCANVAS->SetBorderSize(2);
211  gCANVAS->SetFrameFillColor(0);
212  gCANVAS->SetGridx();
213  gCANVAS->SetGridy();
214 //#ifdef XAXIS_IS_IFAD
215  gCANVAS->SetLogx();
216 //#endif
217  gCANVAS->SetLogy();
218  gStyle->SetOptFit(kTRUE);
219 
220  // create graphs
221  double rho_max=0;
222  TGraph* gr[MAX_FAP];
223  vector<double> xFAP[MAX_FAP],yFAP[MAX_FAP];
224  vector<double> xFAD[MAX_FAP],yFAD[MAX_FAP];
225  vector<double> xFAR[MAX_FAP],yFAR[MAX_FAP];
226  vector<double> xRHO[MAX_FAP],yRHO[MAX_FAP];
227 
228  for(int i=0;i<nFAP;i++) {
229  if(fapMode.Contains("FAD")) {
230  // get FAP from events ranked by FAD
231  GetFAPvsRHO(i, xFAD[i], yFAD[i], nFAP, FADvsRHO, PRODvsFAD);
232  int xsize = xFAP[i].size();
233  if(xsize) {for(int j=0;j<xsize;j++) if(yFAD[i][j]<yFAP[i][j]) yFAP[i][j]=yFAD[i][j];}
234  else {xFAP[i]=xFAD[i];yFAP[i]=yFAD[i];}
235  }
236  if(fapMode.Contains("FAR")) {
237  // get FAP from events ranked by FAR
238  GetFAPvsRHO(i, xFAR[i], yFAR[i], nFAP, FARvsRHO, OBSTIMEvsFAR);
239  // select minimum between events ranked by FAR and by FAD
240  int xsize = xFAP[i].size();
241  if(xsize) {for(int j=0;j<xsize;j++) if(yFAR[i][j]<yFAP[i][j]) yFAP[i][j]=yFAR[i][j];}
242  else {xFAP[i]=xFAR[i];yFAP[i]=yFAR[i];}
243  }
244  if(fapMode.Contains("RHO")) {
245  // get FAP from events ranked by RHO
246  GetFAPvsRHO(xRHO[i], yRHO[i], nFAP, FARvsRHO, OBSTIMEvsFAR);
247  // select minimum between events ranked by RHO and by FAR/FAD
248  int xsize = xFAP[i].size();
249  if(xsize) {for(int j=0;j<xsize;j++) if(yRHO[i][j]<yFAP[i][j]) yFAP[i][j]=yRHO[i][j];}
250  else {xFAP[i]=xRHO[i];yFAP[i]=yRHO[i];}
251  }
252  }
253 
254  for(int i=0;i<nFAP;i++) {
255  int nMODE=0;
256  TString subtitle="";
257  if(fapMode.Contains("FAD")) {subtitle+=" FAD ";nMODE++;}
258  if(fapMode.Contains("FAR")) {subtitle+=" FAR ";nMODE++;}
259  if(fapMode.Contains("RHO")) {subtitle+=" RHO ";nMODE++;}
260  TString title = "";
261  if(nMODE==1) {
262  title = TString::Format("False Alarm Probability - ranked by %s",subtitle.Data());
263  } else {
264  title = TString::Format("False Alarm Probability - minimum FAP ranked by (%s)",subtitle.Data());
265  }
266 #ifdef XAXIS_IS_IFAD
267  gr[i] = GetGraph(xFAP[i],yFAP[i],title,"IFAD","FAP");
268 #else
269  gr[i] = GetGraph(xFAP[i],yFAP[i],title,"rho","FAP");
270 #endif
271  gr[i]->SetLineColor(FAP_COLOR[i]);
272  gr[i]->SetLineStyle(FAP_STYLE[i]);
273  if(xFAP[i][xFAP[i].size()-1] > rho_max) rho_max=xFAP[i][xFAP[i].size()-1];
274  }
275  if((gRHO_MAX>0)&&(rho_max>gRHO_MAX)) rho_max = gRHO_MAX;
276 
277  TMultiGraph* mg = new TMultiGraph();
278  mg->SetTitle(title);
279  for(int i=0;i<nFAP;i++) mg->Add(gr[i]);
280 
281  // add reference line
282  if(refline>0) {
283  gr[nFAP] = new TGraph;
284  gr[nFAP]->SetPoint(0,refline,0);
285  gr[nFAP]->SetPoint(1,refline,1);
286  gr[nFAP]->SetLineColor(kGreen);
287  gr[nFAP]->SetLineWidth(2);
288  mg->Add(gr[nFAP]);
289  }
290 
291  // add 3sigma reference line
292 #ifdef SHOW_3SIGMA
293  gr[nFAP+1] = new TGraph;
294  gr[nFAP+1]->SetPoint(0,gRHO_MIN,PROB_3SIGMA);
295  gr[nFAP+1]->SetPoint(1,rho_max,PROB_3SIGMA);
296  gr[nFAP+1]->SetLineColor(kBlue);
297  gr[nFAP+1]->SetLineWidth(2);
298  gr[nFAP+1]->SetLineStyle(10);
299  mg->Add(gr[nFAP+1]);
300 #endif
301 
302  mg->Paint("APL");
303 
304  mg->GetHistogram()->GetXaxis()->SetLabelSize(0.04);
305  mg->GetHistogram()->GetYaxis()->SetLabelSize(0.04);
306  mg->GetHistogram()->GetXaxis()->SetTitleSize(0.04);
307  mg->GetHistogram()->GetYaxis()->SetTitleSize(0.04);
308  mg->GetHistogram()->GetXaxis()->SetLabelFont(42);
309  mg->GetHistogram()->GetXaxis()->SetRangeUser(gRHO_MIN,gRHO_MAX);
310  mg->GetHistogram()->GetYaxis()->SetLabelFont(42);
311  mg->GetHistogram()->GetYaxis()->SetLabelOffset(0.01);
312  mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.5);
313  mg->GetHistogram()->GetYaxis()->SetRangeUser(0.5*gFAP_MIN,1.5*gFAP_MAX);
314 
315  mg->GetXaxis()->SetLabelFont(42);
316  mg->GetYaxis()->SetLabelFont(42);
317  mg->GetXaxis()->SetTitleFont(42);
318  mg->GetYaxis()->SetTitleFont(42);
319  mg->GetXaxis()->SetTitleOffset(1.20);
320  mg->GetYaxis()->SetTitleOffset(1.05);
321  mg->GetXaxis()->SetTitleSize(0.04);
322  mg->GetYaxis()->SetTitleSize(0.04);
323 #ifdef XAXIS_IS_IFAD
324  mg->GetXaxis()->SetTitle("IFAD");
325 #else
326  mg->GetXaxis()->SetTitle("rho");
327 #endif
328  mg->GetYaxis()->SetTitle("FAP");
329 
330  mg->GetXaxis()->SetMoreLogLabels();
331 
332  mg->Draw("ALP");
333 
334  // draw the legend
335  TLegend *leg;
336  double hleg = 0.84-nFAP*0.03;
337  leg = new TLegend(0.7369062,hleg,0.9914738,0.9265385,NULL,"brNDC");
338  leg->SetBorderSize(1);
339  leg->SetTextAlign(22);
340  leg->SetTextFont(12);
341  leg->SetLineColor(1);
342  leg->SetLineStyle(1);
343  leg->SetLineWidth(1);
344  leg->SetFillColor(0);
345  leg->SetFillStyle(1001);
346  leg->SetTextSize(0.03);
347  leg->SetLineColor(kBlack);
348  leg->SetFillColor(kWhite);
349 
350  for(int i=0;i<nFAP;i++) leg->AddEntry(gr[i],FAP_LABEL[i].Data(),"lp");
351  if(refline>0) leg->AddEntry(gr[nFAP],reflabel.Data(),"lp");
352 #ifdef SHOW_3SIGMA
353  leg->AddEntry(gr[nFAP+1],"3 sigma","lp");
354 #endif
355  leg->Draw();
356 
357  // save plot
358  if(pfile!="") {
359  TString gfile=pfile;
360  gfile.ReplaceAll(".png",".gif");
361  gCANVAS->Print(gfile);
362  char cmd[1024];
363  sprintf(cmd,"convert %s %s",gfile.Data(),pfile.Data());
364  cout << cmd << endl;
365  gSystem->Exec(cmd);
366  sprintf(cmd,"rm %s",gfile.Data());
367  gSystem->Exec(cmd);
368  exit(0);
369  }
370 }
371 
372 double GetFAP(double rho, int n, int nFAP, TString* FAXvsRHO, TString* PRODvsFAX) {
373 
374  double RHO = rho;
375  double FAX = CWB::Toolbox::GetStepFunction("Y",FAXvsRHO[n],RHO);
376  double PROD = 0;
377  for(int j=0;j<nFAP;j++) PROD += CWB::Toolbox::GetStepFunction("Y",PRODvsFAX[j],FAX);
378  double MU = FAX*PROD;
379  double FAP = 1.-exp(-MU);
380 
381  return FAP;
382 }
383 
384 void GetFAPvsRHO(int n, vector<double>& x, vector<double>& y, int nFAP, TString* FAXvsRHO, TString* PRODvsFAX) {
385 
386  x.clear();y.clear();
387 
388  double rho_min = CWB::Toolbox::GetStepFunction("xmin",FAXvsRHO[n]);
389  double rho_max = CWB::Toolbox::GetStepFunction("xmax",FAXvsRHO[n]);
390  if((gRHO_MIN>0)&&(rho_min<gRHO_MIN)) rho_min = gRHO_MIN;
391  if((gRHO_MAX>0)&&(rho_max>gRHO_MAX)) rho_max = gRHO_MAX;
392 
393  double drho = 0.1;
394  int nrho = TMath::Nint((rho_max-rho_min)/drho)+2;
395 
396  for(int i=0;i<nrho;i++) {
397  double RHO = rho_min+i*drho;
398  double FAX = CWB::Toolbox::GetStepFunction("Y",FAXvsRHO[n],RHO);
399  double PROD = 0;
400  for(int j=0;j<nFAP;j++) PROD += CWB::Toolbox::GetStepFunction("Y",PRODvsFAX[j],FAX);
401  double MU = FAX*PROD;
402  double FAP = 1.-exp(-MU);
403 
404 #ifdef XAXIS_IS_IFAX
405  x.push_back(1./FAX);
406 #else
407  x.push_back(RHO);
408 #endif
409  y.push_back(FAP);
410 
411  if((FAP!=0)&&(FAP<gFAP_MIN)) gFAP_MIN = FAP; // skip last y[i]=0 to avoid TGraph log issue
412  if(FAP>gFAP_MAX) gFAP_MAX = FAP;
413  }
414 }
415 
416 void GetFAPvsRHO(vector<double>& x, vector<double>& y, int nFAP, TString* FARvsRHO, TString* OBSTIMEvsFAR) {
417 
418  x.clear();y.clear();
419 
420  double rho_min = 1e10;
421  double rho_max = 0;
422  for(int j=0;j<nFAP;j++) {
423  double _rho_min = CWB::Toolbox::GetStepFunction("xmin",FARvsRHO[j]);
424  double _rho_max = CWB::Toolbox::GetStepFunction("xmax",FARvsRHO[j]);
425  if(_rho_min<rho_min) rho_min=_rho_min;
426  if(_rho_max>rho_max) rho_max=_rho_max;
427  }
428  if((gRHO_MIN>0)&&(rho_min<gRHO_MIN)) rho_min = gRHO_MIN;
429  if((gRHO_MAX>0)&&(rho_max>gRHO_MAX)) rho_max = gRHO_MAX;
430 
431  double drho = 0.1;
432  int nrho = TMath::Nint((rho_max-rho_min)/drho)+2;
433 
434  double MIN_FAR[MAX_FAP];
435  for(int j=0;j<MAX_FAP;j++) MIN_FAR[j]=1e10;
436  for(int i=0;i<nrho;i++) {
437  double RHO = rho_min+i*drho;
438  double MU = 0;
439  for(int j=0;j<nFAP;j++) {
440  double FAR = CWB::Toolbox::GetStepFunction("Y",FARvsRHO[j],RHO);
441  double OBSTIME = CWB::Toolbox::GetStepFunction("Y",OBSTIMEvsFAR[j],FAR);
442  if(FAR>0) if(FAR<MIN_FAR[j]) MIN_FAR[j]=FAR; // FAR min hold
443  MU += MIN_FAR[j]*OBSTIME;
444  }
445  double FAP = 1.-exp(-MU);
446 
447  x.push_back(RHO);
448  y.push_back(FAP);
449 
450  if((FAP!=0)&&(FAP<gFAP_MIN)) gFAP_MIN = FAP; // skip last y[i]=0 to avoid TGraph log issue
451  if(FAP>gFAP_MAX) gFAP_MAX = FAP;
452  }
453 }
454 
455 TGraph*
456 GetGraph(vector<double> x, vector<double> y, TString ptitle, TString xtitle, TString ytitle) {
457 
458  int size = x.size();
459 
460  TGraph* gr = new TGraph;
461 
462  int cnt=0;
463 
464  for(int i=1;i<size;i++) {
465  if(y[i]==0) continue; // skip y[i]=0 to avoid TGraph log issue
466  double dx = (x[i]-x[i-1])/10000.;
467  gr->SetPoint(cnt++,x[i]-dx,y[i-1]);
468  gr->SetPoint(cnt++,x[i]+dx,y[i]);
469  }
470 
471  gr->GetHistogram()->GetXaxis()->SetTitle(xtitle.Data());
472  gr->GetHistogram()->GetYaxis()->SetTitle(ytitle.Data());
473  gr->GetHistogram()->GetYaxis()->SetTitleOffset(1.4);
474  // add more log labels when y range is small
475  double max=0;double min=1e80;
476  for(int i=0;i<size;i++) {
477  if(y[i]==0) continue; // skip y[i]=0 to avoid TGraph log issue
478  if(y[i]>max) max=y[i]; if(y[i]<min && y[i]!=0) min=y[i];
479  }
480  if(max/min<10) {
481  gr->GetHistogram()->GetYaxis()->SetMoreLogLabels();
482  }
483  gr->SetTitle(ptitle);
484  gr->SetLineColor(kRed);
485  gr->SetLineWidth(2);
486 
487  return gr;
488 }
TGraph * GetGraph(vector< double > x, vector< double > y, TString ptitle, TString xtitle, TString ytitle)
Definition: cwb_mkcfad.C:456
double rho
vector< double > FAR
Definition: cwb_mkfad.C:59
char xtitle[1024]
char cmd[1024]
double min(double x, double y)
Definition: eBBH.cc:13
#define PROB_3SIGMA
Definition: cwb_mkcfad.C:54
int n
Definition: cwb_net.C:10
double rho_min
TString("c")
double GetFAP(double rho, int n, int nFAP, TString *FAXvsRHO, TString *PRODvsFAX)
Definition: cwb_mkcfad.C:372
TLegend * leg
Definition: compare_bkg.C:246
double gRHO_MIN
Definition: cwb_mkcfad.C:71
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1)*itime+ifreq;double time=itime *dT;double freq=(ifreq >0)?ifreq *dF:dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
vector< double > RHO
Definition: cwb_mkfad.C:55
void cwb_mkcfad(TString fapList, TString fapMode, double rho_min=0, double rho_max=0, double refline=0, TString reflabel="reference", TString pfile="")
Definition: cwb_mkcfad.C:77
Long_t size
int j
Definition: cwb_net.C:10
#define MAX_FAP
Definition: cwb_mkcfad.C:52
i drho i
char str[1024]
TGraph * gr
double FAP
double rho_max
double gFAP_MIN
Definition: cwb_mkcfad.C:74
char title[256]
Definition: SSeriesExample.C:1
char subtitle[1024]
TLine * line
Definition: compare_bkg.C:482
double gRHO_MAX
Definition: cwb_mkcfad.C:72
ifstream in
static int GetStepFunction(TString fName, vector< double > &x, vector< double > &y, vector< double > &ex=DEFAULT_DOUBLE_VECTOR, vector< double > &ey=DEFAULT_DOUBLE_VECTOR)
Definition: Toolbox.cc:5645
TCanvas * gCANVAS
Definition: cwb_mkfad.C:43
int cnt
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
TString gfile
void GetFAPvsRHO(int n, vector< double > &x, vector< double > &y, int nFAP, TString *FAXvsRHO, TString *PRODvsFAX)
Definition: cwb_mkcfad.C:384
wavearray< double > y
Definition: Test10.C:31
TMultiGraph * mg
double gFAP_MAX
Definition: cwb_mkcfad.C:75
exit(0)