32 #define SHOW_3SIGMA // plot 3 sigma probability line
33 #define PROB_3SIGMA 0.002699796063 // percentage outside 3 sigma gaussian probability
34 #define SHOW_4SIGMA // plot 4 sigma probability line
35 #define PROB_4SIGMA 0.000063342484 // percentage outside 4 sigma gaussian probability
37 #define PROB_5SIGMA 0.000000573303 // percentage outside 5 sigma gaussian probability
46 TGraph*
GetGraph(vector<double>
x, vector<double>
y,
56 double refline=0,
TString reflabel=
"reference",
TString pfile=
"") {
59 if(pfile==
"batch") {gROOT->SetBatch(
true);pfile=
"";batch=
true;}
61 if(pfile!=
"" && !pfile.EndsWith(
".png")) {
63 cout <<
"CombineSearchesWithFAD : Error in pfile name : " << pfile << endl;
64 cout <<
" file name must ends with .png" << endl << endl;
79 in.open(fadList.Data(),
ios::in);
80 if (!in.good()) {cout <<
"Error Opening File : " << fadList.Data() << endl;
exit(1);}
87 if (!in.good())
break;
88 if(str[0] !=
'#') size++;
90 cout <<
"size " << size << endl;
91 in.clear(ios::goodbit);
92 in.seekg(0, ios::beg);
93 if (size==0) {cout <<
"Error : File " << fadList.Data() <<
" is empty" << endl;
exit(1);}
96 char iPRODvsFAD[1024];
97 char iFAP_LABEL[1024];
103 in.getline(line,1024);
105 std::stringstream linestream(line);
106 if((line[0]==
'#')||(
TString(line)==
""))
continue;
107 linestream >> iFADvsRHO >> iPRODvsFAD >> iFAP_LABEL >> iFAP_COLOR >> iFAP_STYLE;
108 FADvsRHO[nFAP]=iFADvsRHO;
109 PRODvsFAD[nFAP]=iPRODvsFAD;
110 FAP_LABEL[nFAP]=iFAP_LABEL;
111 FAP_COLOR[nFAP]=iFAP_COLOR;
112 FAP_STYLE[nFAP]=iFAP_STYLE;
113 cout << nFAP+1 <<
" " << FADvsRHO[nFAP] <<
" " << PRODvsFAD[nFAP]
114 <<
" " << FAP_LABEL[nFAP] <<
" " << FAP_COLOR[nFAP] <<
" " << FAP_STYLE[nFAP] << endl;
121 cout << endl <<
"---------------------------------------------------------------------" << endl;
122 for(
int i=0;
i<nFAP;
i++) {
123 double FAP =
GetFAP(refline,
i, nFAP, FADvsRHO, PRODvsFAD);
124 cout <<
"Search : " << FAP_LABEL[
i] <<
"\t -> FAP at RHO = " << refline <<
" is " << FAP << endl;
126 cout <<
"---------------------------------------------------------------------" << endl << endl;
132 gCANVAS =
new TCanvas(
"canvas",
"canvas",16,30,825,546);
133 gCANVAS->Range(-19.4801,-9.25,-17.4775,83.25);
134 gCANVAS->SetBorderSize(2);
135 gCANVAS->SetFrameFillColor(0);
142 gStyle->SetOptFit(kTRUE);
149 for(
int i=0;
i<nFAP;
i++) {
152 gr[
i] =
GetGraph(x[i],y[i],
"False Alarm Probability",
"IFAD",
"FAP");
154 gr[
i] =
GetGraph(x[i],y[i],
"False Alarm Probability",
"rho",
"FAP");
156 gr[
i]->SetLineColor(FAP_COLOR[i]);
157 gr[
i]->SetLineStyle(FAP_STYLE[i]);
158 if(x[i][x[i].
size()-1] > rho_max) rho_max=x[
i][x[
i].size()-1];
162 TMultiGraph*
mg =
new TMultiGraph();
163 mg->SetTitle(
"False Alarm Probability");
164 for(
int i=0;
i<nFAP;
i++) mg->Add(gr[
i]);
168 gr[nFAP] =
new TGraph;
169 gr[nFAP]->SetPoint(0,refline,0);
170 gr[nFAP]->SetPoint(1,refline,1);
171 gr[nFAP]->SetLineColor(kGreen);
172 gr[nFAP]->SetLineWidth(2);
178 gr[nFAP+1] =
new TGraph;
181 gr[nFAP+1]->SetLineColor(kBlue);
182 gr[nFAP+1]->SetLineWidth(2);
183 gr[nFAP+1]->SetLineStyle(10);
189 gr[nFAP+2] =
new TGraph;
192 gr[nFAP+2]->SetLineColor(kRed);
193 gr[nFAP+2]->SetLineWidth(2);
194 gr[nFAP+2]->SetLineStyle(10);
200 gr[nFAP+3] =
new TGraph;
203 gr[nFAP+3]->SetLineColor(kGreen);
204 gr[nFAP+3]->SetLineWidth(2);
205 gr[nFAP+3]->SetLineStyle(10);
211 mg->GetHistogram()->GetXaxis()->SetLabelSize(0.04);
212 mg->GetHistogram()->GetYaxis()->SetLabelSize(0.04);
213 mg->GetHistogram()->GetXaxis()->SetTitleSize(0.04);
214 mg->GetHistogram()->GetYaxis()->SetTitleSize(0.04);
215 mg->GetHistogram()->GetXaxis()->SetLabelFont(42);
217 mg->GetHistogram()->GetYaxis()->SetLabelFont(42);
218 mg->GetHistogram()->GetYaxis()->SetLabelOffset(0.01);
219 mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.5);
222 mg->GetXaxis()->SetLabelFont(42);
223 mg->GetYaxis()->SetLabelFont(42);
224 mg->GetXaxis()->SetTitleFont(42);
225 mg->GetYaxis()->SetTitleFont(42);
226 mg->GetXaxis()->SetTitleOffset(1.20);
227 mg->GetYaxis()->SetTitleOffset(1.05);
228 mg->GetXaxis()->SetTitleSize(0.04);
229 mg->GetYaxis()->SetTitleSize(0.04);
231 mg->GetXaxis()->SetTitle(
"IFAD");
233 mg->GetXaxis()->SetTitle(
"rho");
235 mg->GetYaxis()->SetTitle(
"FAP");
237 mg->GetXaxis()->SetMoreLogLabels();
243 double hleg = 0.9-nFAP*0.03;
244 leg =
new TLegend(0.7369062,hleg,0.9914738,0.9846154,NULL,
"brNDC");
245 leg->SetBorderSize(1);
246 leg->SetTextAlign(22);
247 leg->SetTextFont(12);
248 leg->SetLineColor(1);
249 leg->SetLineStyle(1);
250 leg->SetLineWidth(1);
251 leg->SetFillColor(0);
252 leg->SetFillStyle(1001);
253 leg->SetTextSize(0.03);
254 leg->SetLineColor(kBlack);
255 leg->SetFillColor(kWhite);
257 for(
int i=0;i<nFAP;i++) leg->AddEntry(gr[i],FAP_LABEL[i].Data(),
"lp");
258 if(refline>0) leg->AddEntry(gr[nFAP],reflabel.Data(),
"lp");
260 leg->AddEntry(gr[nFAP+1],
"3 sigma",
"lp");
263 leg->AddEntry(gr[nFAP+2],
"4 sigma",
"lp");
266 leg->AddEntry(gr[nFAP+3],
"5 sigma",
"lp");
273 gfile.ReplaceAll(
".png",
".gif");
274 gCANVAS->Print(gfile);
276 sprintf(cmd,
"convert %s %s",gfile.Data(),pfile.Data());
279 sprintf(cmd,
"rm %s",gfile.Data());
290 for(
int j=0;
j<nFAP;
j++) {
291 if(PRODvsFAD[
j].IsFloat()) {
292 PROD += PRODvsFAD[
j].Atof();
297 double MU = FAD*PROD;
298 double FAP = 1.-exp(-MU);
311 int nrho = TMath::Nint((rho_max-rho_min)/drho)+2;
313 for(
int i=0;
i<nrho;
i++) {
314 double RHO = rho_min+
i*drho;
317 for(
int j=0;
j<nFAP;
j++) {
318 if(PRODvsFAD[
j].IsFloat()) {
319 PROD += PRODvsFAD[
j].Atof();
324 double MU = FAD*PROD;
325 double FAP = 1.-exp(-MU);
344 TGraph*
gr =
new TGraph;
349 if(y[
i]==0)
continue;
350 double dx = (x[
i]-x[
i-1])/10000.;
351 gr->SetPoint(cnt++,x[
i]-dx,y[
i-1]);
352 gr->SetPoint(cnt++,x[
i]+dx,y[
i]);
355 gr->GetHistogram()->GetXaxis()->SetTitle(xtitle.Data());
356 gr->GetHistogram()->GetYaxis()->SetTitle(ytitle.Data());
357 gr->GetHistogram()->GetYaxis()->SetTitleOffset(1.4);
359 double max=0;
double min=1e80;
361 if(y[
i]==0)
continue;
362 if(y[
i]>max) max=y[
i];
if(y[
i]<min && y[
i]!=0) min=y[
i];
365 gr->GetHistogram()->GetYaxis()->SetMoreLogLabels();
367 gr->SetTitle(ptitle);
368 gr->SetLineColor(kRed);
double GetFAP(double rho, int n, int nFAP, TString *FADvsRHO, TString *PRODvsFAD)
double min(double x, double y)
TGraph * GetGraph(vector< double > x, vector< double > y, TString ptitle, TString xtitle, TString ytitle)
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
void GetFAPvsRHO(int n, vector< double > &x, vector< double > &y, int nFAP, TString *FADvsRHO, TString *PRODvsFAD)
void CombineSearchesWithFAD(TString fadList, double rho_min=0, double rho_max=0, double refline=0, TString reflabel="reference", TString pfile="")
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)