32 #define MDC_TYPE_NULL 100000
49 vector<int>& mdc_type, vector<float>&
factor);
58 gROOT->Macro(cfgFile);
66 if(
ROC_DIR!=
"") gROOT->SetBatch(
true);
69 sprintf(cmd,
"cp %s %s/.",cfgFile.Data(),roc_dir);
72 vector<TString> mdc_name;
76 sprintf(fname,
"%s/eff_%d_threshold_factors.txt",
SIM_DIR[0].Data(),ieff);
79 sprintf(cmd,
"cp %s %s/.",fname,roc_dir);
86 vector<float> xfactor;
88 sprintf(xfname,
"%s/eff_%d_threshold_factors.txt",
SIM_DIR[
n].Data(),ieff);
89 cout <<
"Process File : " << xfname << endl;
92 cout <<
"Num parameters files inconsistents : " << xfname << endl;
99 if(
TString(xmdc_name[
i]).Contains(mdc_name[
j])) check[
j]=
i;
100 if(
TString(mdc_name[j]).Contains(xmdc_name[i])) check[
j]=
i;
103 for(
int i=0;
i<
nmdc;
i++)
if(check[
i])
if(factor[i]!=xfactor[check[i]]) check[
i]=-1;
104 for(
int i=0;i<
nmdc;i++) {
106 cout <<
"Parameters files inconsistents : " << endl;
107 cout <<
"xmdc_name : " << xmdc_name[
i] <<
" mdc_name : " << mdc_name[check[
i]] << endl;
108 cout <<
"xfactor : " << xfactor[
i] <<
" factor : " << factor[check[
i]] << endl;
116 cout <<
"-------------------------------------------------" << endl;
117 cout <<
"list of availables mdc types" << endl;
118 cout <<
"-------------------------------------------------" << endl;
120 cout <<
"mdc_type : " << mdc_type[
j] <<
"\tmdc_name : " << mdc_name[
j] << endl;
122 cout <<
"-------------------------------------------------" << endl;
127 cout <<
"mdc_type not allowed" << endl;
133 PlotROC(nROC, ieff, mdc_name[j], factor[j], roc_dir);
139 cout <<
"ROC report page : " << endl;
140 cout << roc_dir << endl;
141 cout <<
ROC_WWW <<
"_" << ieff << endl;
150 gStyle->SetFrameBorderMode(0);
153 gStyle->SetTitleFont(72);
154 gStyle->SetMarkerColor(50);
155 gStyle->SetLineColor(kWhite);
156 gStyle->SetTitleW(0.98);
157 gStyle->SetTitleH(0.05);
158 gStyle->SetTitleY(0.98);
159 gStyle->SetFillColor(kWhite);
160 gStyle->SetLineColor(kWhite);
161 gStyle->SetTitleFont(12,
"D");
163 TCanvas *
canvas =
new TCanvas(
"roc",
"roc", 300,40, 800, 500);
165 canvas->ToggleEventStatus();
169 canvas->SetFillColor(kWhite);
176 vector<double> rho_far;
177 vector<double> rho_eff;
182 cout <<
"rate_threshold : " << fname << endl;
185 sprintf(fname,
"%s/eff_%d_threshold_%s.txt",
SIM_DIR[
n].Data(),ieff,mdc_name.Data());
186 cout <<
"eff_threshold : " << fname << endl;
188 if(far_size!=sim_size) {
189 cout <<
"rate_threshold not compatible with eff_threshold" << endl;
190 cout <<
"far_size : " << far_size <<
" sim_size : " << sim_size << endl;
193 for(
int j=0;
j<sim_size;
j++) {
194 if(rho_far[
j]!=rho_eff[
j]) {
195 cout <<
"rate_threshold not compatible with eff_threshold" << endl;
196 cout <<
"thresholds values are different" << endl;
197 cout << j <<
" rho_far : " << rho_far[
j] <<
" =rho_eff : " << rho_eff[
j] << endl;
204 for(
int j=0;
j<sim_size;
j++) {
207 if((wfar[wsize]>0)&&(weff[wsize]>0)) {
208 if(weff[wsize]<eff_min) eff_min=weff[wsize];
209 if(weff[wsize]>eff_max) eff_max=weff[wsize];
214 gr[
n] =
new TGraph(wsize,wfar.
data,weff.
data);
217 gr[
n]->SetLineWidth(2);
219 gr[
n]->SetMarkerStyle(20);
224 TMultiGraph*
mg =
new TMultiGraph();
226 sprintf(gTitle,
"ROC : mdc = %s : factor = %g",mdc_name.Data(),
factor);
227 mg->SetTitle(gTitle);
228 for(
int n=0;
n<
nROC;
n++) mg->Add(gr[
n]);
232 mg->GetHistogram()->GetXaxis()->SetLabelSize(0.04);
233 mg->GetHistogram()->GetYaxis()->SetLabelSize(0.04);
234 mg->GetHistogram()->GetXaxis()->SetTitleSize(0.04);
235 mg->GetHistogram()->GetYaxis()->SetTitleSize(0.04);
236 mg->GetHistogram()->GetXaxis()->SetLabelFont(42);
237 mg->GetHistogram()->GetYaxis()->SetLabelFont(42);
238 mg->GetHistogram()->GetYaxis()->SetLabelOffset(0.01);
239 mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.5);
243 mg->GetHistogram()->GetYaxis()->SetRangeUser(0,1);
245 mg->GetXaxis()->SetTitle(gr[0]->
GetXaxis()->GetTitle());
246 mg->GetXaxis()->SetLabelFont(42);
247 mg->GetYaxis()->SetLabelFont(42);
248 mg->GetXaxis()->SetTitleFont(42);
249 mg->GetYaxis()->SetTitleFont(42);
250 mg->GetXaxis()->SetTitleOffset(1.20);
251 mg->GetYaxis()->SetTitleOffset(1.20);
252 mg->GetXaxis()->SetTitleSize(0.04);
253 mg->GetYaxis()->SetTitleSize(0.04);
254 mg->GetXaxis()->SetTitle(
"FAR");
255 mg->GetYaxis()->SetTitle(
"Efficiency");
262 double hleg = 0.15+nROC*0.05;
263 leg =
new TLegend(0.61,hleg,0.99,0.15,NULL,
"brNDC");
265 leg->SetBorderSize(1);
266 leg->SetTextAlign(22);
267 leg->SetTextFont(12);
268 leg->SetLineColor(1);
269 leg->SetLineStyle(1);
270 leg->SetLineWidth(1);
271 leg->SetFillColor(0);
272 leg->SetFillStyle(1001);
273 leg->SetTextSize(0.03);
274 leg->SetLineColor(kBlack);
275 leg->SetFillColor(kWhite);
277 for(
int n=0;n<
nROC;n++) {
280 leg->AddEntry(gr[n],legLabel,
"lp");
286 char gfileName[1024];
287 sprintf(gfileName,
"%s/roc_%s.gif",ofDir.Data(),mdc_name.Data());
288 canvas->Print(gfileName);
290 pfileName.ReplaceAll(
".gif",
".png");
292 sprintf(cmd,
"convert %s %s",gfileName,pfileName.Data());
295 sprintf(cmd,
"rm %s",gfileName);
304 vector<int>& mdc_type, vector<float>&
factor) {
313 if (!in.good()) {cout <<
"Error Opening File : " << fname.Data() << endl;
exit(1);}
316 in >> xmdc_name >> xmdc_type >>
xfactors;
317 if (!in.good())
break;
319 mdc_name.push_back(xmdc_name);
320 mdc_type.push_back(xmdc_type);
321 factor.push_back(xfactors);
325 return mdc_name.size();
339 if (!in.good()) {cout <<
"Error Opening File : " << fname.Data() << endl;
exit(1);}
343 if (!in.good())
break;
356 vector<TString> mdc_name;
357 vector<int> mdc_type;
360 sprintf(fname,
"%s/eff_%d_threshold_factors.txt",roc_dir.Data(),ieff);
363 char roc_html_file[1024];
sprintf(roc_html_file,
"%s/index.html",roc_dir.Data());
367 out <<
"<html>" << endl;
368 out <<
"<font color=\"black\" style=\"font-weight:bold;\"><center><p><h2>"
369 <<
ROC_TITLE <<
"</h2><p><center></font>" << endl;
372 out <<
"<h4>" << ROC_NAME[
n] <<
" : " << endl;
373 sprintf(oline,
"<a target=\"_parent\" href=\"%s\">bkg report page</a>",BKG_WWW[
n].Data());
374 out << oline << endl;
375 out <<
"---" << endl;
376 sprintf(oline,
"<a target=\"_parent\" href=\"%s\">sim report page</a>",SIM_WWW[
n].Data());
377 out << oline << endl;
378 out <<
"</h4>" << endl;
381 out <<
"<hr><br>" << endl;
382 for(
int i=0;
i<mdc_name.size();
i++) {
383 out <<
"<table border=0 cellpadding=2 align=\"center\">" << endl;
384 out <<
"<tr align=\"center\">" << endl;
385 out <<
"<td><font style=\"font-weight:bold;\"><center><p><h2>"
386 << mdc_name[
i] <<
"</h2><p><center></font></td>" << endl;
387 out <<
"</tr>" << endl;
388 out <<
"<tr align=\"center\">" << endl;
389 sprintf(oline,
"<td><a href=\"%s_%d/roc_%s.png\"><img src=\"%s_%d/roc_%s.png\" width=650></a></td>",
390 ROC_WWW.Data(),ieff,mdc_name[
i].Data(),ROC_WWW.Data(),ieff,mdc_name[
i].Data());
391 out << oline << endl;
392 out <<
"</tr>" << endl;
393 out <<
"</table>" << endl;
395 out <<
"</html>" << endl;
TString BKG_DIR[nROC_MAX]
void PlotROC(int nroc, int ieff, TString mdc_name, float factor, TString ofDir)
void MakeROC(TString cfgFile, int ieff=50, int imdc_type=MDC_TYPE_NULL)
TString SIM_WWW[nROC_MAX]
TString BKG_WWW[nROC_MAX]
TString SIM_DIR[nROC_MAX]
int readParameters(TString fname, vector< TString > &mdc_name, vector< int > &mdc_type, vector< float > &factor)
void MakeHtml(TString roc_dir, int ieff, TString ROC_WWW, TString *BKG_WWW, TString *SIM_WWW, TString *ROC_NAME)
cout<<"Number of Entries: "<< num<< endl;double *slag1=new double[slag_entries];slag1=wave.GetV1();double *slag2=new double[slag_entries];slag2=wave.GetV2();char mytitle[256];double SlagMax=wave.GetMaximum("slag")+segLen/2.;double SlagMin=wave.GetMinimum("slag")-segLen/2.;int NSlag=TMath::FloorNint((SlagMax-SlagMin)/segLen);cout<< "SLAG MAX : "<< wave.GetMaximum("slag")<< " s SLAG MIN : "<< wave.GetMinimum("slag")<< " s #SLAGS : "<< NSlag-1<< endl;if(NSlag==1){cout<<"Just one slag....Skipping further execution!"<< endl;exit(0);}sprintf(mytitle,"FAR distribution over slags (post cat3 & rho>%f)", T_cut);TH2F *Slag=new TH2F("SLAG", mytitle, NSlag, SlagMin/86400., SlagMax/86400., NSlag, SlagMin/86400., SlagMax/86400.);Slag-> GetXaxis() -> SetTitle("slag[1] shift [day]")
TString ROC_NAME[nROC_MAX]
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
size_t imdc_type[NMDC_MAX]