Logo Coherent WaveBurst  
Reference Guide
Logo
 All Namespaces Files Functions Variables Macros Pages
Draw_FARvsRHO.C
Go to the documentation of this file.
1 
2 #define nFAR_MAX 32
3 
4 #define RHO_MIN 4.5
5 //#define RHO_MIN 0.0
6 
7 int nFAR;
8 TString FAR_PLOT_NAME;
9 TString FAR_TITLE;
10 TString FAR_NAME[nFAR_MAX];
15 TString FAR_PATH[nFAR_MAX];
17 
18 int readParameters(TString fname, wavearray<double>& RHO, wavearray<double>& eRHO, wavearray<double>& FAR, wavearray<double>& eFAR);
19 int writeParameters(TString fname, wavearray<double>& RHO, wavearray<double>& FAR);
20 void PlotFAR(int nfar, TString far_plot_name, double rho_min=-1, double rho_max=-1);
21 
22 TString PLOT_PATH = "./";
23 
24 void
25 Draw_FARvsRHO(TString ifile_bkg, TString ifile_fgd, TString ofile="") {
26 
27 
28  Style_t markers[32]= {20,21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,
29  21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,20 };
30 
31  Color_t colors[32] = { 8, 0, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7,
32  6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7 };
33 
34  for(int i=0;i<nFAR_MAX;i++) {
35  LINE_COLOR[i] = colors[i];
36  LINE_STYLE[i] = 1;
37  LINE_MARKER[i] = markers[i];
38  ZERO_LAG_TIME[i] = -1;
39  OBS_TIME[i] = 1;
40  }
41 
42  FAR_TITLE="";
43  FAR_PLOT_NAME="";
44 
45  nFAR = 2;
46  FAR_PATH[0]=ifile_bkg;
47  FAR_PATH[1]=ifile_fgd;
48 
49  PlotFAR(nFAR, ofile, RHO_MIN, -1);
50 
51 }
52 
53 void PlotFAR(int nfar, TString far_plot_name, double rho_min, double rho_max) {
54 
55  // create plots
56  gStyle->SetFrameBorderMode(0); // remove the red box around canvas
57  gROOT->ForceStyle();
58 
59  gStyle->SetTitleFont(72);
60  gStyle->SetMarkerColor(50);
61  gStyle->SetLineColor(kWhite);
62  gStyle->SetTitleW(0.98);
63  gStyle->SetTitleH(0.05);
64  gStyle->SetTitleY(0.98);
65  gStyle->SetFillColor(kWhite);
66  gStyle->SetLineColor(kWhite);
67  gStyle->SetTitleFont(12,"D");
68 
69  TCanvas *canvas = new TCanvas("roc", "roc", 300,40, 800, 600);
70  canvas->Clear();
71  canvas->ToggleEventStatus();
72  canvas->SetLogy();
73  canvas->SetGridx();
74  canvas->SetGridy();
75  canvas->SetFillColor(kWhite);
76 
77  double far_min=1e10;
78  double rmin=1e20;
79  double rmax=0;
80  char fname[1024];
81  int nGR=0;
82  int line_style[3*nFAR_MAX];
83  int line_marker[3*nFAR_MAX];
84  int line_color[3*nFAR_MAX];
85  TString FAR_name[3*nFAR_MAX];
86  bool sigma_lines[3*nFAR_MAX];
87  TGraphErrors* gr[3*nFAR_MAX];
88  for(int n=0;n<nFAR;n++) {
89  cout << n << " OBS_TIME : " << OBS_TIME[n] << endl;
90  if(OBS_TIME[n]>0) if(far_min>1./OBS_TIME[n]) far_min=1./OBS_TIME[n];
91  vector<double> rho_far;
92  vector<double> far;
93  // read FAR
94  sprintf(fname,"%s",FAR_PATH[n].Data());
95  cout << "rate_threshold : " << fname << endl;
96  wavearray<double> RHO;
97  wavearray<double> FAR;
98  wavearray<double> eRHO;
99  wavearray<double> eFAR;
100  int far_size = readParameters(fname, RHO, eRHO, FAR, eFAR);
101  gr[nGR] == NULL;
102  if(far_size==0) continue;
103  if(rmin<RHO[0]) rmin=RHO[0];
104  if(rmax<RHO[far_size-1]) rmax=RHO[far_size-1];
105  sigma_lines[nGR] = false;
106  line_style[nGR]=LINE_STYLE[n];
107  line_marker[nGR]=LINE_MARKER[n];
108  line_color[nGR]=LINE_COLOR[n];
109  FAR_name[nGR]=FAR_NAME[n];
110  gr[nGR++] = new TGraphErrors(far_size,RHO.data,FAR.data,eRHO.data,eFAR.data);
111  gr[nGR-1]->SetMarkerStyle(20);
112  //gr[nGR-1]->SetMarkerSize(0.35);
113  gr[nGR-1]->SetMarkerSize(0.55);
114  if(n==0) gr[nGR-1]->SetMarkerColor(kBlack);
115  if(n==1) {
116  gr[nGR-1]->SetMarkerColor(kRed);
117  gr[nGR-1]->SetMarkerStyle(22);
118  gr[nGR-1]->SetMarkerSize(1.3);
119  }
120  if(n==2) gr[nGR-1]->SetMarkerColor(kRed);
121  gr[nGR-1]->SetName(TString::Format("gr%d",nGR-1));
122  }
123 
124  TMultiGraph* mg = new TMultiGraph();
125  char gTitle[256];
126  if(FAR_TITLE!="") sprintf(gTitle,FAR_TITLE.Data());
127  else sprintf(gTitle,"FAR Comparison");
128  if(FAR_PATH[1].Contains("lag0_slag0")) sprintf(gTitle,"FAR vs Rank");
129  else sprintf(gTitle,"FAR vs Rank (fake lag)");
130  mg->SetName("mg");
131  mg->SetTitle(gTitle);
132  for(int n=0;n<nGR;n++) if(gr[n]!=NULL) mg->Add(gr[n]);
133  //mg->Paint("APL");
134  //mg->Paint("AL");
135  mg->Paint("AP");
136 
137  mg->GetHistogram()->GetXaxis()->SetLabelSize(0.03);
138  mg->GetHistogram()->GetYaxis()->SetLabelSize(0.03);
139  mg->GetHistogram()->GetXaxis()->SetTitleSize(0.03);
140  mg->GetHistogram()->GetYaxis()->SetTitleSize(0.03);
141  mg->GetHistogram()->GetXaxis()->SetLabelFont(42);
142  mg->GetHistogram()->GetYaxis()->SetLabelFont(42);
143  mg->GetHistogram()->GetYaxis()->SetLabelOffset(0.01);
144  mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.5);
145 // mg->GetHistogram()->SetMinimum(far_min/2.);
146 /*
147  if(rho_min>=0) rmin=rho_min*sqrt(2);
148  if(rho_max>=0) rmax=rho_max*sqrt(2);
149  rmax=16*sqrt(2);
150 */
151  if(rho_min>=0) rmin=rho_min;
152  if(rho_max>=0) rmax=rho_max;
153  rmin = RHO.min();
154  rmax = RHO.max();
155 // if(rmin<RHO_MIN) rmin=RHO_MIN;
156 // mg->GetHistogram()->GetXaxis()->SetRangeUser(rmin,rmax);
157 
158  mg->GetXaxis()->SetTitle(gr[0]->GetXaxis()->GetTitle());
159  mg->GetXaxis()->SetLabelFont(42);
160  mg->GetYaxis()->SetLabelFont(42);
161  mg->GetXaxis()->SetTitleFont(42);
162  mg->GetYaxis()->SetTitleFont(42);
163  mg->GetXaxis()->SetTitleOffset(1.20);
164  mg->GetYaxis()->SetTitleOffset(1.20);
165  mg->GetXaxis()->SetTitleSize(0.03);
166  mg->GetYaxis()->SetTitleSize(0.03);
167  mg->GetXaxis()->CenterTitle(true); //PAPER
168  mg->GetYaxis()->CenterTitle(true); //PAPER
169  mg->GetXaxis()->SetTitle("Coherent Network SNR ( #rho )");
170  //mg->GetXaxis()->SetTitle("#eta_{c}");
171  mg->GetYaxis()->SetTitle("FAR ( yr^{-1} )");
172 
173  mg->Draw("ALP");
174 
175  // draw the legend
176 
177  TLegend* leg;
178 // leg = new TLegend(0.62,0.72,0.90,0.90,NULL,"brNDC");
179 // leg = new TLegend(0.72,0.85,1.0,1.0,NULL,"brNDC");
180  leg = new TLegend(0.72,0.87,1.0,1.0,NULL,"brNDC");
181 
182  leg->SetBorderSize(1);
183  leg->SetTextAlign(22);
184  leg->SetTextFont(12);
185  leg->SetLineColor(1);
186  leg->SetLineStyle(1);
187  leg->SetLineWidth(1);
188  leg->SetFillColor(0);
189  leg->SetFillStyle(1001);
190  leg->SetTextSize(0.03);
191  leg->SetLineColor(kBlack);
192  leg->SetFillColor(kWhite);
193 
194  char legLabel[256];
195  for(int n=0;n<nGR;n++) {
196  if(n==0) strcpy(legLabel,"Background");
197  if(n==1) strcpy(legLabel,"Foreground");
198  if(gr[n]!=NULL) TLegendEntry* eleg = leg->AddEntry(gr[n],legLabel,"lp");
199  }
200  leg->SetBorderSize(1);
201  leg->SetTextAlign(22);
202  leg->SetTextFont(12);
203  leg->SetLineColor(1);
204  leg->SetLineStyle(1);
205  leg->SetLineWidth(1);
206  leg->SetFillColor(0);
207  leg->SetFillStyle(1001);
208  leg->SetTextSize(0.05);
209  leg->SetLineColor(kBlack);
210  leg->Draw();
211 
212  // save plot
213  if(far_plot_name!="") {
214  char gfileName[1024];
215  sprintf(gfileName,"%s.gif",far_plot_name.Data());
216  canvas->Print(gfileName);
217  TString pfileName=gfileName;
218  pfileName.ReplaceAll(".gif",".png");
219  char cmd[1024];
220  sprintf(cmd,"convert %s %s",gfileName,pfileName.Data());
221  cout << cmd << endl;
222  gSystem->Exec(cmd);
223  sprintf(cmd,"rm %s",gfileName);
224  cout << cmd << endl;
225  gSystem->Exec(cmd);
226  gSystem->Exit(0);
227  }
228 
229  return;
230 }
231 
232 int writeParameters(TString fname, wavearray<double>& RHO, wavearray<double>& FAR) {
233 
234  ofstream out;
235  out.open(fname.Data(),ios::out);
236  if (!out.good()) {cout << "Error Opening File : " << fname.Data() << endl;exit(1);}
237 
238  for(int i=0;i<RHO.size();i++) {
239  out << RHO[i] << "\t" << FAR[i] << endl;
240  }
241 
242  out.close();
243 }
244 
245 
246 
247 int readParameters(TString fname, wavearray<double>& RHO, wavearray<double>& eRHO, wavearray<double>& FAR, wavearray<double>& eFAR) {
248 
249  double year = (24.*3600.*365.);
250 
251  RHO.resize(1000000);
252  eRHO.resize(1000000);
253  FAR.resize(1000000);
254  eFAR.resize(1000000);
255 
256  RHO=0.;
257  FAR=0.;
258 
259  ifstream in;
260  in.open(fname.Data(),ios::in);
261  if (!in.good()) {cout << "Error Opening File : " << fname.Data() << endl;exit(1);}
262  cout << fname.Data() << endl;
263 
264  wavearray<double> rho(1000000);
265  wavearray<double> far(1000000);
266  int m=0;
267  while (1) {
268  in >> rho[m] >> far[m];
269  if (!in.good()) break;
270  if(rho[m]>=RHO_MIN) m++;
271  }
272  in.close();
273  rho.resize(m);
274  far.resize(m);
275 
276  if(rho.size()==0) {
277  RHO.resize(0);
278  eRHO.resize(0);
279  FAR.resize(0);
280  eFAR.resize(0);
281  return;
282  }
283 
284  double pifar=far[rho.size()-1];
285  RHO[0] = rho[rho.size()-1];
286  eRHO[0] = 0;
287  FAR[0] = far[rho.size()-1];
288  eFAR[0] = 0;
289  int n=1;
290  for(int i=rho.size()-2;i>=0;i--) {
291  if(far[i]>pifar) {
292  RHO[n] = rho[i];
293  eRHO[n] = 0;
294  FAR[n] = far[i];
295  eFAR[n] = 0;
296  pifar=far[i];
297  n++;
298  }
299  }
300 
301  RHO.resize(n);
302  eRHO.resize(n);
303  FAR.resize(n);
304  eFAR.resize(n);
305 
306  wavearray<double> xRHO=RHO;
307  wavearray<double> xFAR=FAR;
308  for(int i=0;i<RHO.size();i++) {
309  RHO[i]=xRHO[RHO.size()-i-1];
310  FAR[i]=xFAR[FAR.size()-i-1];
311  FAR[i]*=year;
312  }
313  for(int i=0;i<RHO.size();i++) {
314 // cout << i << " " << RHO[i] << " " << FAR[i] << endl;
315  }
316 
317  return RHO.size();
318 }
319 
320 
321 
int writeParameters(TString fname, wavearray< double > &RHO, wavearray< double > &FAR)
strcpy(analysis,"2G")
int readParameters(TString fname, wavearray< double > &RHO, wavearray< double > &eRHO, wavearray< double > &FAR, wavearray< double > &eFAR)
TString PLOT_PATH
Definition: Draw_FARvsRHO.C:22
shift breaksw case n
Definition: cwb_clchunk.csh:70
TGraph * gr
Definition: Make_PP_IFAR.C:146
void PlotFAR(int nfar, TString far_plot_name, double rho_min=-1, double rho_max=-1)
Definition: Draw_FARvsRHO.C:53
void Draw_FARvsRHO(TString ifile_bkg, TString ifile_fgd, TString ofile="")
Definition: Draw_FARvsRHO.C:25
int LINE_MARKER[nFAR_MAX]
Definition: Draw_FARvsRHO.C:13
TLegend * leg
Definition: Make_PP_IFAR.C:152
wavearray< double > xFAR
Definition: Make_PP_IFAR.C:163
char ofile[1024]
int nFAR
Definition: Draw_FARvsRHO.C:7
TString FAR_PLOT_NAME
Definition: Draw_FARvsRHO.C:8
double ZERO_LAG_TIME[nFAR_MAX]
Definition: Draw_FARvsRHO.C:16
#define RHO_MIN
Definition: Draw_FARvsRHO.C:4
int LINE_COLOR[nFAR_MAX]
Definition: Draw_FARvsRHO.C:11
TCanvas * canvas
Definition: Make_PP_IFAR.C:145
#define nFAR_MAX
Definition: Draw_FARvsRHO.C:2
double OBS_TIME[nFAR_MAX]
Definition: Draw_FARvsRHO.C:14
TString FAR_PATH[nFAR_MAX]
Definition: Draw_FARvsRHO.C:15
shift breaksw case m
TString FAR_NAME[nFAR_MAX]
Definition: Draw_FARvsRHO.C:10
int LINE_STYLE[nFAR_MAX]
Definition: Draw_FARvsRHO.C:12
char fname[256]
TString FAR_TITLE
Definition: Draw_FARvsRHO.C:9