8 #define LIV_FILE_NAME "live.txt"
21 gStyle->SetNumberContours(
NCont);
22 double stops[
NRGBs] = { 0.10, 0.25, 0.45, 0.60, 0.75, 1.00 };
23 double red[
NRGBs] = { 0.00, 0.00, 0.00, 0.97, 0.97, 0.10 };
24 double green[
NRGBs] = { 0.97, 0.30, 0.40, 0.97, 0.00, 0.00 };
25 double blue[
NRGBs] = { 0.97, 0.97, 0.00, 0.00, 0.00, 0.00 };
26 TColor::CreateGradientColorTable(
NRGBs, stops, red, green, blue,
NCont);
38 float max_mass2 = MAX_MASS;
44 float min_mass1 = MIN_MASS;
50 float max_mass1 = MAX_MASS;
56 float min_mass2 = MIN_MASS;
66 cout <<
"cbc_plots.C starts..."<<endl;
68 cout <<
"Mass1 : ["<<min_mass1<<
","<<max_mass1<<
"] with "<<NBINS_mass1<<
" bins"<<endl;
69 cout <<
"Mass2 : ["<<min_mass2<<
","<<max_mass2<<
"] with "<<NBINS_mass2<<
" bins"<<endl;
74 TB.
checkFile(gSystem->Getenv(
"CWB_ROOTLOGON_FILE"));
75 TB.
checkFile(gSystem->Getenv(
"CWB_PARAMETERS_FILE"));
76 TB.
checkFile(gSystem->Getenv(
"CWB_UPARAMETERS_FILE"));
77 TB.
checkFile(gSystem->Getenv(
"CWB_PPARAMETERS_FILE"));
78 TB.
checkFile(gSystem->Getenv(
"CWB_UPPARAMETERS_FILE"));
79 TB.
checkFile(gSystem->Getenv(
"CWB_EPPARAMETERS_FILE"));
83 gStyle->SetTitleFillColor(kWhite);
85 gStyle->SetNumberContours(256);
86 gStyle->SetCanvasColor(kWhite);
87 gStyle->SetStatBorderSize(1);
88 gStyle->SetOptStat(kFALSE);
91 gStyle->SetFrameBorderMode(0);
97 if(strlen(
ifo[
i])>0)
sprintf(networkname,
"%s-%s",networkname,
ifo[i]);
109 float minMtot[
nfactor],
maxMtot[
nfactor],
minMChirp[
nfactor],
maxMChirp[
nfactor],
minDistanceXML[
nfactor],
maxDistanceXML[
nfactor],
minDistance[
nfactor],
maxDistance[
nfactor],
minRatio[
nfactor],
maxRatio[
nfactor],
shell_volume[
nfactor];
110 bool DDistrUniform,
DDistrVolume,
FixedFiducialVolume,
DDistrChirpMass,
bminMtot,
bmaxMtot,
bminDistance,
bmaxDistance,
bminRatio,
bmaxRatio,
Redshift;
116 cout<<
"Number of Factors:"<<
nfactor<<endl;
122 if(
MDC.GetInspiralOption(
"--waveform")!=
""){waveform[gIFACTOR-1] =
MDC.GetInspiralOption(
"--waveform");}
123 if(
MDC.GetInspiralOption(
"--min-mtotal")!=
""){minMtot[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--min-mtotal").Atof();bminMtot = 1;}
124 if(
MDC.GetInspiralOption(
"--max-mtotal")!=
""){maxMtot[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--max-mtotal").Atof(); bmaxMtot = 1;}
125 if(
MDC.GetInspiralOption(
"--min-distance")!=
""){minDistanceXML[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--min-distance").Atof(); bminDistance = 1;}
126 if(ShellminDistance>minDistanceXML[gIFACTOR-1]){ShellminDistance=minDistanceXML[gIFACTOR-1];}
127 if(
MDC.GetInspiralOption(
"--max-distance")!=
""){maxDistanceXML[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--max-distance").Atof(); bmaxDistance = 1;}
128 if(ShellmaxDistance<maxDistanceXML[gIFACTOR-1]){ShellmaxDistance=maxDistanceXML[gIFACTOR-1];}
129 if(
MDC.GetInspiralOption(
"--min-mratio")!=
""){minRatio[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--min-mratio").Atof(); bminRatio = 1;}
130 if(
MDC.GetInspiralOption(
"--max-mratio")!=
""){maxRatio[gIFACTOR-1] = (float)
MDC.GetInspiralOption(
"--max-mratio").Atof(); bmaxRatio = 1;}
131 if(
MDC.GetInspiralOption(
"--d-distr")!=
""){
132 if(
MDC.GetInspiralOption(
"--d-distr").CompareTo(
"uniform")==0){
133 DDistrUniform =1;cout <<
"Uniform distribution in linear distance"<<endl;
134 shell_volume[gIFACTOR-1] = 4.*
TMath::Pi()*(maxDistanceXML[gIFACTOR-1]/1000. - minDistanceXML[gIFACTOR-1]/1000.);
136 else if(
MDC.GetInspiralOption(
"--d-distr").CompareTo(
"volume")==0){
137 DDistrVolume =1;cout <<
"Uniform distribution in volume"<<endl;
138 shell_volume[gIFACTOR-1] = 4.*
TMath::Pi()*(pow(maxDistanceXML[gIFACTOR-1]/1000.,3) - pow(minDistanceXML[gIFACTOR-1]/1000.,3))/3;
140 else {cout <<
"No defined distance distribution?????! Or different from uniform and volume???"<<endl;
exit(1);}
142 cout <<
"Shell volume: " << shell_volume[gIFACTOR-1] << endl;
144 if(
MDC.GetInspiralOption(
"--dchirp-distr")!=
""){
145 if(
MDC.GetInspiralOption(
"--dchirp-distr").CompareTo(
"uniform")==0){
147 shell_volume[gIFACTOR-1] = 4.*
TMath::Pi()*(maxDistanceXML[gIFACTOR-1]/1000. - minDistanceXML[gIFACTOR-1]/1000.);
148 maxMChirp[gIFACTOR-1] = maxMtot[gIFACTOR-1]*pow(minRatio[gIFACTOR-1],3./5.)/pow(1+minRatio[gIFACTOR-1],6./5.);
149 minMChirp[gIFACTOR-1] = minMtot[gIFACTOR-1]*pow(maxRatio[gIFACTOR-1],3./5.)/pow(1+maxRatio[gIFACTOR-1],6./5.);
150 maxDistance[gIFACTOR-1] = maxDistanceXML[gIFACTOR-1]*pow(maxMChirp[gIFACTOR-1]/1.22,5./6.);
151 if(ShellmaxDistance<maxDistance[gIFACTOR-1]){ShellmaxDistance=maxDistance[gIFACTOR-1];}
152 minDistance[gIFACTOR-1] = minDistanceXML[gIFACTOR-1]*pow(minMChirp[gIFACTOR-1]/1.22,5./6.);
153 cout <<
"Uniform distribution in Chirp Mass distance"<<endl;
154 cout<<
"MaxDistance: "<<maxDistance[gIFACTOR-1]<<endl;
157 cout<<
"MDC set: "<<gIFACTOR<<endl;
158 cout<<
"xml conf: waveform="<< waveform[gIFACTOR-1] <<
" minMtot="<<minMtot[gIFACTOR-1]<<
" maxMtot="<<maxMtot[gIFACTOR-1]<<
" minDistance="<<minDistance[gIFACTOR-1]<<
" maxDistance="<<maxDistance[gIFACTOR-1]<<
" minRatio="<<minRatio[gIFACTOR-1]<<
" maxRatio="<<maxRatio[gIFACTOR-1]<<endl;
163 #ifdef FIXMAXDISTANCE
165 maxDistance[gIFACTOR-1]=FIXMAXDISTANCE;
166 shell_volume[gIFACTOR-1] = 4./3.*
TMath::Pi()*pow(maxDistance[gIFACTOR-1]/1000.,3.);
171 minRatio[gIFACTOR-1]=FIXMINRATIO;
172 float MINRATIO = minRatio[gIFACTOR-1];
177 maxRatio[gIFACTOR-1]=FIXMAXRATIO;
178 float MAXRATIO = maxRatio[gIFACTOR-1];
184 minMtot[gIFACTOR-1]=FIXMINTOT;
189 maxMtot[gIFACTOR-1]=FIXMAXTOT;
197 if(bminMtot){
float MINMtot = 0.99*minMtot[gIFACTOR-1];}
198 else {
float MINMtot = 0.0;}
203 float MAXMtot = MAX_MASS;
204 int NBINS_MTOT = TMath::FloorNint((MAX_MASS-MIN_MASS)/MASS_BIN/2.);
205 cout<<
"NBINS_MTOT: "<<NBINS_MTOT<<endl;
208 else {cout <<
"Undefined maximal total mass!! Define float MAXMtot"<<endl;
exit(1);}
210 else {cout <<
"Undefined minimal distance!! Defined float MINDISTANCE"<<endl;
float MINDISTANCE = 0.0;}
213 else {cout <<
"Undefined maximal distance!! Define float MAXDISTANCE"<<endl;
exit(1);}
219 if((bminRatio)&&(bmaxRatio)){
221 if (MINRATIO > minRatio[
l]){MINRATIO = minRatio[
l];}
222 if (MAXRATIO < maxRatio[l]){MAXRATIO = maxRatio[
l];}
223 if (MINCHIRP > minMtot[l]*pow(maxRatio[l],3./5.)/pow(1+minRatio[l],6./5.)){MINCHIRP = minMtot[
l]*pow(maxRatio[l],3./5.)/pow(1+minRatio[l],6./5.);};
224 if (MAXCHIRP < maxMtot[l]*pow(minRatio[l],3./5.)/pow(1+minRatio[l],6./5.)) {MAXCHIRP = maxMtot[
l]*pow(minRatio[l],3./5.)/pow(1+minRatio[l],6./5.);};
227 else {cout <<
"Undefined minRatio.. "<<endl;
exit(1);}
229 for(
int l=0;l<nfactor-1;l++){
230 if((minDistanceXML[l]==minDistanceXML[l+1])&&(maxDistanceXML[l]==maxDistanceXML[l+1])) {FixedFiducialVolume=1;}
232 FixedFiducialVolume=0;
233 cout<<
"Beware: different fiducial volumes for different factors!!"<<endl;
237 cout<<
"Plotting bounds: MINMtot="<<MINMtot<<
" MAXMtot="<<MAXMtot<<
" MINRATIO="<< MINRATIO <<
" MAXRATIO="<<MAXRATIO<<
" MINDISTANCE="<<MINDISTANCE<<
" MAXDISTANCE="<<MAXDISTANCE<<
" MINCHIRP="<<MINCHIRP<<
" MAXCHIRP="<<MAXCHIRP<<endl;
246 TCanvas *
c1 =
new TCanvas(
"c1",
"c1",3,47,1000,802);
247 c1->Range(-1.216392,-477.6306,508.8988,2814.609);
249 c1->SetBorderMode(0);
250 c1->SetBorderSize(2);
253 c1->SetRightMargin(0.1154618);
254 c1->SetTopMargin(0.07642487);
255 c1->SetBottomMargin(0.1450777);
258 TH2F *
inj_events =
new TH2F(
"inj_events",
"D_Minj",NBINS_mass,MIN_MASS,MAX_MASS,NBINS_mass2,min_mass2,max_mass2);
259 inj_events->GetXaxis()->SetRangeUser(MIN_plot_mass1,MAX_plot_mass1);
260 inj_events->GetYaxis()->SetRangeUser(MIN_plot_mass2,MAX_plot_mass2);
261 inj_events->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
262 inj_events->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
263 inj_events->GetXaxis()->SetTitleOffset(1.3);
264 inj_events->GetYaxis()->SetTitleOffset(1.25);
265 inj_events->GetXaxis()->CenterTitle(kTRUE);
266 inj_events->GetYaxis()->CenterTitle(kTRUE);
267 inj_events->GetXaxis()->SetNdivisions(410);
268 inj_events->GetYaxis()->SetNdivisions(410);
269 inj_events->GetXaxis()->SetTickLength(0.01);
270 inj_events->GetYaxis()->SetTickLength(0.01);
271 inj_events->GetZaxis()->SetTickLength(0.01);
272 inj_events->GetXaxis()->SetTitleFont(42);
273 inj_events->GetXaxis()->SetLabelFont(42);
274 inj_events->GetYaxis()->SetTitleFont(42);
275 inj_events->GetYaxis()->SetLabelFont(42);
276 inj_events->GetZaxis()->SetLabelFont(42);
277 inj_events->GetZaxis()->SetLabelSize(0.03);
281 inj_events->SetTitle(
"");
284 inj_events->SetContour(
NCont);
287 TH2F *
rec_events =
new TH2F(
"rec_events",
"D_Mrec",NBINS_mass,MIN_MASS,MAX_MASS,NBINS_mass2,min_mass2,max_mass2);
288 rec_events->GetXaxis()->SetRangeUser(MIN_plot_mass1,MAX_plot_mass1);
289 rec_events->GetYaxis()->SetRangeUser(MIN_plot_mass2,MAX_plot_mass2);
290 rec_events->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
291 rec_events->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
292 rec_events->GetXaxis()->SetTitleOffset(1.3);
293 rec_events->GetYaxis()->SetTitleOffset(1.25);
294 rec_events->GetXaxis()->CenterTitle(kTRUE);
295 rec_events->GetYaxis()->CenterTitle(kTRUE);
296 rec_events->GetXaxis()->SetNdivisions(410);
297 rec_events->GetYaxis()->SetNdivisions(410);
298 rec_events->GetXaxis()->SetTickLength(0.01);
299 rec_events->GetYaxis()->SetTickLength(0.01);
300 rec_events->GetZaxis()->SetTickLength(0.01);
301 rec_events->GetXaxis()->SetTitleFont(42);
302 rec_events->GetXaxis()->SetLabelFont(42);
303 rec_events->GetYaxis()->SetTitleFont(42);
304 rec_events->GetYaxis()->SetLabelFont(42);
305 rec_events->GetZaxis()->SetLabelFont(42);
306 rec_events->GetZaxis()->SetLabelSize(0.03);
307 rec_events->SetTitle(
"");
310 rec_events->SetContour(
NCont);
314 factor_events_inj[
i]=
new TH2F(
"factor_events_inj",
"",NBINS_mass,MIN_MASS,MAX_MASS,NBINS_mass2,min_mass2,max_mass2);
317 TH2F *
factor_events_rec =
new TH2F(
"factor_events_rec",
"",NBINS_mass,MIN_MASS,MAX_MASS,NBINS_mass2,min_mass2,max_mass2);
320 TH2F *
D_Mtot_inj =
new TH2F(
"Distance vs Mtot inj.",
"",1000,MINMtot,MAXMtot,5000,MINDISTANCE/1000.,MAXDISTANCE/1000.);
322 D_Mtot_inj->GetXaxis()->SetTitle(
"Total mass (M_{#odot})");
323 D_Mtot_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
324 D_Mtot_inj->GetXaxis()->SetTitleOffset(1.3);
325 D_Mtot_inj->GetYaxis()->SetTitleOffset(1.3);
326 D_Mtot_inj->GetXaxis()->SetTickLength(0.01);
327 D_Mtot_inj->GetYaxis()->SetTickLength(0.01);
328 D_Mtot_inj->GetXaxis()->CenterTitle(kTRUE);
329 D_Mtot_inj->GetYaxis()->CenterTitle(kTRUE);
330 D_Mtot_inj->GetXaxis()->SetTitleFont(42);
331 D_Mtot_inj->GetXaxis()->SetLabelFont(42);
332 D_Mtot_inj->GetYaxis()->SetTitleFont(42);
333 D_Mtot_inj->GetYaxis()->SetLabelFont(42);
334 D_Mtot_inj->SetMarkerStyle(20);
335 D_Mtot_inj->SetMarkerSize(0.5);
336 D_Mtot_inj->SetMarkerColor(2);
337 D_Mtot_inj->SetTitle(
"");
339 D_Mtot_inj->SetName(
"D_Mtotinj");
341 TH2F *
D_Mtot_rec =
new TH2F(
"Distance vs Mtot rec.",
"",1000,MINMtot,MAXMtot,5000,MINDISTANCE/1000.,MAXDISTANCE/1000.);
343 D_Mtot_rec->SetMarkerStyle(20);
344 D_Mtot_rec->SetMarkerSize(0.5);
345 D_Mtot_rec->SetMarkerColor(4);
347 TH2F *
D_Mchirp_inj =
new TH2F(
"Distance vs MChirp inj.",
"",1000,MINCHIRP,MAXCHIRP,5000,MINDISTANCE/1000.,MAXDISTANCE/1000.);
349 D_Mchirp_inj->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
350 D_Mchirp_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
351 D_Mchirp_inj->GetXaxis()->SetTitleOffset(1.3);
352 D_Mchirp_inj->GetYaxis()->SetTitleOffset(1.3);
353 D_Mchirp_inj->GetXaxis()->SetTickLength(0.01);
354 D_Mchirp_inj->GetYaxis()->SetTickLength(0.01);
355 D_Mchirp_inj->GetXaxis()->CenterTitle(kTRUE);
356 D_Mchirp_inj->GetYaxis()->CenterTitle(kTRUE);
357 D_Mchirp_inj->GetXaxis()->SetTitleFont(42);
358 D_Mchirp_inj->GetXaxis()->SetLabelFont(42);
359 D_Mchirp_inj->GetYaxis()->SetTitleFont(42);
360 D_Mchirp_inj->GetYaxis()->SetLabelFont(42);
361 D_Mchirp_inj->SetMarkerStyle(20);
362 D_Mchirp_inj->SetMarkerSize(0.5);
363 D_Mchirp_inj->SetMarkerColor(2);
364 D_Mchirp_inj->SetTitle(
"");
366 D_Mchirp_inj->SetName(
"D_Chirp_inj");
368 TH2F *
D_Mchirp_rec =
new TH2F(
"Distance vs MChirp rec.",
"",1000,MINCHIRP,MAXCHIRP,5000,MINDISTANCE/1000.,MAXDISTANCE/1000);
370 D_Mchirp_rec->SetMarkerStyle(20);
371 D_Mchirp_rec->SetMarkerSize(0.5);
372 D_Mchirp_rec->SetMarkerColor(4);
376 int NBINS_SPIN = (
int)((MAXCHI-MINCHI)/CHI_BIN); cout<<
"NBINS_SPIN: "<<NBINS_SPIN<<endl;
377 TH2F* inj_events_spin_mtot =
new TH2F(
"inj_spin_Mtot",
"",NBINS_SPIN,MINCHI,MAXCHI,NBINS_MTOT,MIN_MASS,MAX_MASS);
378 TH2F* rec_events_spin_mtot =
new TH2F(
"rec_spin_Mtot",
"",NBINS_SPIN,MINCHI,MAXCHI,NBINS_MTOT,MIN_MASS,MAX_MASS);
381 factor_events_spin_mtot_inj[
i]=
new TH2F(
"factor_events_spin_mtot_inj",
"",NBINS_SPIN,MINCHI,MAXCHI,NBINS_MTOT,MIN_MASS,MAX_MASS);
384 TH2F *D_Chi_inj =
new TH2F(
"Distance vs Chi inj.",
"",1000,MINCHI,MAXCHI,5000,MINDISTANCE/1000.,MAXDISTANCE/1000.);
386 D_Chi_inj->GetXaxis()->SetTitle(
"#chi_{z}");
387 D_Chi_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
388 D_Chi_inj->GetXaxis()->SetTitleOffset(1.3);
389 D_Chi_inj->GetYaxis()->SetTitleOffset(1.3);
390 D_Chi_inj->GetXaxis()->SetTickLength(0.01);
391 D_Chi_inj->GetYaxis()->SetTickLength(0.01);
392 D_Chi_inj->GetXaxis()->CenterTitle(kTRUE);
393 D_Chi_inj->GetYaxis()->CenterTitle(kTRUE);
394 D_Chi_inj->GetXaxis()->SetTitleFont(42);
395 D_Chi_inj->GetXaxis()->SetLabelFont(42);
396 D_Chi_inj->GetYaxis()->SetTitleFont(42);
397 D_Chi_inj->GetYaxis()->SetLabelFont(42);
398 D_Chi_inj->SetMarkerStyle(20);
399 D_Chi_inj->SetMarkerSize(0.5);
400 D_Chi_inj->SetMarkerColor(2);
401 D_Chi_inj->SetTitle(
"");
403 D_Chi_inj->SetName(
"D_Chi_inj");
405 TH2F *
D_Chi_injx = (TH2F*)D_Chi_inj->Clone(
"D_Chi_injx");
406 D_Chi_injx->GetXaxis()->SetTitle(
"#chi_{x}");
407 D_Chi_injx->SetName(
"D_Chi_injx");
408 TH2F *
D_Chi_injy = (TH2F*)D_Chi_inj->Clone(
"D_Chi_injy");
409 D_Chi_injy->GetXaxis()->SetTitle(
"#chi_{y}");
410 D_Chi_injy->SetName(
"D_Chi_injy");
412 TH2F *
D_Chi_rec =
new TH2F(
"Distance vs Chi rec.",
"",1000,MINCHI,MAXCHI,5000,MINDISTANCE/1000.,MAXDISTANCE/1000);
413 D_Chi_rec->SetMarkerStyle(20);
414 D_Chi_rec->SetMarkerSize(0.5);
415 D_Chi_rec->SetMarkerColor(4);
417 TH2F *
D_Chi_recx = (TH2F*)D_Chi_rec->Clone(
"D_Chi_recx");
418 TH2F *
D_Chi_recy = (TH2F*)D_Chi_rec->Clone(
"D_Chi_recy");
423 TH2F *
D_q_inj =
new TH2F(
"Distance vs q inj.",
"",1000,MINRATIO,MAXRATIO,5000,MINDISTANCE/1000.,MAXDISTANCE/1000.);
425 D_q_inj->GetXaxis()->SetTitle(
"Mass ratio (M_{#odot})");
426 D_q_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
427 D_q_inj->GetXaxis()->SetTitleOffset(1.3);
428 D_q_inj->GetYaxis()->SetTitleOffset(1.3);
429 D_q_inj->GetXaxis()->SetTickLength(0.01);
430 D_q_inj->GetYaxis()->SetTickLength(0.01);
431 D_q_inj->GetXaxis()->CenterTitle(kTRUE);
432 D_q_inj->GetYaxis()->CenterTitle(kTRUE);
433 D_q_inj->GetXaxis()->SetTitleFont(42);
434 D_q_inj->GetXaxis()->SetLabelFont(42);
435 D_q_inj->GetYaxis()->SetTitleFont(42);
436 D_q_inj->GetYaxis()->SetLabelFont(42);
437 D_q_inj->SetMarkerStyle(20);
438 D_q_inj->SetMarkerSize(0.5);
439 D_q_inj->SetMarkerColor(2);
440 D_q_inj->SetTitle(
"");
442 D_q_inj->SetName(
"D_q_inj");
444 TH2F *
D_q_rec =
new TH2F(
"Distance vs q rec.",
"",1000,MINRATIO,MAXRATIO,5000,MINDISTANCE/1000.,MAXDISTANCE/1000);
446 D_q_rec->SetMarkerStyle(20);
447 D_q_rec->SetMarkerSize(0.5);
448 D_q_rec->SetMarkerColor(4);
449 TH1F *
Dt =
new TH1F(
"Dt",
"",1000,-0.5,0.5);
450 Dt->SetMarkerStyle(20);
451 Dt->SetMarkerSize(0.5);
452 Dt->SetMarkerColor(4);
456 rhocc->SetTitle(
"0 < cc < 1");
457 rhocc->SetTitleOffset(1.3,
"Y");
458 rhocc->GetXaxis()->SetTitle(
"network correlation");
459 rhocc->GetYaxis()->SetTitle(
"#rho");
460 rhocc->SetStats(kFALSE);
461 rhocc->SetMarkerStyle(20);
462 rhocc->SetMarkerSize(0.5);
463 rhocc->SetMarkerColor(1);
466 rho_pf->SetTitle(
"chi2");
467 rho_pf->GetXaxis()->SetTitle(
"log10(chi2)");
468 rho_pf->SetTitleOffset(1.3,
"Y");
469 rho_pf->GetYaxis()->SetTitle(
"#rho");
470 rho_pf->SetMarkerStyle(20);
471 rho_pf->SetMarkerColor(1);
472 rho_pf->SetMarkerSize(0.5);
473 rho_pf->SetStats(kFALSE);
475 const Float_t
xq[6] = {8.0, 15.0, 25.0, 35.0, 45.0, 55.0};
476 const Float_t*
yq =
new Float_t[101];
477 for(
int i=0;
i<101;
i++){yq[
i]=-50.0+
i;}
478 TH2F *
dchirp_rec =
new TH2F(
"dchirp rec.",
"Chirp Mass estimate",5,xq,100,yq);
479 dchirp_rec->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
480 dchirp_rec->GetYaxis()->SetTitle(
"Chirp mass: injected-estimated (M_{#odot})");
481 dchirp_rec->GetXaxis()->SetTitleOffset(1.3);
482 dchirp_rec->GetYaxis()->SetTitleOffset(1.3);
483 dchirp_rec->GetXaxis()->SetTickLength(0.01);
484 dchirp_rec->GetYaxis()->SetTickLength(0.01);
485 dchirp_rec->GetXaxis()->CenterTitle(kTRUE);
486 dchirp_rec->GetYaxis()->CenterTitle(kTRUE);
487 dchirp_rec->GetXaxis()->SetTitleFont(42);
488 dchirp_rec->GetXaxis()->SetLabelFont(42);
489 dchirp_rec->GetYaxis()->SetTitleFont(42);
490 dchirp_rec->GetYaxis()->SetLabelFont(42);
491 dchirp_rec->SetMarkerStyle(20);
492 dchirp_rec->SetMarkerSize(0.5);
493 dchirp_rec->SetMarkerColor(2);
496 TH3F *
D_dchirp_rec =
new TH3F(
"Distance vs dchirp rec.",
"",5,10.0,50.,100,-50,50.,.5000,MINDISTANCE/1000.,MAXDISTANCE/1000);
498 D_dchirp_rec->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
499 D_dchirp_rec->GetYaxis()->SetTitle(
"Chirp mass: injected-estimated (M_{#odot})");
500 D_dchirp_rec->GetZaxis()->SetTitle(
"Distance (Mpc)");
501 D_dchirp_rec->GetXaxis()->SetTitleOffset(1.3);
502 D_dchirp_rec->GetYaxis()->SetTitleOffset(1.3);
503 D_dchirp_rec->GetXaxis()->SetTickLength(0.01);
504 D_dchirp_rec->GetYaxis()->SetTickLength(0.01);
505 D_dchirp_rec->GetXaxis()->CenterTitle(kTRUE);
506 D_dchirp_rec->GetYaxis()->CenterTitle(kTRUE);
507 D_dchirp_rec->GetXaxis()->SetTitleFont(42);
508 D_dchirp_rec->GetXaxis()->SetLabelFont(42);
509 D_dchirp_rec->GetYaxis()->SetTitleFont(42);
510 D_dchirp_rec->GetYaxis()->SetLabelFont(42);
511 D_dchirp_rec->SetMarkerStyle(20);
512 D_dchirp_rec->SetMarkerSize(0.5);
513 D_dchirp_rec->SetMarkerColor(2);
514 D_dchirp_rec->SetTitle(
"");
527 if(BKG_NTUPLE==
"True"){
530 if(gSystem->Getenv(
"CWB_BKG_TREE")==NULL) {
531 cout <<
"Error : environment CWB_BKG_TREE is not defined!!!" << endl;
exit(1);
533 Compare_tree=
TString(gSystem->Getenv(
"CWB_BKG_TREE"));
538 sprintf(net_file_name,
"%s",Compare_tree.Data());
542 sprintf(net_file_name,
"%s",BKG_NTUPLE);
543 TString Liv_file_name = BKG_NTUPLE;
547 Liv_file_name.ReplaceAll(
"wave_",
"live_");
548 sprintf(liv_file_name,
"%s",Liv_file_name.Data());
550 cout << net_file_name << endl;
551 cout << liv_file_name << endl;
556 TChain
wave(
"waveburst");
557 TChain liv(
"liveTime");
558 wave.Add(net_file_name);
559 liv.Add(liv_file_name);
564 cout <<
"bkg size : " << bkg_size << endl;
570 #ifdef SKIP_GETLIVETIME
571 cout <<
"WARNING!!! Skipping actual calculation of BKG and zero lag live time"<<endl;
578 cout <<
"Start CWB::CBCTool::getLiveTime of current ntuple : " << endl;
580 cout<<
"Elapsed time: "<<watch.RealTime()<<
" s"<<endl;
581 cout <<
"Start CWB::CBCTool::getZero(lag)LiveTime of current ntuple : " << endl;
584 cout<<
"Elapsed time: "<<watch.RealTime()<<
" s"<<endl;
590 double OLIVETIME_yr = liveZero/86400./365.;
591 double BKG_LIVETIME_yr = liveTot/86400./365.;
592 double OLIVETIME_Myr = OLIVETIME_yr/(1.e6);
593 double BKG_LIVETIME_Myr = BKG_LIVETIME_yr/(1.e6);
596 cout <<
"Total live time ---> zero lag: " << liveZero <<
" s, background: " << liveTot <<
" s" << endl;
597 cout <<
"Total live time ---> zero lag: " << OLIVETIME_yr <<
" yr, background: " << BKG_LIVETIME_yr <<
" yr" << endl;
598 cout <<
"Total live time ---> zero lag: " << OLIVETIME_Myr <<
" Myr, background: " << BKG_LIVETIME_Myr <<
" Myr" << endl;
602 char bkg_threshold[1024];
605 sprintf(s1,
"!(lag[%i]==0&&slag[%i]==0)", nIFO, nIFO);
606 #if defined(HVETO_VETO) || defined(CAT3_VETO)
614 wave.SetEstimate(tentries);
615 wave.Draw(
SEL,bkg_threshold,
"goff",tentries);
616 int sel_events =
wave.GetSelectedRows();
617 const int bkg_entries = sel_events;
620 double* rho_bkg=
wave.GetV1();
623 cout <<
"Threshold on background events:" << endl;
624 cout << bkg_threshold << endl;
625 cout <<
"Background events above thresholds: " << bkg_entries << endl;
627 Int_t *
index =
new Int_t[bkg_entries];
629 TMath::Sort(bkg_entries,rho_bkg,index);
630 double RHO_MAX = ceil(rho_bkg[index[0]]*1.05);
631 double VRHO[bkg_entries];
632 for(
int i = 0 ;
i < bkg_entries ;
i++) {VRHO[
i] = rho_bkg[index[
i]];}
634 cout <<
"Background loudest event: " << VRHO[0] <<
", largest considered rho: " << RHO_MAX << endl;
638 double C = OLIVETIME_Myr;
645 int nbins = -TMath::Nint(rho_bkg[index[bkg_entries-1]]-rho_bkg[index[0]])/
RHO_BIN;
646 cout <<
"Rho max : "<< rho_bkg[index[0]] <<
" Rho min : "<<rho_bkg[index[bkg_entries-1]] <<
" nbins : "<<nbins<<endl;
650 for (
int i = 0;
i<bkg_entries;
i++){h->Fill(rho_bkg[
i]);}
652 TH1* hc = h->GetCumulative(kFALSE);
656 far[
i] = (double)hc->GetBinContent(
i+1)/
liveTot;
657 efar[
i] = (double)hc->GetBinError(
i+1)/
liveTot;
668 TChain
sim(
"waveburst");
681 mdc.SetBranchAddress(
"time",time);
682 mdc.SetBranchAddress(
"mass",mass);
683 mdc.SetBranchAddress(
"factor",&factor);
684 mdc.SetBranchAddress(
"distance",&distance);
685 mdc.SetBranchAddress(
"mchirp",&mchirp);
686 mdc.SetBranchAddress(
"spin",spin);
693 FILE*
finj = fopen(fname3,
"w");
694 fprintf(finj,
"#GPS@L1 mass1 mass2 distance spinx1 spiny1 spinz1 spinx2 spiny2 spinz2 \n");
696 for(
int l=1;l<nfactor+1;l++){
698 finj_single[l-1] = fopen(fname3,
"w");
699 fprintf(finj_single[l-1],
"#GPS@L1 mass1 mass2 distance spinx1 spiny1 spinz1 spinx2 spiny2 spinz2 \n");
705 for(
int g=0;
g<(
int)
mdc.GetEntries();
g++){
710 inj_events->Fill(mass[0],mass[1]);
711 D_Mtot_inj->Fill(mass[1]+mass[0],distance);
712 D_Mchirp_inj->Fill(mchirp,distance);
714 for(
int i=0;
i<3;
i++){chi[
i] = (spin[
i]*mass[0]+spin[
i+3]*mass[1])/(mass[1]+mass[0]);}
715 D_Chi_inj->Fill(chi[2],distance);
716 D_Chi_injx->Fill(chi[0],distance);
717 D_Chi_injy->Fill(chi[1],distance);
718 inj_events_spin_mtot->Fill(chi[2],mass[1]+mass[0]);
720 D_q_inj->Fill(mass[0]/mass[1],distance);
724 ifactor=(
int)factor-1;
725 if((ifactor>nfactor-1)||(ifactor<0)){cout<<
"ifactor: "<<ifactor<<endl;
exit(1);}
726 factor_events_inj[
ifactor]->Fill(mass[0],mass[1]);
728 factor_events_spin_mtot_inj[
ifactor]->Fill(chi[2],mass[1]+mass[0]);
736 fprintf(finj,
"%10.3f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f\n",time[0],mass[0],mass[1],distance,spin[0],spin[1],spin[2],spin[3],spin[4],spin[5]);
737 fprintf(finj_single[ifactor],
"%10.3f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f %3.2f\n",time[0],mass[0],mass[1],distance,spin[0],spin[1],spin[2],spin[3],spin[4],spin[5]);
744 if(write_ascii){
fclose(finj_single[l]);}
746 NEVTS += factor_events_inj[
l]->GetEntries();
751 cout <<
"Injected signals: " <<
mdc.GetEntries() << endl;
762 float iSNR[3],sSNR[3];
763 sim.SetBranchAddress(
"mass",mass);
764 sim.SetBranchAddress(
"factor",&factor);
766 sim.SetBranchAddress(
"distance",&distance);
767 sim.SetBranchAddress(
"mchirp",&mchirp);
769 sim.SetBranchAddress(
"range",range);
770 sim.SetBranchAddress(
"chirp",chirp);
772 sim.SetBranchAddress(
"rho",rho);
773 sim.SetBranchAddress(
"netcc",netcc);
774 sim.SetBranchAddress(
"neted",&neted);
775 sim.SetBranchAddress(
"ecor",&ecor);
776 sim.SetBranchAddress(
"penalty",&penalty);
777 sim.SetBranchAddress(
"time",time);
778 sim.SetBranchAddress(
"iSNR",iSNR);
779 sim.SetBranchAddress(
"sSNR",sSNR);
780 sim.SetBranchAddress(
"spin",spin);
781 sim.SetBranchAddress(
"frequency",frequency);
784 cout<<
"Adding hveto flags.."<<endl;
785 UChar_t veto_hveto_L1, veto_hveto_H1,veto_hveto_V1;
786 sim.SetBranchAddress(
"veto_hveto_L1",&veto_hveto_L1);
787 sim.SetBranchAddress(
"veto_hveto_H1",&veto_hveto_H1);
792 cout<<
"Adding cat3 flags.."<<endl;
793 UChar_t veto_cat3_L1, veto_cat3_H1,veto_cat3_V1;
794 sim.SetBranchAddress(
"veto_cat3_L1",&veto_cat3_L1);
795 sim.SetBranchAddress(
"veto_cat3_H1",&veto_cat3_H1);
809 for(
int i = 0;
i <NBINS_MTOT+1;
i++){
810 for(
int j = 0; j <NBINS_SPIN+1; j++){
811 spin_mtot_volume[
i][
j] = 0.;
812 error_spin_mtot_volume[
i][
j] = 0.;
815 spin_mtot_radius[
i][
j] = 0.;
816 error_spin_mtot_radius[
i][
j] = 0.;
825 FILE* fev = fopen(fname,
"w");
827 fprintf(fev,
"#GPS@L1 FAR[Hz] eFAR[Hz] factor rho frequency iSNR sSNR \n");
829 fprintf(fev,
"#GPS@L1 factor rho frequency iSNR sSNR \n");
832 for(
int l=1;l<nfactor+1;l++){
834 fev_single[l-1] = fopen(fname,
"w");
836 fprintf(fev_single[l-1],
"#GPS@L1 FAR[Hz] eFAR[Hz] factor rho frequency iSNR sSNR \n");
838 fprintf(fev_single[l-1],
"#GPS@L1 factor rho frequency iSNR sSNR \n");
846 error_volume[
i][
j] = 0.;
847 volume_first_shell[
i][
j] = 0.;
848 error_volume_first_shell[
i][
j] = 0.;
850 error_radius[
i][
j] = 0.;
855 double dV,
dV1, dV_spin_mtot,
nevts,internal_volume;
862 for(
int g=0;
g<(
int)
sim.GetEntries();
g++){
869 if(netcc[0]<=
T_cor){countv++;
continue;}
870 if((time[0]-time[nIFO])<-
T_win || (time[0]-time[nIFO])>2*
T_win) {countv++;
continue;}
871 if (
T_vED>0) {
if(neted/ecor>=
T_vED){countv++;
continue;}}
872 if (
T_pen>0) {
if(penalty<=
T_vED){countv++;
continue;}}
873 if (
T_pen>0) {
if(penalty<=
T_vED){countv++;
continue;}}
875 for(
int j=0;j<
nFCUT;j++) {
878 if(bcut) {countv++;cntfreq++;
continue;}
880 if (++cnt%1000==0) {cout << cnt <<
" - ";}
881 Dt->Fill(time[0]-time[nIFO]);
890 if(range[1]==0.0){
continue;}
891 D_Mtot_rec->Fill(mass[1]+mass[0],range[1]);
892 D_Mchirp_rec->Fill(chirp[0],range[1]);
893 D_q_rec->Fill(mass[0]/mass[1],range[1]);
895 rhocc->Fill(netcc[0],rho[
pp_irho]);
897 float chi2 = penalty>0 ? log10(penalty) : 0;
898 rho_pf->Fill(chi2,rho[pp_irho]);
902 l = TMath::FloorNint((m2-min_mass2)/MASS_BIN);
903 if((l>=NBINS_mass2)||(l<0)){cout<<
"Underflow/Overflow => Enlarge mass range! l="<<l<<
" NBINS_mass="<<NBINS_mass2<<
" m2="<<m2<<
" min_mass2="<<min_mass2<<endl;
exit(1);}
904 m = TMath::FloorNint((m1-MIN_MASS)/MASS_BIN);
905 if((m>=NBINS_mass)||(m<0)){cout<<
"Underflow/Overflow => Enlarge mass range! m="<<m<<
" NBINS_mass="<<NBINS_mass<<
" m1="<<m1<<
" MIN_MASS="<<MIN_MASS<<endl;
exit(1);}
906 rec_events->Fill(mass[0],mass[1]);
907 D_dchirp_rec->Fill(chirp[0],chirp[0]-chirp[1],range[1]);
908 dchirp_rec->Fill(chirp[0],chirp[0]-chirp[1]);
911 for(
int i=0;
i<3;
i++){chi[
i] = (spin[
i]*mass[0]+spin[
i+3]*mass[1])/(mass[1]+mass[0]);}
912 D_Chi_rec->Fill(chi[2],range[1]);
913 D_Chi_recx->Fill(chi[0],range[1]);
914 D_Chi_recy->Fill(chi[1],range[1]);
915 mt = TMath::FloorNint((m1+m2-MIN_MASS)/MASS_BIN/2.);
916 if((mt>NBINS_MTOT)||(mt<0)){cout<<
"mt="<<mt<<
" is larger than NBINS_MTOT="<<NBINS_MTOT<<
" Mtot="<<m1+m2<<
" minMtot="<<MIN_MASS<<endl;
continue;}
917 cz = TMath::FloorNint((chi[2]-MINCHI)/CHI_BIN);
918 if((cz>NBINS_SPIN)||(cz<0)){cout<<
"cz="<<cz<<
" is larger than NBINS_SPIN="<<NBINS_SPIN<<
" chi[2]="<<chi[2]<<
" MINCHI="<<MINCHI<<endl;
continue;}
919 rec_events_spin_mtot->Fill(chi[2],mass[1]+mass[0]);
924 ifactor = (
int)factor-1;
932 else if (DDistrUniform){
934 dV = pow(range[1],2)*shell_volume[
ifactor];
937 else if (DDistrChirpMass){
939 dV = pow(range[1],2)*shell_volume[
ifactor]*pow(chirp[0]/1.22,5./6.);
943 else {cout <<
"No defined distance distribution?????! WARNING: Assuming uniform in volume"<<endl;
947 if(FixedFiducialVolume){
951 else{nevts = factor_events_inj[
ifactor]->GetEntries();}
960 if(FixedFiducialVolume){
962 nevts += factor_events_spin_mtot_inj[
i]->GetBinContent(cz+1,mt+1);
965 else{nevts = factor_events_spin_mtot_inj[
ifactor]->GetBinContent(cz+1,mt+1);}
966 if(Redshift){nevts=
NEVTS;}
967 dV_spin_mtot = dV/
nevts;
970 for(
int i = 0;
i<
nfactor;
i++){nevts += factor_events_inj[
i]->GetBinContent(m+1,l+1);}
976 factor_events_rec->Fill(mass[0],mass[1]);
983 for(
int i=0;
i<
nT;
i++){
987 eVrho[
i]+=pow(dV1,2);
1001 while((rho[pp_irho]>(
float)hc->GetBinCenter(w))&&(w<RHO_NBINS-1)){w++;}
1003 fprintf(fev,
"%10.3f %4.3e %4.3e %3.2f %3.2f %3.2f %3.2f %3.2f\n", time[2], far[w], efar[w], factor, rho[pp_irho],frequency[0], sqrt(iSNR[0]+iSNR[1]),sqrt(sSNR[0]+sSNR[1]));
1004 fprintf(fev_single[ifactor],
"%10.3f %4.3e %4.3e %3.2f %3.2f %3.2f %3.2f %3.2f\n", time[2], far[w], efar[w], factor, rho[pp_irho], frequency[0], sqrt(iSNR[0]+iSNR[1]),sqrt(sSNR[0]+sSNR[1]));
1006 fprintf(fev,
"%10.3f %3.2f %3.2f %3.2f %3.2f %3.2f\n", time[2], factor, rho[pp_irho], frequency[0], sqrt(iSNR[0]+iSNR[1]), sqrt(sSNR[0]+sSNR[1]));
1007 fprintf(fev_single[ifactor],
"%10.3f %3.2f %3.2f %3.2f %3.2f %3.2f\n", time[2], factor, rho[pp_irho], frequency[0], sqrt(iSNR[0]+iSNR[1]), sqrt(sSNR[0]+sSNR[1]));
1013 error_volume[
m][
l] += pow(dV,2);
1016 spin_mtot_volume[
mt][
cz] += dV_spin_mtot;
1017 error_spin_mtot_volume[
mt][
cz] += pow(dV_spin_mtot,2);
1027 cout <<
"Recovered entries: " << cnt << endl;
1028 cout <<
"Recovered entries: " << cnt2 << endl;
1029 cout <<
"Recovered entries cut by frequency: " << cntfreq << endl;
1030 cout<<
"Recovered entries vetoed: "<<countv<<endl;
1031 cout <<
"dV : "<<dV<<
" dV1 : "<<dV1<<endl;
1164 cout <<
"Vrho[0] = "<<Vrho[0] <<
" +/- "<<eVrho[0]<<endl;
1165 cout<<
"Vrho[RHO_NBINS-1] = "<<Vrho[RHO_NBINS-1] <<
" +/- "<<eVrho[RHO_NBINS-1] <<endl;
1167 inj_events->Draw(
"colz");
1169 int MAX_AXIS_Z = inj_events->GetBinContent(inj_events->GetMaximumBin()) + 1;
1170 inj_events->GetZaxis()->SetRangeUser(0,MAX_AXIS_Z);
1174 sprintf(inj_title,
"Injected events");
1180 TPaveText *
p_inj =
new TPaveText(0.325301,0.926166,0.767068,0.997409,
"blNDC");
1181 p_inj->SetBorderSize(0);
1182 p_inj->SetFillColor(0);
1183 p_inj->SetTextColor(1);
1184 p_inj->SetTextFont(32);
1185 p_inj->SetTextSize(0.045);
1186 TText *
text = p_inj->AddText(inj_title);
1202 hcandle->SetMarkerSize(0.5);
1203 hcandle->Draw(
"CANDLE");
1208 dchirp_rec->SetMarkerSize(0.5);
1209 dchirp_rec->Draw(
"CANDLE");
1230 rhocc->Draw(
"colz");
1232 c1->Update(); c1->SaveAs(fname);
1236 c1->SetLogx(kFALSE);
1237 if(
pp_rho_log) c1->SetLogy(kTRUE);
else c1->SetLogy(kFALSE);
1238 rho_pf->Draw(
"colz");
1240 c1->Update(); c1->SaveAs(fname);
1247 char newcut[2048]=
"";
1248 char newcut2[2048]=
"";
1249 char title[1024]=
"";
1256 ptitle=
"Number of reconstructed events as a function of injected SNR";
1257 gStyle->SetOptStat(0);
1259 xtitle =
"Injected network snr";
1267 sprintf(sel,
"sqrt(pow(snr[%d],2)",0);
1270 sprintf(sel,
"%s)>>hist(500)",sel);
1274 cout <<
"nmdc : " << nmdc << endl;
1276 TH2F *htemp = (TH2F*)gPad->GetPrimitive(
"hist");
1277 htemp->GetXaxis()->SetTitle(xtitle);
1278 htemp->GetYaxis()->SetTitle(ytitle);
1281 htemp->GetXaxis()->SetRangeUser(1, pow(10.,TMath::Ceil(TMath::Log10(htemp->GetMaximum()))));
1282 htemp->GetYaxis()->SetRangeUser(1, pow(10.,TMath::Ceil(TMath::Log10(htemp->GetMaximum()))));
1283 htemp->SetLineColor(kBlack);
1284 htemp->SetLineWidth(3);
1285 sprintf(newcut,
"(((time[0]-time[%d])>-%g) || (time[0]-time[%d])<%g) && rho[%d]> %g",nIFO,
T_win,nIFO,2*
T_win,pp_irho,
T_cut);
1288 sprintf(sel,
"sqrt(iSNR[%d]",0);
1290 sprintf(sel,
"%s)>>hist2(500)",sel);
1291 cout <<
"cut " << newcut << endl;
1295 sim.Draw(sel,newcut,
"same");
1296 TH2F *htemp2 = (TH2F*)gPad->GetPrimitive(
"hist2");
1297 htemp2->SetFillColor(kRed);
1298 htemp2->SetFillStyle(3017);
1299 htemp2->SetLineColor(kRed);
1300 htemp2->SetLineWidth(2);
1303 cout <<
"nwave : " << nwave << endl;
1308 cout <<
"final cut " << newcut2 << endl;
1310 sel_fin.ReplaceAll(
"hist2",
"hist3");
1314 sim.Draw(sel_fin,newcut2,
"same");
1315 TH2F *htemp3 = (TH2F*)gPad->GetPrimitive(
"hist3");
1316 htemp3->SetFillColor(kBlue);
1317 htemp3->SetFillStyle(3017);
1318 htemp3->SetLineColor(kBlue);
1319 htemp3->SetLineWidth(2);
1321 cout <<
"nwave_final : " << nwave_final << endl;
1324 sprintf(title,
"%s",ptitle.Data());
1325 htemp->SetTitle(title);
1327 leg_snr =
new TLegend(0.6,0.755,0.885,0.923,
"",
"brNDC");
1328 sprintf(lab,
"Injections Average SNR: %g",htemp->GetMean());
1329 leg_snr->AddEntry(
"",lab,
"a");
1330 sprintf(lab,
"Injected: %i",nmdc);
1331 leg_snr->AddEntry(htemp, lab,
"l");
1332 sprintf(lab,
"Found(minimal cuts): %i",nwave);
1333 leg_snr->AddEntry(htemp2, lab,
"l");
1334 sprintf(lab,
"Found(final cuts): %i",nwave_final);
1335 leg_snr->AddEntry(htemp3, lab,
"l");
1344 sim.SetMarkerStyle(20);
1345 sim.SetMarkerSize(0.5);
1346 sim.SetMarkerColor(kRed);
1349 sprintf(sel,
"sqrt(sSNR[%d]",0);
1351 sprintf(sel,
"%s):sqrt(iSNR[%d]",sel,0);
1353 sprintf(sel,
"%s)>>hist4(500)",sel);
1354 sim.Draw(sel,newcut,
"");
1355 TH2F *
htemp4 = (TH2F*)gPad->GetPrimitive(
"hist4");
1356 htemp4->GetXaxis()->SetTitle(
"Injected network snr");
1357 htemp4->GetYaxis()->SetTitle(
"Estimated network snr");
1358 htemp4->GetXaxis()->SetRangeUser(5, pow(10.,TMath::Ceil(TMath::Log10(htemp4->GetMaximum()))));
1359 htemp4->GetYaxis()->SetRangeUser(5, pow(10.,TMath::Ceil(TMath::Log10(htemp4->GetMaximum()))));
1364 sim.SetMarkerColor(kBlue);
1365 sim.Draw(sel,newcut2,
"same");
1371 sprintf(fname,
"%s/Estimated_snr_vs_Injected_snr.eps",
netdir);
1377 sprintf(sel,
"(sqrt(sSNR[%d]",0);
1379 sprintf(sel,
"%s)-sqrt(iSNR[%d]",sel,0);
1381 sprintf(sel,
"%s))/sqrt(iSNR[%d]",sel,0);
1383 sprintf(sel,
"%s)>>hist5",sel);
1384 cout <<
"Selection: "<< sel <<endl;
1386 gStyle->SetOptStat(1);
1387 gStyle->SetOptFit(1);
1390 sim.Draw(sel,newcut2);
1391 TH2F *
htemp5 = (TH2F*)gPad->GetPrimitive(
"hist5");
1392 htemp5->GetXaxis()->SetTitle(
"(Estimated snr -Injected snr)/Injected snr");
1393 htemp5->GetYaxis()->SetTitle(
"Counts");
1394 sim.GetHistogram().Fit(
"gaus");
1400 gStyle->SetOptStat(0);
1401 gStyle->SetOptFit(0);
1452 D_Mtot_inj->GetYaxis()->SetRangeUser(10.,3*MAXDISTANCE);
1453 D_Mtot_inj->Draw(
"p");
1454 D_Mtot_rec->Draw(
"p same");
1456 leg_D =
new TLegend(0.679719,0.156425,0.997992,0.327409,
"",
"brNDC");
1457 sprintf(lab,
"Injections: %i",(
int)
mdc.GetEntries());
1458 leg_D->AddEntry(
"",lab,
"a");
1460 leg_D->AddEntry(D_Mtot_rec, lab,
"p");
1463 leg_D->AddEntry(D_Mtot_inj,lab,
"p");
1465 leg_D->SetFillColor(0);
1475 D_Mchirp_inj->GetYaxis()->SetRangeUser(10.,3*MAXDISTANCE);
1477 D_Mchirp_inj->Draw(
"p");
1478 D_Mchirp_rec->Draw(
"p same");
1487 D_Chi_inj->GetYaxis()->SetRangeUser(10.,3*MAXDISTANCE);
1489 D_Chi_inj->Draw(
"p");
1490 D_Chi_rec->Draw(
"p same");
1499 D_q_inj->GetYaxis()->SetRangeUser(10.,3*MAXDISTANCE);
1501 D_q_rec->Draw(
"p same");
1509 leg_D =
new TLegend(0.679719,0.826425,0.997992,0.997409,
"",
"brNDC");
1510 sprintf(lab,
"Injections: %i",(
int)
mdc.GetEntries());
1511 leg_D->AddEntry(
"",lab,
"a");
1513 leg_D->AddEntry(D_Mtot_rec, lab,
"p");
1516 leg_D->AddEntry(D_Mtot_inj,lab,
"p");
1518 leg_D->SetFillColor(0);
1522 TH1D*
D_inj = D_Mtot_inj->ProjectionY();
1523 D_inj->GetXaxis()->SetTitle(
"Distance (Mpc)");
1524 D_inj->GetYaxis()->SetTitle(
"Events");
1525 D_inj->GetXaxis()->SetTickLength(0.02);
1526 D_inj->GetYaxis()->SetTickLength(0.01);
1527 D_inj->GetXaxis()->SetTitleOffset(1.3);
1528 D_inj->GetYaxis()->SetTitleOffset(1.3);
1529 D_inj->GetXaxis()->CenterTitle(kTRUE);
1530 D_inj->GetYaxis()->CenterTitle(kTRUE);
1531 D_inj->GetXaxis()->SetTitleFont(42);
1532 D_inj->GetXaxis()->SetLabelFont(42);
1533 D_inj->GetYaxis()->SetTitleFont(42);
1534 D_inj->GetYaxis()->SetLabelFont(42);
1535 D_inj->SetLineWidth(4);
1536 D_inj->SetLineColor(2);
1537 D_inj->SetFillColor(2);
1538 D_inj->SetFillStyle(3017);
1540 D_inj->GetXaxis()->SetRangeUser(10.,MAX_EFFECTIVE_RADIUS);
1541 D_inj->GetYaxis()->SetRangeUser(0.1,pow(10.,TMath::Ceil(TMath::Log10(D_inj->GetMaximum()))));
1544 TH1D*
D_rec=D_Mtot_rec->ProjectionY();
1545 D_rec->SetLineWidth(4);
1546 D_rec->SetLineColor(4);
1547 D_rec->SetFillColor(4);
1548 D_rec->SetFillStyle(3017);
1550 D_rec->Draw(
"lp same");
1552 TPaveText *
p_radius =
new TPaveText(0.125301,0.926166,0.567068,0.997409,
"blNDC");
1553 p_radius->SetBorderSize(0);
1554 p_radius->SetFillColor(0);
1555 p_radius->SetTextColor(1);
1556 p_radius->SetTextFont(32);
1557 p_radius->SetTextSize(0.045);
1558 TText *text = p_radius->AddText(
"Found&Lost vs distance");
1561 sprintf(fname,
"%s/Injected_distances_distribution.png",
netdir);
1567 TH1D*
Mtot_inj = D_Mtot_inj->ProjectionX();
1568 Mtot_inj->GetXaxis()->SetTitle(
"Total Mass");
1569 Mtot_inj->GetYaxis()->SetTitle(
"Events");
1570 Mtot_inj->GetXaxis()->SetTickLength(0.02);
1571 Mtot_inj->GetYaxis()->SetTickLength(0.01);
1572 Mtot_inj->GetXaxis()->SetTitleOffset(1.3);
1573 Mtot_inj->GetYaxis()->SetTitleOffset(1.3);
1574 Mtot_inj->GetXaxis()->CenterTitle(kTRUE);
1575 Mtot_inj->GetYaxis()->CenterTitle(kTRUE);
1576 Mtot_inj->GetXaxis()->SetTitleFont(42);
1577 Mtot_inj->GetXaxis()->SetLabelFont(42);
1578 Mtot_inj->GetYaxis()->SetLabelFont(42);
1579 Mtot_inj->SetLineWidth(4);
1580 Mtot_inj->SetLineColor(2);
1581 Mtot_inj->SetFillColor(2);
1582 Mtot_inj->SetFillStyle(3017);
1583 Mtot_inj->SetTitle(0);
1585 Mtot_inj->GetXaxis()->SetRangeUser(MINMtot,MAXMtot);
1586 Mtot_inj->GetYaxis()->SetRangeUser(1,pow(10.,TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
1587 Mtot_inj->Draw(
"lp");
1588 TH1D*
Mtot_rec = D_Mtot_rec->ProjectionX();
1589 Mtot_rec->SetLineWidth(4);
1590 Mtot_rec->SetLineColor(4);
1591 Mtot_rec->SetFillColor(4);
1592 Mtot_rec->SetFillStyle(3017);
1593 Mtot_rec->SetTitle(0);
1594 Mtot_rec->Draw(
"lp same");
1600 TH1D*
Mchirp_inj = D_Mchirp_inj->ProjectionX();
1601 Mchirp_inj->GetXaxis()->SetTitle(
"Chirp Mass");
1602 Mchirp_inj->GetYaxis()->SetTitle(
"Events");
1603 Mchirp_inj->GetXaxis()->SetTickLength(0.02);
1604 Mchirp_inj->GetYaxis()->SetTickLength(0.01);
1605 Mchirp_inj->GetXaxis()->SetTitleOffset(1.3);
1606 Mchirp_inj->GetYaxis()->SetTitleOffset(1.3);
1607 Mchirp_inj->GetXaxis()->CenterTitle(kTRUE);
1608 Mchirp_inj->GetYaxis()->CenterTitle(kTRUE);
1609 Mchirp_inj->GetXaxis()->SetTitleFont(42);
1610 Mchirp_inj->GetXaxis()->SetLabelFont(42);
1611 Mchirp_inj->GetYaxis()->SetTitleFont(42);
1612 Mchirp_inj->GetYaxis()->SetLabelFont(42);
1613 Mchirp_inj->SetLineWidth(4);
1614 Mchirp_inj->SetLineColor(2);
1615 Mchirp_inj->SetFillColor(2);
1616 Mchirp_inj->SetFillStyle(3017);
1617 Mchirp_inj->SetTitle(0);
1619 Mchirp_inj->GetXaxis()->SetRangeUser(MINCHIRP,MAXCHIRP);
1620 Mchirp_inj->GetYaxis()->SetRangeUser(1,pow(10.,TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
1621 Mchirp_inj->Draw(
"lp");
1622 TH1D*
Mchirp_rec = D_Mchirp_rec->ProjectionX();
1623 Mchirp_rec->SetLineWidth(4);
1624 Mchirp_rec->SetLineColor(4);
1625 Mchirp_rec->SetFillColor(4);
1626 Mchirp_rec->SetFillStyle(3017);
1627 Mchirp_rec->SetTitle(0);
1628 Mchirp_rec->Draw(
"lp same");
1635 TH1D* Chi_inj = D_Chi_inj->ProjectionX();
1636 Chi_inj->GetXaxis()->SetTitle(
"#chi_{z}");
1637 Chi_inj->GetYaxis()->SetTitle(
"Events");
1638 Chi_inj->GetXaxis()->SetTickLength(0.02);
1639 Chi_inj->GetYaxis()->SetTickLength(0.01);
1640 Chi_inj->GetXaxis()->SetTitleOffset(1.3);
1641 Chi_inj->GetYaxis()->SetTitleOffset(1.3);
1642 Chi_inj->GetXaxis()->CenterTitle(kTRUE);
1643 Chi_inj->GetYaxis()->CenterTitle(kTRUE);
1644 Chi_inj->GetXaxis()->SetTitleFont(42);
1645 Chi_inj->GetXaxis()->SetLabelFont(42);
1646 Chi_inj->GetYaxis()->SetTitleFont(42);
1647 Chi_inj->GetYaxis()->SetLabelFont(42);
1648 Chi_inj->SetLineWidth(4);
1649 Chi_inj->SetLineColor(2);
1650 Chi_inj->SetFillColor(2);
1651 Chi_inj->SetFillStyle(3017);
1652 Chi_inj->SetTitle(0);
1654 Chi_inj->GetXaxis()->SetRangeUser(MINCHI,MAXCHI);
1655 Chi_inj->GetYaxis()->SetRangeUser(1,pow(10.,TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
1656 Chi_inj->Draw(
"lp");
1657 TH1D* Chi_rec = D_Chi_rec->ProjectionX();
1658 Chi_rec->SetLineWidth(4);
1659 Chi_rec->SetLineColor(4);
1660 Chi_rec->SetFillColor(4);
1661 Chi_rec->SetFillStyle(3017);
1662 Chi_rec->SetTitle(0);
1663 Chi_rec->Draw(
"lp same");
1669 TH1D* Chi_injx = D_Chi_injx->ProjectionX();
1670 Chi_injx->SetLineWidth(4);
1671 Chi_injx->SetLineColor(2);
1672 Chi_injx->SetFillColor(2);
1673 Chi_injx->SetFillStyle(3017);
1674 Chi_injx->SetTitle(0);
1675 Chi_injx->Draw(
"lp");
1676 TH1D* Chi_recx = D_Chi_recx->ProjectionX();
1677 Chi_recx->SetLineWidth(4);
1678 Chi_recx->SetLineColor(4);
1679 Chi_recx->SetFillColor(4);
1680 Chi_recx->SetFillStyle(3017);
1681 Chi_recx->SetTitle(0);
1682 Chi_recx->Draw(
"lp same");
1688 TH1D* Chi_injy = D_Chi_injy->ProjectionX();
1689 Chi_injy->SetLineWidth(4);
1690 Chi_injy->SetLineColor(2);
1691 Chi_injy->SetFillColor(2);
1692 Chi_injy->SetFillStyle(3017);
1693 Chi_injy->SetTitle(0);
1694 Chi_injy->Draw(
"lp");
1695 TH1D* Chi_recy = D_Chi_recy->ProjectionX();
1696 Chi_recy->SetLineWidth(4);
1697 Chi_recy->SetLineColor(4);
1698 Chi_recy->SetFillColor(4);
1699 Chi_recy->SetFillStyle(3017);
1700 Chi_recy->SetTitle(0);
1701 Chi_recy->Draw(
"lp same");
1709 TH1D*
q_inj = D_q_inj->ProjectionX();
1710 q_inj->GetXaxis()->SetTitle(
"Mass Ratio");
1711 q_inj->GetYaxis()->SetTitle(
"Events");
1712 q_inj->GetXaxis()->SetTickLength(0.02);
1713 q_inj->GetYaxis()->SetTickLength(0.01);
1714 q_inj->GetXaxis()->SetTitleOffset(1.3);
1715 q_inj->GetYaxis()->SetTitleOffset(1.3);
1716 q_inj->GetXaxis()->CenterTitle(kTRUE);
1717 q_inj->GetYaxis()->CenterTitle(kTRUE);
1718 q_inj->GetXaxis()->SetTitleFont(42);
1719 q_inj->GetXaxis()->SetLabelFont(42);
1720 q_inj->GetYaxis()->SetTitleFont(42);
1721 q_inj->GetYaxis()->SetLabelFont(42);
1722 q_inj->SetLineWidth(4);
1723 q_inj->SetLineColor(2);
1724 q_inj->SetFillColor(2);
1725 q_inj->SetFillStyle(3017);
1728 q_inj->GetXaxis()->SetRangeUser(MINRATIO,MAXRATIO);
1729 q_inj->GetYaxis()->SetRangeUser(1,pow(10.,TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
1731 TH1D*
q_rec = D_q_rec->ProjectionX();
1732 q_rec->SetLineWidth(4);
1733 q_rec->SetLineColor(4);
1734 q_rec->SetFillColor(4);
1735 q_rec->SetFillStyle(3017);
1737 q_rec->Draw(
"lp same");
1753 TH2F *
efficiency = (TH2F*) rec_events->Clone();
1754 efficiency->SetName(
"efficiency");
1755 efficiency->Divide(inj_events);
1756 efficiency->GetZaxis()->SetRangeUser(0,1.0);
1757 efficiency->SetTitle(
"");
1760 efficiency->Draw(
"colz text");
1763 TExec *
ex1 =
new TExec(
"ex1",
"gStyle->SetPaintTextFormat(\".2f\");");
1768 sprintf(eff_title,
"Efficiency");
1770 sprintf(eff_title,
"%s (%.1f < #chi < %.1f)",eff_title,MIN_CHI,MAX_CHI);
1774 TPaveText *
p_eff =
new TPaveText(0.325301,0.926166,0.767068,0.997409,
"blNDC");
1775 p_eff->SetBorderSize(0);
1776 p_eff->SetFillColor(0);
1777 p_eff->SetTextColor(1);
1778 p_eff->SetTextFont(32);
1779 p_eff->SetTextSize(0.045);
1780 TText *text = p_eff->AddText(eff_title);
1786 sprintf(fname,
"%s/Efficiency_mass1_mass2_chi_%f_%f.png",
netdir,MIN_CHI,MAX_CHI);
1799 efficiency_first_shell->Divide(factor_events_inj[nfactor-1]);
1810 if(factor_events_rec->GetBinContent(j+1,
k+1) != 0.) {
1818 if(error_volume[j][
k] != 0.){error_volume[
j][
k] = TMath::Sqrt(error_volume[j][
k]) ;}
1820 radius[
j][
k] = pow(3.*volume[j][
k]/(4*
TMath::Pi()),1./3);
1821 if(volume[j][
k] != 0.) error_radius[
j][
k] = (1./3)*pow(3./(4*
TMath::Pi()),1./3)*pow(1./pow(volume[j][
k],2),1./3)*error_volume[j][k];
1825 cout <<
"Average Volume at threshold V0 = "<<V0/massbins <<
"on "<<massbins<<
" mass bins"<<endl;
1828 TH2F*
h_radius =
new TH2F(
"h_radius",
"",NBINS_mass,MIN_MASS,MAX_MASS,NBINS_mass2,min_mass2,max_mass2);
1829 h_radius->GetXaxis()->SetRangeUser(MIN_plot_mass1,MAX_plot_mass1);
1830 h_radius->GetYaxis()->SetRangeUser(MIN_plot_mass2,MAX_plot_mass2);
1831 h_radius->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
1832 h_radius->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
1833 h_radius->GetXaxis()->SetTitleOffset(1.3);
1834 h_radius->GetYaxis()->SetTitleOffset(1.25);
1835 h_radius->GetXaxis()->CenterTitle(kTRUE);
1836 h_radius->GetYaxis()->CenterTitle(kTRUE);
1837 h_radius->GetXaxis()->SetNdivisions(410);
1838 h_radius->GetYaxis()->SetNdivisions(410);
1839 h_radius->GetXaxis()->SetTickLength(0.01);
1840 h_radius->GetYaxis()->SetTickLength(0.01);
1841 h_radius->GetZaxis()->SetTickLength(0.01);
1842 h_radius->GetXaxis()->SetTitleFont(42);
1843 h_radius->GetXaxis()->SetLabelFont(42);
1844 h_radius->GetYaxis()->SetTitleFont(42);
1845 h_radius->GetYaxis()->SetLabelFont(42);
1846 h_radius->GetZaxis()->SetLabelFont(42);
1847 h_radius->GetZaxis()->SetLabelSize(0.03);
1848 h_radius->SetTitle(
"");
1853 h_radius->SetBinContent(
i,j,radius[
i-1][j-1]);
1854 h_radius->SetBinError(
i,j,error_radius[
i-1][j-1]);
1859 h_radius->SetContour(
NCont);
1860 h_radius->SetEntries(1);
1861 h_radius->Draw(
"colz text colsize=2");
1863 h_radius->GetZaxis()->SetRangeUser(0,MAX_EFFECTIVE_RADIUS/2.);
1865 TExec *
ex2 =
new TExec(
"ex2",
"gStyle->SetPaintTextFormat(\".0f\");");
1871 sprintf(radius_title,
"%s : Effective radius (Mpc)",networkname);
1874 TPaveText *p_radius =
new TPaveText(0.325301,0.926166,0.767068,0.997409,
"blNDC");
1875 p_radius->SetBorderSize(0);
1876 p_radius->SetFillColor(0);
1877 p_radius->SetTextColor(1);
1878 p_radius->SetTextFont(32);
1879 p_radius->SetTextSize(0.045);
1880 TText *text = p_radius->AddText(radius_title);
1886 TH2F *chirp_mass =
new TH2F(
"Chirp_Mass",
"",NBINS_mass*10,MIN_plot_mass1,MAX_plot_mass1*1.1,NBINS_mass2*10,MIN_plot_mass2,MAX_plot_mass2*1.1);
1888 for (Int_t
i = 0;
i < NBINS_mass*10;
i++) {
1889 for(Int_t j = 0; j < NBINS_mass2*10; j++){
1890 M1=MIN_plot_mass1+
i*(MAX_plot_mass1*1.1-MIN_plot_mass1)/NBINS_mass/10.;
1891 M2=MIN_plot_mass2+j*(MAX_plot_mass2*1.1-MIN_plot_mass2)/NBINS_mass/10.;
1892 chirp_mass->SetBinContent(
i,j,(
float) TMath::Power(pow(M1*M2,3.)/(M1+M2),1./5));
1897 for(
int i=0;
i<
CONTOURS;
i++){contours[
i] = TMath::Nint((
i+1)*MAXCHIRP/CONTOURS);}
1898 chirp_mass->GetZaxis()->SetRangeUser(0,MAXCHIRP);
1900 chirp_mass->SetContour(CONTOURS, contours);
1903 TCanvas* c1t =
new TCanvas(
"c1t",
"Contour List",610,0,600,600);
1904 c1t->SetTopMargin(0.15);
1907 chirp_mass->Draw(
"CONT Z LIST");
1911 TObjArray *conts = (TObjArray*)gROOT->GetListOfSpecials()->FindObject(
"contours");
1912 TList* contLevel = NULL;
1913 TGraph* curv = NULL;
1920 printf(
"*** No Contours Were Extracted!\n");
1924 TotalConts = conts->GetSize();
1927 printf(
"TotalConts = %d\n", TotalConts);
1930 contLevel = (TList*)conts->At(
i);
1931 printf(
"Contour %d has %d Graphs\n",
i, contLevel->GetSize());
1932 nGraphs += contLevel->GetSize();
1937 Double_t
x0, y0,
z0;
1939 Tl.SetTextSize(0.02);
1943 contLevel = (TList*)conts->At(
i);
1946 printf(
"Z-Level Passed in as: Z = %f\n", z0);
1949 curv = (TGraph*)contLevel->First();
1951 for(j = 0; j < contLevel->GetSize(); j++){
1952 point = curv->GetN()-1;
1953 curv->GetPoint(point, x0, y0);
1957 while (((x0 < MIN_plot_mass1)||(x0 > MAX_plot_mass1)||(y0 < MIN_plot_mass2)||(y0 > MAX_plot_mass2))&&(point>0)){
1959 curv->GetPoint(point, x0, y0);
1965 curv->SetLineWidth(1);
1966 curv->SetLineStyle(3);
1969 printf(
"\tGraph: %d -- %d Elements\n", nGraphs,curv->GetN());
1970 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",point,x0,y0);
1974 gc = (TGraph*)curv->Clone();
1978 sprintf(val,
"#it{M_{c}}=%g",z0);
1980 Tl.DrawLatex(x0-1.,y0+0.5,val);
1992 #ifdef PLOT_MASS_RATIO
1993 TH2F *mass_ratio =
new TH2F(
"Mass_Ratio",
"",NBINS_mass*10,MIN_plot_mass1,MAX_plot_mass1*1.1,NBINS_mass2*10,MIN_plot_mass2,MAX_plot_mass2*1.1);
1997 for(
int i=0;
i<NBINS_mass*10;
i++) {
1998 for(
int j=0; j<NBINS_mass*10; j++){
2000 M1 = MIN_plot_mass1 +
i*(MAX_plot_mass1*1.1-MIN_plot_mass1)/NBINS_mass/10.;
2001 M2 = MIN_plot_mass2 + j*(MAX_plot_mass2*1.1-MIN_plot_mass2)/NBINS_mass/10.;
2003 mass_ratio->SetBinContent(
i,j,(
float) M1/M2);
2008 Double_t contours2[5];
2016 mass_ratio->SetContour(5, contours2);
2018 TCanvas* c1t2 =
new TCanvas(
"c1t2",
"Contour List2",610,0,600,600);
2019 c1t2->SetTopMargin(0.15);
2022 mass_ratio->Draw(
"CONT Z LIST");
2026 TObjArray *conts2 = (TObjArray*)gROOT->GetListOfSpecials()->FindObject(
"contours");
2027 TList* contLevel2 = NULL;
2028 TGraph* curv2 = NULL;
2034 if(conts2 == NULL){
printf(
"*** No Contours Were Extracted!\n"); TotalConts = 0;
return; }
2035 else{ TotalConts = conts2->GetSize(); }
2036 printf(
"TotalConts = %d\n", TotalConts);
2039 contLevel2 = (TList*)conts2->At(
i);
2040 printf(
"Contour %d has %d Graphs\n",
i, contLevel2->GetSize());
2041 nGraphs += contLevel2->GetSize();
2045 Double_t
x0, y0,
z0;
2047 Tl2.SetTextSize(0.02);
2052 contLevel2 = (TList*)conts2->At(
i);
2055 printf(
"Z-Level Passed in as: Z = %f\n", z0);
2058 curv2 = (TGraph*)contLevel2->First();
2061 for(j=0; j<contLevel2->GetSize(); j++){
2063 point = curv2->GetN()-1;
2064 curv2->GetPoint(point, x0, y0);
2066 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",point,x0,y0);
2068 while(((x0 < MIN_plot_mass1)||(x0 > MAX_plot_mass1-2.)||(y0 < MIN_plot_mass2)||(y0 > MAX_plot_mass2 -2))&&(point>0)){
2069 curv2->GetPoint(point, x0, y0);
2074 curv2->SetLineWidth(1);
2075 curv2->SetLineStyle(3);
2078 printf(
"\tGraph: %d -- %d Elements\n", nGraphs,curv2->GetN());
2079 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",point,x0,y0);
2083 gc2 = (TGraph*)curv2->Clone();
2086 sprintf(val,
"#it{q}=%.2g",z0);
2087 Tl2.DrawLatex(x0,y0,val);
2113 int spin_mtot_bins = 0;
2114 double V0_spin_mtot = 0.0;
2115 for(
int j=0; j<NBINS_MTOT; j++){
2123 if(spin_mtot_volume[j][
k] != 0.) {
2125 V0_spin_mtot += spin_mtot_volume[
j][
k];
2126 error_spin_mtot_volume[
j][
k] = TMath::Sqrt(error_spin_mtot_volume[j][
k]);
2128 spin_mtot_radius[
j][
k] = pow(3.*spin_mtot_volume[j][
k]/(4*
TMath::Pi()),1./3);
2130 error_spin_mtot_radius[
j][
k] = (1./3)*pow(3./(4*
TMath::Pi()),1./3)*pow(1./pow(spin_mtot_volume[j][
k],2),1./3)*error_spin_mtot_volume[j][k];
2133 cout<<j<<
" "<<
k<<
" "<<spin_mtot_volume[
j][
k]<<
" "<<spin_mtot_radius[
j][
k]<<endl;
2136 cout <<
"Average Spin-Mtot Volume at threshold V0 = "<<V0_spin_mtot/spin_mtot_bins <<endl;
2139 TH2F* h_spin_mtot_radius =
new TH2F(
"h_spin_mtot_radius",
"",NBINS_SPIN,MINCHI,MAXCHI,NBINS_MTOT,MIN_MASS,MAX_MASS);
2142 h_spin_mtot_radius->GetXaxis()->SetTitle(
"#chi_{z}");
2143 h_spin_mtot_radius->GetYaxis()->SetTitle(
"Total Mass (M_{#odot})");
2144 h_spin_mtot_radius->GetZaxis()->SetTitle(
"Sensitive Distance [Mpc]");
2145 h_spin_mtot_radius->GetXaxis()->SetTitleOffset(1.3);
2146 h_spin_mtot_radius->GetYaxis()->SetTitleOffset(1.25);
2147 h_spin_mtot_radius->GetXaxis()->CenterTitle(kTRUE);
2148 h_spin_mtot_radius->GetYaxis()->CenterTitle(kTRUE);
2149 h_spin_mtot_radius->GetZaxis()->CenterTitle(kTRUE);
2150 h_spin_mtot_radius->GetXaxis()->SetNdivisions(410);
2151 h_spin_mtot_radius->GetYaxis()->SetNdivisions(410);
2152 h_spin_mtot_radius->GetXaxis()->SetTickLength(0.01);
2153 h_spin_mtot_radius->GetYaxis()->SetTickLength(0.01);
2154 h_spin_mtot_radius->GetZaxis()->SetTickLength(0.01);
2155 h_spin_mtot_radius->GetXaxis()->SetTitleFont(42);
2156 h_spin_mtot_radius->GetXaxis()->SetLabelFont(42);
2157 h_spin_mtot_radius->GetYaxis()->SetTitleFont(42);
2158 h_spin_mtot_radius->GetYaxis()->SetLabelFont(42);
2159 h_spin_mtot_radius->GetZaxis()->SetLabelFont(42);
2160 h_spin_mtot_radius->GetZaxis()->SetLabelSize(0.03);
2161 h_spin_mtot_radius->SetTitle(
"");
2162 h_spin_mtot_radius->SetMarkerSize(1.5);
2165 for(
int i=1;
i<=NBINS_MTOT+1;
i++){
2166 for(
int j=1; j<=NBINS_SPIN+1; j++){
2167 h_spin_mtot_radius->SetBinContent(j,
i,spin_mtot_radius[
i-1][j-1]);
2168 h_spin_mtot_radius->SetBinError(j,
i,error_spin_mtot_radius[
i-1][j-1]);
2169 cout<<j<<
" "<<
i<<
" "<<h_spin_mtot_radius->GetBinContent(j,
i)<<endl;
2174 h_spin_mtot_radius->SetContour(
NCont);
2175 h_spin_mtot_radius->SetEntries(1);
2176 h_spin_mtot_radius->Draw(
"colz text colsize=2");
2178 h_spin_mtot_radius->GetZaxis()->SetRangeUser(0,MAX_EFFECTIVE_RADIUS/2.);
2180 TExec *ex2 =
new TExec(
"ex2",
"gStyle->SetPaintTextFormat(\".0f\");");
2218 eRrho[
i] = pow(3./(4*
TMath::Pi()),1./3)*1./3*pow(Vrho[
i],-2./3)*eVrho[
i];
2220 if(
i % 100 == 0){cout <<
"Rho bin: "<< Trho[
i] <<
" Radius: "<< Rrho[
i] <<
" +/- "<< eRrho[
i] <<endl;}
2227 cout<<
"Mass averaged Visible volume @rho="<<
RHO_MIN<<
" : "<<Vrho[0]<<
" on "<<massbins<<
" mass bins" <<endl;
2228 cout<<
"OLIVETIME_Myr : "<<OLIVETIME_Myr<<
" shell_volume : "<<shell_volume[0]<<endl;
2233 float rmin = TMath::Max(
RHO_MIN,rho_bkg[index[bkg_entries-1]]);
2235 cbcTool.
doROCPlot(bkg_entries, rho_bkg, index,
RHO_BIN, RHO_NBINS, rmin, liveTot, Rrho, eRrho, Trho, c1,
netdir, write_ascii);
static double g(double e)
delete[] spin_mtot_volume
printf("total live time: non-zero lags = %10.1f \n", liveTot)
fprintf(stdout,"start=%f duration=%f rate=%f\n", x.start(), x.size()/x.rate(), x.rate())
TH2F * efficiency_first_shell
delete[] volume_first_shell
TCut netcc("netcc","netcc[0]>0.7")
dV
Temporay patch for redshifted mass distributions, i.e. point-like in source frame and spread over mul...
delete[] factor_events_spin_mtot_inj
float minDistanceXML[nfactor]
float shell_volume[nfactor]
sprintf(inj_title,"Injected events")
float maxDistanceXML[nfactor]
delete[] error_spin_mtot_radius
delete[] error_volume_first_shell
std::vector< double > iSNR[NIFO_MAX]
delete[] error_spin_mtot_volume
delete[] spin_mtot_radius
TString sel("slag[1]:rho[1]")
TH2F * factor_events_inj[nfactor]
float maxDistance[nfactor]
char veto_not_vetoed[1024]
float minDistance[nfactor]
detectorParams detParms[4]
strcpy(cfg->tmp_dir,"tmp")