Logo coherent WaveBurst  
Library Reference Guide
Logo
DrawPercentageVsAreaPRC.C
Go to the documentation of this file.
1 // Plot Error Regions Percentage vs Area
2 // In this examples we use 4 mdc types at SNR = 10*sqrt(nIFO)
3 
4 #define NMDC 4
5 
6 #define PIXEL_AREA 1.0
7 #define NPIXELS 20
8 
9 //#define nIFO 2
10 #define nIFO 3
11 
12 double factors[3] = {10*sqrt(nIFO), 20*sqrt(nIFO), 30*sqrt(nIFO)};
13 TString mdc[4] = {"WNB250_100_0d100","SG235Q3","SG235Q8d9","SGC235Q9"};
14 
15 double GetPercentage(int idmdc, float idfactor, double area, TString fname);
16 
17 void DrawPercentageVsAreaPRC(TString ifile, int idfactor, bool save=false)
18 {
19 
20  TObjArray* token = TString(ifile).Tokenize(TString('/'));
21  TObjString* sfile = (TObjString*)token->At(token->GetEntries()-1);
22  TString TITLE = sfile->GetString();
23  TString ofile = sfile->GetString();
24  ofile.ReplaceAll(".root",".txt");
25  TITLE.ReplaceAll(".root","");
26 
27  ofstream out;
28  out.open(ofile.Data(),ios::out);
29  if (!out.good()) {cout << "Error Opening File : " << ofile.Data() << endl;exit(1);}
30  cout << "Create file : " << ofile.Data() << endl;
31 
32  double area[NPIXELS];
33  for (int i=0;i<NPIXELS;i++) area[i]=PIXEL_AREA*(i+1);
34 
35  double coverage[NMDC][NPIXELS];
36  for (int i=0;i<NMDC;i++) {
37  for (int j=1;j<NPIXELS;j++) {
38  coverage[i][j]=GetPercentage(i+1,idfactor,area[j],ifile);
39  out << mdc[i].Data() << " " << area[j] << " " << coverage[i][j] << endl;
40  cout << mdc[i].Data() << " " << area[j] << " " << coverage[i][j] << endl;
41  }
42  }
43  out.close();
44 
45  TCanvas* canvas = new TCanvas("fom", "PRC", 300,40, 600, 600);
46  canvas->Clear();
47  canvas->ToggleEventStatus();
48  canvas->SetFillColor(0);
49  canvas->SetGridx();
50  canvas->SetGridy();
51  canvas->SetLogy(false);
52  canvas->SetLogx(false);
53 
54  gStyle->SetTitleH(0.032);
55  gStyle->SetTitleW(0.98);
56  gStyle->SetTitleY(0.98);
57  gStyle->SetTitleFont(72);
58  gStyle->SetLineColor(kWhite);
59  gStyle->SetPalette(1,0);
60  gStyle->SetNumberContours(256);
61 
62  Style_t markers[32]= {20,21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,
63  21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,20 };
64 
65  Color_t colors[32] = { 6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7,
66  6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7 };
67 
68  TGraph* gr[NMDC];
69  for(int i=0;i<NMDC;i++) {
70  gr[i] = new TGraph(NPIXELS,area,coverage[i]);
71  gr[i]->SetLineColor(colors[i]);
72  gr[i]->SetLineWidth(1);
73  gr[i]->SetMarkerColor(colors[i]);
74  gr[i]->SetMarkerStyle(markers[i]);
75  }
76 
77  TMultiGraph* mg = new TMultiGraph();
78  for(int i=0;i<NMDC;i++) mg->Add(gr[i],"lp");
79  mg->Paint("ap");
80  char title[256];
81  sprintf(title,"%s - netSNR = %3.2f",TITLE.Data(),factors[idfactor]);
82  mg->GetHistogram()->SetTitle(title);
83  mg->GetHistogram()->GetXaxis()->SetTitle("Area (degrees^2)");
84  mg->GetHistogram()->GetYaxis()->SetTitle("Percentage");
85  mg->GetHistogram()->GetXaxis()->SetRangeUser(0,100);
86  mg->GetHistogram()->GetYaxis()->SetRangeUser(0,100);
87  mg->GetHistogram()->GetXaxis()->SetTitleOffset(1.3);
88  mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.3);
89  mg->GetHistogram()->GetXaxis()->CenterTitle(true);
90  mg->GetHistogram()->GetYaxis()->CenterTitle(true);
91  mg->GetHistogram()->GetXaxis()->SetLabelFont(42);
92  mg->GetHistogram()->GetXaxis()->SetTitleFont(42);
93  mg->GetHistogram()->GetYaxis()->SetLabelFont(42);
94  mg->GetHistogram()->GetYaxis()->SetTitleFont(42);
95  mg->Draw("a");
96 
97  TLegend* leg;
98  double hleg = 0.8-NMDC*0.05;
99  leg = new TLegend(0.1291513,hleg,0.6244966,0.8738739,NULL,"brNDC");
100 
101  leg->SetBorderSize(1);
102  leg->SetTextAlign(22);
103  leg->SetTextFont(12);
104  leg->SetLineColor(1);
105  leg->SetLineStyle(1);
106  leg->SetLineWidth(1);
107  leg->SetFillColor(0);
108  leg->SetFillStyle(1001);
109  leg->SetTextSize(0.04);
110  leg->SetLineColor(kBlack);
111  leg->SetFillColor(kWhite);
112 
113  char label[256];
114  for(int i=0;i<NMDC;i++) {
115  sprintf(label,"%s ",mdc[i].Data());
116  leg->AddEntry(gr[i],label,"lp");
117  }
118  leg->Draw();
119 
120  if(save) {
121  char label[64];sprintf(label,"_%g_PercVsArea.gif",factors[idfactor]);
122  TString gfileName=ofile;
123  gfileName.ReplaceAll(".txt",label);
124  canvas->Print(gfileName);
125  TString pfileName=gfileName;
126  pfileName.ReplaceAll(".gif",".png");
127  char cmd[1024];
128  sprintf(cmd,"convert %s %s",gfileName.Data(),pfileName.Data());
129  cout << cmd << endl;
130  gSystem->Exec(cmd);
131  sprintf(cmd,"rm %s",gfileName.Data());
132  cout << cmd << endl;
133  gSystem->Exec(cmd);
134  exit(0);
135  }
136 }
137 
138 double GetPercentage(int idmdc, int idfactor, double area, TString fname) {
139 
140  TFile *ifile = TFile::Open(fname.Data());
141  TTree* itree = (TTree *) gROOT->FindObject("waveburst");
142  itree->SetEstimate(itree->GetEntries());
143 
144  char selection[1024];
145  char tree_cut[1024];
146  sprintf(selection,"erA[0]");
147  sprintf(tree_cut,"abs(time[0]-time[3])<0.1 && type[1]==%d && abs(factor-%f)<0.1",idmdc,factors[idfactor]);
148 
149  itree->Draw(selection,tree_cut,"goff");
150  int size_tot = itree->GetSelectedRows();
151  //cout << "size_tot : " << size_tot << endl;
152 
153  sprintf(tree_cut,"erA[0]<=%f && %s",sqrt(area),tree_cut);
154  //cout << tree_cut << endl;
155  itree->Draw(selection,tree_cut,"goff");
156  int size = itree->GetSelectedRows();
157  //cout << "size : " << size << endl;
158  if(size==0) {
159  delete itree;
160  delete ifile;
161  return 0;
162  }
163 
164  cout << "size/size_tot : " << size << "/" << size_tot << endl;
165 
166  double perc = 0.;
167  if(size_tot>0) perc = 100.*(double)size/(double)size_tot;
168  delete itree;
169  delete ifile;
170 
171  return perc;
172 
173  delete itree;
174  delete ifile;
175 
176  return perc;
177 }
178 
char ofile[1024]
#define NPIXELS
TString("c")
#define TITLE
Definition: TestSiteJ1.C:44
void DrawPercentageVsAreaPRC(TString ifile, int idfactor, bool save=false)
ofstream out
Definition: cwb_merge.C:214
return wmap canvas
double GetPercentage(int idmdc, float idfactor, double area, TString fname)
Long_t size
Color_t colors[16]
int j
Definition: cwb_net.C:28
i drho i
TGraph * gr
TString label
Definition: MergeTrees.C:21
#define NMDC
char fname[1024]
TObjArray * token
#define PIXEL_AREA
TFile * ifile
char title[256]
Definition: SSeriesExample.C:1
char cmd[1024]
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
TTree * itree
#define nIFO
bool save
TString mdc[4]
TMultiGraph * mg
double factors[3]
exit(0)