7 #define FAR_FILE_NAME "rate_threshold_veto.txt"
8 #define LIV_FILE_NAME "live.txt"
25 #define DENSITY_FORMULA
127 TB.
checkFile(gSystem->Getenv(
"CWB_ROOTLOGON_FILE"));
128 TB.
checkFile(gSystem->Getenv(
"CWB_PARAMETERS_FILE"));
129 TB.
checkFile(gSystem->Getenv(
"CWB_UPARAMETERS_FILE"));
130 TB.
checkFile(gSystem->Getenv(
"CWB_PPARAMETERS_FILE"));
131 TB.
checkFile(gSystem->Getenv(
"CWB_UPPARAMETERS_FILE"));
132 TB.
checkFile(gSystem->Getenv(
"CWB_EPPARAMETERS_FILE"));
148 cout<<endl<<
"cwb_mkfad.C : Warning : pp_fad is not defined, macro is not executed !!!"<<endl<<endl;
155 cout<<
"cwb_mkfad.C : Error : pp_fad --bkgrep not defined"<<endl;
exit(1);}
162 cout<<
"cwb_mkfad.C : Info : pp_fad --hrss not defined : set hrss=1"<<endl;}
175 cout<<
"cwb_mkfad.C : Error : pp_fad --rhomin must be a number"<<endl;
184 cout<<
"cwb_mkfad.C : Error : pp_fad --gfit bad value -> must be true/false"<<endl;
197 cout<<
"cwb_mkfad.C : Error : pp_fad --units bad value -> must be K/M"<<endl;
206 cout<<
"cwb_mkfad.C : Error : pp_fad --distr bad value -> must be MDC/FORMULA"<<endl;
215 if((_pp_fad_nzbins[0]==
'+')||(_pp_fad_nzbins[0]==
'-')) _pp_fad_nzbins.Remove(0,1);
216 if(_pp_fad_nzbins.IsDigit()) {
219 cout<<
"cwb_mkfad.C : Error : pp_fad --nzbins must be an integer number"<<endl;
230 cout<<
"cwb_mkfad.C : Error : pp_fad --nbins must be an integer number"<<endl;
237 if(pp_fad_header==
"") pp_fad_header=
"false";
238 pp_fad_header.ToUpper();
242 if(pp_fad_multi==
"") pp_fad_multi=
"false";
243 pp_fad_multi.ToUpper();
247 pp_fad_title.ReplaceAll(
"*",
" ");
248 if(pp_fad_title==
"") pp_fad_title=
"FAD";
252 pp_fad_subtitle.ReplaceAll(
"*",
" ");
257 gCANVAS =
new TCanvas(
"canvas",
"canvas",16,30,825,546);
258 gCANVAS->Range(-19.4801,-9.25,-17.4775,83.25);
264 gStyle->SetOptFit(kTRUE);
278 sprintf(cmd,
"network* net = new network;");
279 gROOT->ProcessLine(cmd);
282 sprintf(cmd,
"CWB::config* cfg = (CWB::config*)%p;",cfg);
283 gROOT->ProcessLine(cmd);
284 sprintf(cmd,
"int gIFACTOR=1;");
285 gROOT->ProcessLine(cmd);
290 gINSPIRAL = gMDC->GetInspiral()!=
"" ?
true :
false;
294 TGlobal*
global = (TGlobal*)gROOT->GetGlobal(
"mdcHRSS",
true);
296 cout << global->GetTypeName() << endl;
297 if(
TString(global->GetTypeName())!=
"vector<double>") {
298 cout <<
"cwb_mkfad.C - Error : 'vector<double> mdcHRSS' do not exist in CINT" << endl;
309 gTRWAVE = (TTree*) gROOT->FindObject(
"waveburst");
312 gTRMDC = (TTree*) gROOT->FindObject(
"mdc");
317 char liv_file_path[1024];
324 cout <<
"Zero Lag Observation Time : " <<
gOBSTIME <<
" sec" << endl;
326 cout <<
"cwb_mkfad.C - Error : Observation Time is zero" << endl;
327 cout <<
" probably your set do not includes the zero lag" << endl << endl;
330 cout <<
"Background Observation Time : " <<
gBKGTIME <<
" sec" << endl;
336 char far_file_path[1024];
340 infar.open(far_file_path,
ios::in);
341 if (!infar.good()) {cout <<
"Error Opening File : " << far_file_path << endl;
exit(1);}
344 infar >> irho >> ifar;
345 if (!infar.good())
break;
351 dFAR.push_back(ifar);
356 RHO.push_back(RHO[RHO.size()-1]+drho);
362 eRHO.resize(RHO.size());
366 for(
int i=0;
i<RHO.size()-1;
i++) {
370 for(
int i=0;
i<RHO.size()-1;
i++) {
385 ifstream in_hrss_norm;
390 in_hrss_norm >> hrss_temp;
391 if (!in_hrss_norm.good())
break;
396 cout <<
"cwb_mkfad.C - Errors : too many waveforms on " <<
pp_fad_hrss <<
" file " << endl;
400 in_hrss_norm.close();
426 if(bexit) gSystem->Exit(0);
else return;
442 ptitle=
TString(
"Effective Radius vs ")+rho_type;
443 gStyle->SetStatY(0.3);
447 }
else if(
gPTYPE==
"REFFvsIRHO") {
450 ptitle=
TString(
"Effective Radius vs inverse ")+rho_type;
451 xtitle=
TString(rho_type)+
"^{-1}";
454 }
else if(
gPTYPE==
"VISvsRHO") {
457 ptitle=
TString(
"Visible Volume vs ")+rho_type;
459 ytitle=
"Vvis (Kpc^{3})";
461 }
else if(
gPTYPE==
"PRODvsFAD") {
464 ptitle=
TString(
"Productivity vs False Alarm Density");
465 xtitle=
"FAD (Kpc^{-3} Kyr^{-1})";
466 ytitle=
"Productivity (Kpc^{3} Kyr)";
468 }
else if(
gPTYPE==
"FADvsRHO") {
471 ptitle=
TString(
"False Alarm Density vs ")+rho_type;
473 ytitle=
"FAD (Kpc^{-3} Kyr^{-1})";
475 }
else if(
gPTYPE==
"FARvsRHO") {
478 ptitle=
TString(
"False Alarm Rate vs ")+rho_type;
480 ytitle=
"False Alarm Rate (sec^{-1})";
482 }
else if(
gPTYPE==
"FAPvsRHO") {
485 ptitle=
TString(
"False Alarm Probability vs ")+rho_type;
487 ytitle=
"False Alarm Probability";
489 }
else if(
gPTYPE==
"EVTvsRHO") {
492 ptitle=
TString(
"Expected background events per Observation time vs ")+rho_type;
494 ytitle=
"Expected Events";
496 }
else if(
gPTYPE==
"OBSTIMEvsFAR") {
499 ptitle=
TString(
"Observation Time vs False Alarm Rate");
500 xtitle=
"FAR (sec^{-1})";
501 ytitle=
"Observation Time (sec)";
503 }
else if(
gPTYPE==
"RECvsINJ") {
506 ptitle=
"Reconstructed events vs Injected events";
507 gStyle->SetOptStat(0);
508 xtitle =
"distance (Kpc)";
517 if(pAll)
for(
int i=0;
i<=
N;
i++)
RECvsINJ(
i, ptitle, xtitle, ytitle);
518 else RECvsINJ(0, ptitle, xtitle, ytitle);
523 Plot(0, ptitle, xtitle, ytitle);
527 if(pAll)
for(
int i=0;
i<=
N;
i++)
Plot(
i, ptitle, xtitle, ytitle);
528 else Plot(0, ptitle, xtitle, ytitle);
530 for(
int i=1;
i<=
N;
i++)
Plot(
i, ptitle, xtitle, ytitle);
555 double min_dist =
gTRMDC->GetMinimum(
"distance");
556 double max_dist =
gTRMDC->GetMaximum(
"distance");
561 if(enorm>enorm_max) enorm_max=enorm;
563 min_dist *= enorm_max;
564 max_dist *= enorm_max;
567 TH1F* hdist =
new TH1F(
"hdist",
"hdist",
gNBINS,1000*min_dist,1000*max_dist);
569 TTreeFormula mcut(
"mcut", cut,
gTRMDC);
570 gTRMDC->SetBranchStatus(
"*",
false);
571 gTRMDC->SetBranchStatus(
"distance",
true);
572 gTRMDC->SetBranchStatus(
"type",
true);
575 gTRMDC->SetBranchAddress(
"distance",&distance);
576 gTRMDC->SetBranchAddress(
"type",&type);
577 int msize =
gTRMDC->GetEntries();
579 for(
int i=0;
i<msize;
i++) {
581 if(mcut.EvalInstance()==0)
continue;
589 hdist->Fill(distance);
592 cout <<
"nmdc : " << nmdc << endl;
593 gTRMDC->SetBranchStatus(
"*",
true);
615 int entries = gMDC->
GetPar(
"entries",sky_parms,error);
616 double min_dist = gMDC->
GetPar(
"rho_min",sky_parms,error);
617 if(error) min_dist=0.;
618 double dist_max = gMDC->
GetPar(
"rho_max",sky_parms,error);
619 if(error) dist_max=0.;
621 bool formula = ((sky_dist_formula!=
"")&&(dist_max>0)) ?
true :
false;
627 cout <<
"sky_dist_formula : " << sky_dist_formula << endl;
628 cout <<
"min_dist : " << min_dist <<
" dist_max : " << dist_max << endl;
633 TF1 *fdist =
new TF1(
"fdist",sky_dist_formula,min_dist,dist_max);
634 double norm=fdist->Integral(min_dist,dist_max);
636 cout << norm << endl;
639 char vdens_expression[256];
640 sprintf(vdens_expression,
"(4*TMath::Pi()*x*x)/(%f*(%s))",norm,sky_dist_formula.Data());
641 cout <<
"vdens_expression : " << vdens_expression << endl;
642 vdens =
new TF1(
"vdens",vdens_expression,min_dist,dist_max);
649 for(
int i=1;
i<=hdist->GetNbinsX();
i++) {
650 double value = hdist->GetBinContent(
i);
651 value /= hdist->GetBinWidth(
i);
652 hdist->SetBinContent(
i,value);
657 cout <<
"cwb_mkfad.C - Error : hdist is NULL" << endl;
669 for(
int n=nRHO-1;
n>=0;
n--) {
674 sprintf(sel,
"range[1]:type[1]");
676 sprintf(cut,
"abs(time[0]-time[%d])<%f && netcc[%d]>%f && rho[%d]>%f && rho[%d]<=%f",
679 sprintf(cut,
"type[1]==%d && abs(time[0]-time[%d])<%f && netcc[%d]>%f && rho[%d]>%f && rho[%d]<=%f",
687 double* range =
gTRWAVE->GetV1();
688 double* itype =
gTRWAVE->GetV2();
693 double dist=1000*range[
i];
703 ivdens = vdens->Eval(dist);
708 eVIS[
n]+=pow(ivdens,2);
720 if(hdist)
delete hdist;
734 ptitle.ReplaceAll(
"Kpc",
"Mpc");
735 xtitle.ReplaceAll(
"Kpc",
"Mpc");
736 ytitle.ReplaceAll(
"Kpc",
"Mpc");
737 ptitle.ReplaceAll(
"Kyr",
"Myr");
738 xtitle.ReplaceAll(
"Kyr",
"Myr");
739 ytitle.ReplaceAll(
"Kyr",
"Myr");
761 double Kyr = 86400.*365.*1000.;
762 double Myr = 86400.*365.*1000000.;
775 mFAD=0;mFAD[0]=FAD[0];meFAD[0]=eFAD[0];
777 if(FAD[
n]<mFAD[
n-1]) {mFAD[
n]=FAD[
n];meFAD[
n]=eFAD[
n];}
778 else {mFAD[
n]=mFAD[
n-1];meFAD[
n]=meFAD[
n-1];}
780 for(
int n=0;
n<
nRHO;
n++) {FAD[
n]=mFAD[
n];eFAD[
n]=meFAD[
n];}
786 for(
int n=nRHO-1;
n>0;
n--) FAD[
n-1]+=FAD[
n];
806 mFAD=0;mFAD[nRHO-1]=FAD[nRHO-1];
807 for(
int n=nRHO-2;
n>=0;
n--) {
808 if(FAD[
n]>mFAD[
n+1]) mFAD[
n]=FAD[
n];
else mFAD[
n]=mFAD[
n+1];
815 for(
int n=0;
n<
nRHO;
n++) {FAD[
n]*=Xyr;eFAD[
n]*=Xyr;}
820 if(
gPTYPE==
"FADvsRHO") { y[
n]=FAD[
n]; ey[
n]=eFAD[
n]; }
822 x[
n]=FAD[
n]; ex[
n]=eFAD[
n];
824 if(
n && (FAD[
n]==FAD[
n-1])) {
825 y[
n]=y[
n-1]; ey[
n]=ey[
n-1];
832 if(
n && (FAD[
n]==FAD[
n-1])) {
833 y[
n]=y[
n-1]; ey[
n]=ey[
n-1];
840 if(
n && (FAD[
n]==FAD[
n-1])) {
841 y[
n]=y[
n-1]; ey[
n]=ey[
n-1];
851 if(
gPTYPE==
"OBSTIMEvsFAR") {
878 if(
gPTYPE==
"REFFvsIRHO") {
896 sprintf(title,
"%s : %s", ptitle.Data(),
"ALL");
899 sprintf(title,
"%s : %s : Strain @ 10Kpc = %g",
900 ptitle.Data(),gMDC->
wfList[mtype-1].name.Data(),
normHRSS[mtype-1]);
903 ptitle.Data(),gMDC->
wfList[mtype-1].name.Data());
908 cout <<
"MakeFAD.C : Error - mtype=0 non allowed when data are not normalized" << endl;
911 sprintf(title,
"%s : %s : Strain @ 10Kpc = %g",
912 ptitle.Data(),gMDC->
wfList[mtype-1].name.Data(),
mdcHRSS[mtype-1]);
915 if(
gPTYPE==
"EVTvsRHO")
sprintf(title,
"%s : %s", ptitle.Data(),
"ALL");
917 TGraphErrors*
gr =
new TGraphErrors;
919 gr->SetPoint(cnt,x[0],y[0]);
920 gr->SetPointError(cnt++,0,0);
922 double dx = (x[
i]-x[
i-1])/10000.;
923 gr->SetPoint(cnt,x[
i],y[i-1]);
925 gr->SetPointError(cnt++,ex[i],ey[i-1]);
926 gr->SetPoint(cnt,x[i]+dx,y[i]);
928 gr->SetPointError(cnt++,ex[i],ey[i]);
930 gr->GetHistogram()->GetXaxis()->SetTitle(xtitle.Data());
931 gr->GetHistogram()->GetYaxis()->SetTitle(ytitle.Data());
932 gr->GetHistogram()->GetXaxis()->SetTitleOffset(1.4);
933 gr->GetHistogram()->GetYaxis()->SetTitleOffset(1.4);
936 double xmax=0;
double xmin=1e80;
937 double ymax=0;
double ymin=1e80;
938 for(
int i=0;
i<
nRHO;
i++) {
if(x[
i]>xmax) xmax=x[
i];
if(x[
i]<xmin && x[
i]!=0) xmin=x[
i];}
939 for(
int i=0;
i<
nRHO;
i++) {
if(y[
i]>ymax) ymax=y[
i];
if(y[
i]<ymin && y[
i]!=0) ymin=y[
i];}
940 if(xmax/xmin<10)
gCANVAS->SetLogx(
false);
941 if(ymax/ymin<10)
gCANVAS->SetLogy(
false);
942 gr->GetHistogram()->GetXaxis()->SetRangeUser(xmin,xmax);
943 gr->GetHistogram()->GetYaxis()->SetRangeUser(0.95*ymin,1.05*ymax);
946 gr->SetLineColor(kRed);
949 gr->SetFillStyle(3003);
955 if(
gPTYPE==
"VISvsRHO") gfit =
new TF1(
"gfit",
"[0]+[1]/pow(x,3)",x[0],x[nRHO-1]);
956 if(
gPTYPE==
"REFFvsRHO") gfit =
new TF1(
"gfit",
"[0]/x",x[0],x[nRHO-1]);
957 if(
gPTYPE==
"REFFvsIRHO") gfit =
new TF1(
"gfit",
"[0]*x",x[0],x[nRHO-1]);
961 gfit=gr->GetFunction(
"gfit");
962 gfit->SetLineColor(kBlue);
963 gfit->SetLineWidth(1);
978 cout << ofname << endl;
983 cout <<
"Write values on: " << ofname << endl;
1011 sprintf(cut,
"type==%d",itype);
1014 float dmin =
gTRMDC->GetMinimum(
"distance");
1015 float dmax =
gTRMDC->GetMaximum(
"distance");
1020 if(enorm>enorm_max) enorm_max=enorm;
1023 if(enorm_max==0) enorm_max=1;
1024 dmin*=ufactor*enorm_max;
1025 dmax*=ufactor*enorm_max;
1027 TH1F* mhist =
new TH1F(
"mhist",
"mhist",100,dmin,dmax);
1029 TTreeFormula mcut(
"mcut", cut,
gTRMDC);
1030 gTRMDC->SetBranchStatus(
"*",
false);
1031 gTRMDC->SetBranchStatus(
"distance",
true);
1032 gTRMDC->SetBranchStatus(
"type",
true);
1035 gTRMDC->SetBranchAddress(
"distance",&distance);
1036 gTRMDC->SetBranchAddress(
"type",&mtype);
1037 int msize =
gTRMDC->GetEntries();
1039 for(
i=0;
i<msize;
i++) {
1041 if(mcut.EvalInstance()==0)
continue;
1049 mhist->Fill(distance);
1052 gTRMDC->SetBranchStatus(
"*",
true);
1053 cout <<
"nmdc : " << nmdc << endl;
1056 mhist->GetXaxis()->SetTitle(xtitle);
1057 mhist->GetYaxis()->SetTitle(ytitle);
1058 mhist->GetYaxis()->SetRangeUser(0.1,pow(10.,TMath::Ceil(TMath::Log10(mhist->GetMaximum()))));
1062 sprintf(cut,
"abs(time[0]-time[%d])<%g && netcc[%d]>%g && rho[%d]>%g",
1065 sprintf(cut,
"type[1]==%d && abs(time[0]-time[%d])<%g && netcc[%d]>%g && rho[%d]>%g",
1071 TH1F* whist =
new TH1F(
"whist",
"whist",100,dmin,dmax);
1073 TTreeFormula wcut(
"wcut", cut,
gTRWAVE);
1074 gTRWAVE->SetBranchStatus(
"*",
false);
1075 gTRWAVE->SetBranchStatus(
"range",
true);
1076 gTRWAVE->SetBranchStatus(
"type",
true);
1077 gTRWAVE->SetBranchStatus(
"time",
true);
1078 gTRWAVE->SetBranchStatus(
"neted",
true);
1079 gTRWAVE->SetBranchStatus(
"ecor",
true);
1080 gTRWAVE->SetBranchStatus(
"netcc",
true);
1081 gTRWAVE->SetBranchStatus(
"rho",
true);
1082 gTRWAVE->SetBranchStatus(
"penalty",
true);
1085 gTRWAVE->SetBranchAddress(
"range",range);
1086 gTRWAVE->SetBranchAddress(
"type",wtype);
1087 int wsize =
gTRWAVE->GetEntries();
1089 for(
i=0;
i<wsize;
i++) {
1091 if(wcut.EvalInstance()==0)
continue;
1092 distance=ufactor*range[1];
1099 whist->Fill(distance);
1102 gTRWAVE->SetBranchStatus(
"*",
true);
1103 cout <<
"nwave : " << nwave << endl;
1104 whist->SetFillColor(kRed);
1105 whist->Draw(
"SAME");
1110 mhist->SetTitle(title);
1115 sprintf(ofname,
"%s/%s_%s.png",
1118 sprintf(ofname,
"%s/%s_%s.png",
1121 cout << ofname << endl;
1125 TH1F* ehist =
new TH1F(
"ehist",
"ehist",100,dmin,dmax);
1126 for(
int i=1;
i<=mhist->GetNbinsX();
i++) {
1127 double ndet = whist->GetBinContent(
i);
1128 double ninj = mhist->GetBinContent(
i);
1129 double eff = ninj ? ndet/ninj : 0.;
1130 ehist->SetBinContent(
i,eff);
1133 ehist->GetXaxis()->SetTitle(xtitle);
1134 ehist->GetYaxis()->SetTitle(
"efficiency");
1136 ehist->SetTitle(
"Efficiency vs Distance");
1139 sprintf(ofname,
"%s/%s_%s.png",
1140 gODIR.Data(),
"EFFvsDIST",
"ALL");
1142 sprintf(ofname,
"%s/%s_%s.png",
1143 gODIR.Data(),
"EFFvsDIST",gMDC->
wfList[itype-1].name.Data());
1145 cout << ofname << endl;
1158 char index_file[1024];
1165 out <<
"<html>" << endl;
1166 out <<
"<font color=\"black\" style=\"font-weight:bold;\"><center><p><h2>"
1167 << ptitle.Data() <<
"</h2><p><center></font>" << endl;
1168 out <<
"<hr><br>" << endl;
1174 if(
gPTYPE==
"EVTvsRHO") {offset=0; size=0;}
1176 for(
int i=offset;
i<=
size;
i++) {
1177 out <<
"<table border=0 cellpadding=2 align=\"center\">" << endl;
1178 out <<
"<tr align=\"center\">" << endl;
1180 out <<
"<td><font style=\"font-weight:bold;\"><center><p><h2>"
1181 <<
"ALL" <<
"</h2><p><center></font></td>" << endl;
1183 out <<
"<td><font style=\"font-weight:bold;\"><center><p><h2>"
1184 << gMDC->
wfList[
i-1].name.Data() <<
"</h2><p><center></font></td>" << endl;
1186 out <<
"</tr>" << endl;
1187 out <<
"<tr align=\"center\">" << endl;
1194 sprintf(oline,
"<td><a href=\"%s\"><img src=\"%s\" width=650></a></td>",fname,fname);
1195 out << oline << endl;
1196 out <<
"</tr>" << endl;
1197 out <<
"</table>" << endl;
1199 out <<
"</html>" << endl;
1212 for(
int i=0;
i<pSIZE;
i++) {
1213 ptype[I++]=pTYPE[
i];
1214 if(pTYPE[
i]==
"RECvsINJ") ptype[I++]=
"EFFvsDIST";
1219 char index_file[1024];
1225 out <<
"<html>" << endl;
1226 out <<
"<font color=\"black\" style=\"font-weight:bold;\"><center><p><h1>"
1229 out <<
"<font color=\"red\" style=\"font-weight:bold;\"><center><p><h3>"
1232 out <<
"<hr>" << endl;
1233 out <<
"<h3>FAD Options</h3>" << endl;
1236 out <<
"<ul>" << endl;
1237 out <<
"<li> odir : <font color=\"red\"> " << odir <<
"</font>" << endl;
1238 out <<
"</ul>" << endl;
1240 out <<
"<ul>" << endl;
1241 out <<
"<li> --bkgrep : <font color=\"red\"> " <<
pp_fad_bkgrep <<
"</font>" << endl;
1242 out <<
"</ul>" << endl;
1245 if(
pp_fad_hrss==
"0") info =
" (hrss rescale is not applied)";
1246 else info =
" (apply a constant hrss rescale)";
1247 }
else info =
" (hrss is rescaled using custom hrss factors)";
1249 out <<
"<ul>" << endl;
1250 out <<
"<li> --hrss : <font color=\"red\"> " <<
pp_fad_hrss <<
"</font>" << info << endl;
1251 out <<
"</ul>" << endl;
1253 if(
gFIT) info =
" (apply fit)";
1254 else info =
" (fit not applied)";
1256 out <<
"<ul>" << endl;
1257 out <<
"<li> --gfit : <font color=\"red\"> " <<
gFIT <<
"</font>" << info << endl;
1258 out <<
"</ul>" << endl;
1260 out <<
"<ul>" << endl;
1261 out <<
"<li> --rhomin : <font color=\"red\"> " <<
gRHOMIN <<
"</font>"
1262 <<
" (rho minimum used to compute FAD plots)" << endl;
1263 out <<
"</ul>" << endl;
1265 if(
gNZBINS<0) info =
" (un-biased FAD)";
1266 else if(
gNZBINS==0) info =
" (standard FAD)";
1267 else if(
gNZBINS>0) info =
" (test FAD)";
1269 out <<
"<ul>" << endl;
1270 out <<
"<li> --nzbins : <font color=\"red\"> " <<
gNZBINS <<
"</font>" << info << endl;
1271 out <<
"</ul>" << endl;
1274 else info =
" (Mpc,Myr)";
1276 out <<
"<ul>" << endl;
1277 out <<
"<li> --units : <font color=\"red\"> " <<
pp_fad_units <<
"</font>" << info << endl;
1278 out <<
"</ul>" << endl;
1280 if(
pp_fad_distr==
"FORMULA") info =
" (radial distribution is computed from formula)";
1281 else info =
" (radial distribution is computed from mdc injections)";
1283 out <<
"<ul>" << endl;
1284 out <<
"<li> --distr : <font color=\"red\"> " <<
pp_fad_distr <<
"</font>" << info << endl;
1285 out <<
"</ul>" << endl;
1287 out <<
"<ul>" << endl;
1288 out <<
"<li> --nbins : <font color=\"red\"> " <<
gNBINS <<
"</font>"
1289 <<
" (number of bins used in hist to computed the radial distribution from the MDC injections root file)" << endl;
1290 out <<
"</ul>" << endl;
1292 out <<
"<hr><br>" << endl;
1296 _ptype[index++]=
"FAPvsRHO";
1297 for(
int i=0;
i<
nPLOT+1;
i++)
if(ptype[
i]!=
"FAPvsRHO") _ptype[index++]=ptype[
i];
1299 for(
int i=0;
i<psize;
i++) {
1300 out <<
"<table border=0 cellpadding=2 align=\"center\">" << endl;
1301 out <<
"<tr align=\"center\">" << endl;
1302 out <<
"</tr>" << endl;
1303 out <<
"<tr align=\"center\">" << endl;
1306 sprintf(fname,
"%s_%s.png",_ptype[
i].Data(),
"ALL");
1307 sprintf(oline,
"<td><a href=\"%s\"><img src=\"%s\" width=650></a></td>",fname,fname);
1308 out << oline << endl;
1310 sprintf(fname,
"%s_%s.png",_ptype[
i].Data(),
"ALL");
1311 sprintf(oline,
"<td><a href=\"%s\"><img src=\"%s\" width=520></a></td>",fname,fname);
1312 out << oline << endl;
1313 sprintf(fname,
"%s_%s.png",_ptype[
i+1].Data(),
"ALL");
1314 sprintf(oline,
"<td><a href=\"%s\"><img src=\"%s\" width=520></a></td>",fname,fname);
1315 out << oline << endl;
1317 out <<
"</tr>" << endl;
1318 out <<
"</table>" << endl;
1319 if(
i==0) out <<
"<hr><br>" << endl;
else i++;
1321 out <<
"</html>" << endl;
1331 sprintf(cmd,
"root -n -l -b ${CWB_ROOTLOGON_FILE} '${HOME_CWB}/info/macros/MakeHTML.C\(\"%s\",false\)'",odir.Data());
1333 sprintf(cmd,
"cp ${HOME_WAT}//html/etc/html/ROOT.css %s",odir.Data());
1335 sprintf(cmd,
"cp ${HOME_WAT}//html/etc/html/ROOT.js %s",odir.Data());
1337 sprintf(cmd,
"cp ${HOME_WAT}//html/etc/html/tabber.css %s",odir.Data());
1339 sprintf(cmd,
"cp ${HOME_WAT}//html/etc/html/tabber.js %s",odir.Data());
1345 #define NTYPE_MAX 20
1359 if(ninj==0) {cout <<
"Error - no injection - terminated" << endl;
exit(1);}
1365 for(
int j=0;
j<
nset;
j++)
if(imdc_set[
i]==imdc_set_name[
j]) bnew=
false;
1366 if(bnew) imdc_set_name[nset++]=imdc_set[
i];
1368 cout <<
"nset : " << nset << endl;
1371 for(
int j=0;
j<
ninj;
j++)
if(imdc_set[
j]==imdc_set_name[
i]) imdc_iset[
j]=
i;
1373 for (
int iset=0;iset<
nset;iset++) cout << iset <<
" " << imdc_set_name[iset].Data() << endl;
1375 Color_t
colors[
NMDC_MAX] = { 6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7,
1376 6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7,
1377 6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7,
1378 6, 3, 2, 8,43, 7, 8, 4, 4, 2,43, 1, 3, 1, 6, 7 };
1379 Style_t markers[
NMDC_MAX]= {20,21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,
1380 21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,20,
1381 21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,20,
1382 21,22,23,29,29,21,22,20,21,22,23,29,20,21,22,20 };
1393 for(
int iset=0;iset<
nset;iset++) {
1396 for(
i=0;
i<
ninj;
i++)
if(imdc_iset[
i]==iset) iset_size++;
1397 double hleg = 0.88-iset_size*0.08;
1398 legend[iset] =
new TLegend(0.58,hleg,0.99,0.88,NULL,
"brNDC");
1399 legend[iset]->AddEntry((TObject*)0,
"",
"");
1401 mg[iset] =
new TMultiGraph();
1405 TString ptitle=imdc_set_name[iset];
1407 TString ytitle=
"FAD (Kpc^{-3} Kyr^{-1})";
1414 if(imdc_iset[
i]!=iset)
continue;
1415 cout <<
"MakeMultiPlotFAD : Processing -> " << imdc_name[
i] << endl;
1416 gr[
i] =
Plot(
i+1, ptitle, xtitle, ytitle,
false);
1417 gr[
i]->SetLineColor(colors[
i]);
1418 int N = gr[
i]->GetN();
1419 double* Y = gr[
i]->GetY();
1420 for(
int k=0;k<N;k++) if(Y[k]>0 && Y[
k]<ymin) ymin=Y[
k];
1421 for(
int k=0;k<N;k++) if(Y[k]>0 && Y[
k]>ymax) ymax=Y[
k];
1422 double fad_rho8 = gr[
i]->Eval(8);
1423 char legname[32];
sprintf(legname,
"%s, %5.1E",imdc_name[i], fad_rho8);
1424 legend[iset]->AddEntry(gr[i],legname,
"lp");
1425 mg[iset]->Add(gr[i]);
1429 sprintf(namecanvas,
"c%i",iset);
1430 canvas[iset] =
new TCanvas(namecanvas,namecanvas,125+iset*10,82,976,576);
1431 canvas[iset]->Clear();
1432 canvas[iset]->ToggleEventStatus();
1433 canvas[iset]->SetLogy(
true);
1434 canvas[iset]->SetLogx(
true);
1435 canvas[iset]->SetGridx();
1436 canvas[iset]->SetGridy();
1437 canvas[iset]->SetFillColor(kWhite);
1440 mg[iset]->SetTitle(ptitle);
1441 mg[iset]->Paint(
"alp");
1442 mg[iset]->GetHistogram()->GetXaxis()->SetTitle(xtitle);
1443 mg[iset]->GetHistogram()->GetYaxis()->SetTitle(ytitle);
1444 mg[iset]->GetHistogram()->GetXaxis()->CenterTitle(
true);
1445 mg[iset]->GetHistogram()->GetXaxis()->SetLabelFont(42);
1446 mg[iset]->GetHistogram()->GetXaxis()->SetTitleFont(42);
1447 mg[iset]->GetHistogram()->GetXaxis()->SetTitleOffset(1.3);
1448 mg[iset]->GetHistogram()->GetYaxis()->SetLabelFont(42);
1449 mg[iset]->GetHistogram()->GetYaxis()->SetTitleFont(42);
1450 mg[iset]->GetHistogram()->GetXaxis()->SetRangeUser(
RHO[0],
RHO[
RHO.size()-2]);
1451 mg[iset]->GetHistogram()->GetYaxis()->SetRangeUser(0.90*ymin,1.1*ymax);
1452 mg[iset]->GetHistogram()->GetXaxis()->SetMoreLogLabels();
1454 mg[iset]->Draw(
"alp");
1456 char leg_header[32];
sprintf(leg_header,
"FAD @ rho[%d]=8",
pp_irho);
1457 legend[iset]->SetHeader(leg_header);
1458 legend[iset]->SetBorderSize(1);
1459 legend[iset]->SetTextAlign(22);
1460 legend[iset]->SetTextFont(12);
1461 legend[iset]->SetLineColor(1);
1462 legend[iset]->SetLineStyle(1);
1463 legend[iset]->SetLineWidth(1);
1464 legend[iset]->SetFillColor(0);
1465 legend[iset]->SetFillStyle(1001);
1466 legend[iset]->SetTextSize(0.04);
1467 legend[iset]->SetLineColor(kBlack);
1468 legend[iset]->SetFillColor(kWhite);
1470 legend[iset]->Draw();
1472 sprintf(ofile,
"%s/fad_rho_%s.gif",
gODIR.Data(),imdc_set_name[iset].Data());
1473 cout << ofile << endl;
1474 canvas[iset]->SaveAs(ofile);
void AddHtmlHeader(TString odir)
virtual size_t size() const
TGraphErrors * Plot(int mtype, TString ptitle, TString xtitle, TString ytitle, bool save=true)
vector< mdcpar > GetSkyParms()
std::vector< double > mdcHRSS(K)
void getVisibleVolume(int mtype)
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 MakeMultiPlotFAD(TString mdc_inj_file)
void Import(TString umacro="")
size_t imdc_iset[NMDC_MAX]
double GetPar(TString name, vector< mdcpar > par, bool &error)
vector< double > normHRSS
size_t imdc_index[NMDC_MAX]
void RECvsINJ(int mtype, TString ptitle, TString xtitle, TString ytitle)
void MakeHtmlIndex(TString *ptype, int psize)
char imdc_name[NMDC_MAX][128]
vector< waveform > wfList
void MakePlot(TString ptype, bool pAll)
TString sel("slag[1]:rho[1]")
sprintf(tfres,"(1/%g)x(%g) (sec)x(Hz)", 2 *df, df)
void cwb_mkfad(TString odir="fad", int nzbins=-1, double obstime=0, bool bexit=true)
size_t imdc_type[NMDC_MAX]
void MakeHtml(TString ptitle)
virtual void resize(unsigned int)
double imdc_fcentral[NMDC_MAX]
char imdc_set[NMDC_MAX][128]
double imdc_fbandwidth[NMDC_MAX]