7 #define LIV_FILE_NAME "live.txt"
10 #pragma GCC system_header
16 #include "TObjArray.h"
17 #include "TObjString.h"
34 gStyle->SetNumberContours(
NCont);
35 double stops[
NRGBs] = {0.10, 0.25, 0.45, 0.60, 0.75, 1.00};
36 double red[
NRGBs] = {0.00, 0.00, 0.00, 0.97, 0.97, 0.10};
37 double green[
NRGBs] = {0.97, 0.30, 0.40, 0.97, 0.00, 0.00};
38 double blue[
NRGBs] = {0.97, 0.97, 0.00, 0.00, 0.00, 0.00};
39 TColor::CreateGradientColorTable(
NRGBs, stops, red, green, blue,
NCont);
50 float max_mass2 = MAX_MASS;
56 float min_mass1 = MIN_MASS;
62 float max_mass1 = MAX_MASS;
68 float min_mass2 = MIN_MASS;
74 cout <<
"cbc_plots.C starts..." << endl;
77 cout <<
"Mass1 : [" << min_mass1 <<
"," << max_mass1 <<
"] with "
78 << NBINS_mass1 <<
" bins" << endl;
79 cout <<
"Mass2 : [" << min_mass2 <<
"," << max_mass2 <<
"] with "
80 << NBINS_mass2 <<
" bins" << endl;
85 TB.
checkFile(gSystem->Getenv(
"CWB_ROOTLOGON_FILE"));
86 TB.
checkFile(gSystem->Getenv(
"CWB_PARAMETERS_FILE"));
87 TB.
checkFile(gSystem->Getenv(
"CWB_UPARAMETERS_FILE"));
88 TB.
checkFile(gSystem->Getenv(
"CWB_PPARAMETERS_FILE"));
89 TB.
checkFile(gSystem->Getenv(
"CWB_UPPARAMETERS_FILE"));
90 TB.
checkFile(gSystem->Getenv(
"CWB_EPPARAMETERS_FILE"));
102 gStyle->SetTitleFillColor(kWhite);
104 gStyle->SetNumberContours(256);
105 gStyle->SetCanvasColor(kWhite);
106 gStyle->SetStatBorderSize(1);
107 gStyle->SetOptStat(kFALSE);
110 gStyle->SetFrameBorderMode(0);
118 for (
int i = 1;
i <
nIFO;
i++) {
119 if (strlen(
ifo[
i]) > 0)
120 sprintf(networkname,
"%s-%s", networkname,
123 sprintf(networkname,
"%s-%s", networkname,
162 cout << "Number of Factors:" << nfactor << endl;
163 for (
int l = 0; l < nfactor; l++) {
168 if (
MDC.GetInspiralOption(
"--waveform") !=
"") {
170 MDC.GetInspiralOption(
"--waveform");
172 if (
MDC.GetInspiralOption(
"--min-mtotal") !=
"") {
174 (float)
MDC.GetInspiralOption(
"--min-mtotal").Atof();
177 if (
MDC.GetInspiralOption(
"--max-mtotal") !=
"") {
179 (float)
MDC.GetInspiralOption(
"--max-mtotal").Atof();
183 if (
MDC.GetInspiralOption(
"--min-distance") !=
"") {
185 (float)
MDC.GetInspiralOption(
"--min-distance")
192 if (
MDC.GetInspiralOption(
"--max-distance") !=
"") {
194 (float)
MDC.GetInspiralOption(
"--max-distance")
202 if (
MDC.GetInspiralOption(
"--min-mratio") !=
"") {
204 (float)
MDC.GetInspiralOption(
"--min-mratio").Atof();
207 if (
MDC.GetInspiralOption(
"--max-mratio") !=
"") {
209 (float)
MDC.GetInspiralOption(
"--max-mratio").Atof();
212 if ((
MDC.GetInspiralOption(
"--min-mass1") !=
"") && (
MDC.GetInspiralOption(
"--max-mass2") !=
"")) {
214 (float)
MDC.GetInspiralOption(
"--min-mass1").Atof()/(float)
MDC.GetInspiralOption(
"--max-mass2").Atof();
219 if ((
MDC.GetInspiralOption(
"--max-mass1") !=
"") && (
MDC.GetInspiralOption(
"--min-mass2") !=
"")) {
221 (float)
MDC.GetInspiralOption(
"--max-mass1").Atof()/(float)
MDC.GetInspiralOption(
"--min-mass2").Atof();
226 if (
MDC.GetInspiralOption(
"--d-distr") !=
"") {
227 if (
MDC.GetInspiralOption(
"--d-distr")
228 .CompareTo(
"uniform") == 0) {
231 <<
"Uniform distribution in linear distance"
237 }
else if (
MDC.GetInspiralOption(
"--d-distr")
238 .CompareTo(
"volume") == 0) {
240 cout <<
"Uniform distribution in volume"
251 <<
"No defined distance distribution? "
252 "Or different from uniform and volume?"
260 if (
MDC.GetInspiralOption(
"--dchirp-distr") !=
"") {
261 if (
MDC.GetInspiralOption(
"--dchirp-distr")
262 .CompareTo(
"uniform") == 0) {
270 pow(
minRatio[gIFACTOR - 1], 3. / 5.) /
271 pow(1 +
minRatio[gIFACTOR - 1], 6. / 5.);
274 pow(
maxRatio[gIFACTOR - 1], 3. / 5.) /
275 pow(1 +
maxRatio[gIFACTOR - 1], 6. / 5.);
282 if (ShellmaxDistance <
291 cout <<
"Uniform distribution in Chirp Mass "
294 cout <<
"MaxDistance: "
297 cout <<
"No defined distance "
298 "distribution? Or different from "
299 "uniform in distance?"
304 cout <<
"MDC set: " << gIFACTOR << endl;
305 cout <<
"xml conf: waveform=" <<
waveforms[gIFACTOR - 1]
306 <<
" minMtot=" <<
minMtot[gIFACTOR - 1]
307 <<
" maxMtot=" <<
maxMtot[gIFACTOR - 1]
310 <<
" minRatio=" <<
minRatio[gIFACTOR - 1]
311 <<
" maxRatio=" <<
maxRatio[gIFACTOR - 1] << endl;
316 #ifdef FIXMAXDISTANCE
325 minRatio[gIFACTOR - 1] = FIXMINRATIO;
336 maxRatio[gIFACTOR - 1] = FIXMAXRATIO;
346 minMtot[gIFACTOR - 1] = FIXMINTOT;
351 maxMtot[gIFACTOR - 1] = FIXMAXTOT;
364 float MINMtot = 0.99 *
minMtot[gIFACTOR - 1];
375 TMath::FloorNint((MAX_MASS - MIN_MASS) / MASS_BIN / 2.);
376 cout <<
"NBINS_MTOT: " << NBINS_MTOT << endl;
379 cout <<
"Undefined maximal total mass!! Define float MAXMtot"
384 float MINDISTANCE = 0.0;
387 cout <<
"MINDISTANCE = " << MINDISTANCE << endl;
389 cout <<
"Undefined minimal distance!! Defined float MINDISTANCE"
393 float MAXDISTANCE = 0.0;
396 TMath::Max(ShellmaxDistance,
maxDistance[gIFACTOR - 1]);
397 cout <<
"MAXDISTANCE = " << MAXDISTANCE << endl;
399 cout <<
"Undefined maximal distance!! Define float MAXDISTANCE"
408 if ((bminRatio) && (bmaxRatio)) {
409 for (
int l = 0; l <
nfactor; l++) {
430 cout <<
"Undefined minRatio.. " << endl;
434 for (
int l = 0; l < nfactor - 1; l++) {
437 FixedFiducialVolume = 1;
440 FixedFiducialVolume = 1;
441 cout <<
"Beware: different fiducial volumes for "
442 "different factors!!"
460 cout <<
"ERROR! Missing zero lag livetime...Please add:" << endl;
461 cout <<
"\"#define LIVE_ZERO XXXXXXXXXX\" where XXXXXXXXXX is the "
462 "livetime in seconds to your config/user_pparameters.C file...."
472 TCanvas *
c1 =
new TCanvas(
"c1",
"c1", 3, 47, 1000, 802);
473 c1->Range(-1.216392, -477.6306, 508.8988, 2814.609);
475 c1->SetBorderMode(0);
476 c1->SetBorderSize(2);
479 c1->SetRightMargin(0.1154618);
480 c1->SetTopMargin(0.07642487);
481 c1->SetBottomMargin(0.1450777);
484 new TH2F(
"inj_events",
"D_Minj", NBINS_mass, MIN_MASS, MAX_MASS,
485 NBINS_mass2, min_mass2, max_mass2);
486 inj_events->GetXaxis()->SetRangeUser(MIN_plot_mass1, MAX_plot_mass1);
487 inj_events->GetYaxis()->SetRangeUser(MIN_plot_mass2, MAX_plot_mass2);
488 inj_events->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
489 inj_events->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
490 inj_events->GetXaxis()->SetTitleOffset(1.3);
491 inj_events->GetYaxis()->SetTitleOffset(1.25);
492 inj_events->GetXaxis()->CenterTitle(kTRUE);
493 inj_events->GetYaxis()->CenterTitle(kTRUE);
494 inj_events->GetXaxis()->SetNdivisions(410);
495 inj_events->GetYaxis()->SetNdivisions(410);
496 inj_events->GetXaxis()->SetTickLength(0.01);
497 inj_events->GetYaxis()->SetTickLength(0.01);
498 inj_events->GetZaxis()->SetTickLength(0.01);
499 inj_events->GetXaxis()->SetTitleFont(42);
500 inj_events->GetXaxis()->SetLabelFont(42);
501 inj_events->GetYaxis()->SetTitleFont(42);
502 inj_events->GetYaxis()->SetLabelFont(42);
503 inj_events->GetZaxis()->SetLabelFont(42);
504 inj_events->GetZaxis()->SetLabelSize(0.03);
508 inj_events->SetTitle(
"");
510 inj_events->SetContour(
NCont);
513 new TH2F(
"rec_events",
"D_Mrec", NBINS_mass, MIN_MASS, MAX_MASS,
514 NBINS_mass2, min_mass2, max_mass2);
515 rec_events->GetXaxis()->SetRangeUser(MIN_plot_mass1, MAX_plot_mass1);
516 rec_events->GetYaxis()->SetRangeUser(MIN_plot_mass2, MAX_plot_mass2);
517 rec_events->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
518 rec_events->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
519 rec_events->GetXaxis()->SetTitleOffset(1.3);
520 rec_events->GetYaxis()->SetTitleOffset(1.25);
521 rec_events->GetXaxis()->CenterTitle(kTRUE);
522 rec_events->GetYaxis()->CenterTitle(kTRUE);
523 rec_events->GetXaxis()->SetNdivisions(410);
524 rec_events->GetYaxis()->SetNdivisions(410);
525 rec_events->GetXaxis()->SetTickLength(0.01);
526 rec_events->GetYaxis()->SetTickLength(0.01);
527 rec_events->GetZaxis()->SetTickLength(0.01);
528 rec_events->GetXaxis()->SetTitleFont(42);
529 rec_events->GetXaxis()->SetLabelFont(42);
530 rec_events->GetYaxis()->SetTitleFont(42);
531 rec_events->GetYaxis()->SetLabelFont(42);
532 rec_events->GetZaxis()->SetLabelFont(42);
533 rec_events->GetZaxis()->SetLabelSize(0.03);
534 rec_events->SetTitle(
"");
536 rec_events->SetContour(
NCont);
540 factor_events_inj[
i] =
542 TH2F(
"factor_events_inj",
"", NBINS_mass, MIN_MASS,
543 MAX_MASS, NBINS_mass2, min_mass2, max_mass2);
548 new TH2F(
"factor_events_rec",
"", NBINS_mass, MIN_MASS, MAX_MASS,
549 NBINS_mass2, min_mass2, max_mass2);
552 new TH2F(
"Distance vs Mtot inj.",
"", 1000, MINMtot, MAXMtot, 5000,
553 MINDISTANCE / 1000., MAXDISTANCE / 1000.);
555 D_Mtot_inj->GetXaxis()->SetTitle(
"Total mass (M_{#odot})");
556 D_Mtot_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
557 D_Mtot_inj->GetXaxis()->SetTitleOffset(1.3);
558 D_Mtot_inj->GetYaxis()->SetTitleOffset(1.3);
559 D_Mtot_inj->GetXaxis()->SetTickLength(0.01);
560 D_Mtot_inj->GetYaxis()->SetTickLength(0.01);
561 D_Mtot_inj->GetXaxis()->CenterTitle(kTRUE);
562 D_Mtot_inj->GetYaxis()->CenterTitle(kTRUE);
563 D_Mtot_inj->GetXaxis()->SetTitleFont(42);
564 D_Mtot_inj->GetXaxis()->SetLabelFont(42);
565 D_Mtot_inj->GetYaxis()->SetTitleFont(42);
566 D_Mtot_inj->GetYaxis()->SetLabelFont(42);
567 D_Mtot_inj->SetMarkerStyle(20);
568 D_Mtot_inj->SetMarkerSize(0.5);
569 D_Mtot_inj->SetMarkerColor(2);
570 D_Mtot_inj->SetTitle(
"");
572 D_Mtot_inj->SetName(
"D_Mtotinj");
575 new TH2F(
"Distance vs Mtot rec.",
"", 1000, MINMtot, MAXMtot, 5000,
576 MINDISTANCE / 1000., MAXDISTANCE / 1000.);
578 D_Mtot_rec->SetMarkerStyle(20);
579 D_Mtot_rec->SetMarkerSize(0.5);
580 D_Mtot_rec->SetMarkerColor(4);
583 new TH2F(
"Distance vs MChirp inj.",
"", 1000, MINCHIRP, MAXCHIRP,
584 5000, MINDISTANCE / 1000., MAXDISTANCE / 1000.);
586 D_Mchirp_inj->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
587 D_Mchirp_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
588 D_Mchirp_inj->GetXaxis()->SetTitleOffset(1.3);
589 D_Mchirp_inj->GetYaxis()->SetTitleOffset(1.3);
590 D_Mchirp_inj->GetXaxis()->SetTickLength(0.01);
591 D_Mchirp_inj->GetYaxis()->SetTickLength(0.01);
592 D_Mchirp_inj->GetXaxis()->CenterTitle(kTRUE);
593 D_Mchirp_inj->GetYaxis()->CenterTitle(kTRUE);
594 D_Mchirp_inj->GetXaxis()->SetTitleFont(42);
595 D_Mchirp_inj->GetXaxis()->SetLabelFont(42);
596 D_Mchirp_inj->GetYaxis()->SetTitleFont(42);
597 D_Mchirp_inj->GetYaxis()->SetLabelFont(42);
598 D_Mchirp_inj->SetMarkerStyle(20);
599 D_Mchirp_inj->SetMarkerSize(0.5);
600 D_Mchirp_inj->SetMarkerColor(2);
601 D_Mchirp_inj->SetTitle(
"");
603 D_Mchirp_inj->SetName(
"D_Chirp_inj");
606 new TH2F(
"Distance vs MChirp rec.",
"", 1000, MINCHIRP, MAXCHIRP,
607 5000, MINDISTANCE / 1000., MAXDISTANCE / 1000);
609 D_Mchirp_rec->SetMarkerStyle(20);
610 D_Mchirp_rec->SetMarkerSize(0.5);
611 D_Mchirp_rec->SetMarkerColor(4);
614 cout <<
"NBINS_SPIN: " << NBINS_SPIN << endl;
615 TH2F *inj_events_spin_mtot =
616 new TH2F(
"inj_spin_Mtot",
"", NBINS_SPIN, MINCHI, MAXCHI,
617 NBINS_MTOT, MIN_MASS, MAX_MASS);
618 TH2F *rec_events_spin_mtot =
619 new TH2F(
"rec_spin_Mtot",
"", NBINS_SPIN, MINCHI, MAXCHI,
620 NBINS_MTOT, MIN_MASS, MAX_MASS);
623 factor_events_spin_mtot_inj[
i] =
625 TH2F(
"factor_events_spin_mtot_inj",
"", NBINS_SPIN,
626 MINCHI, MAXCHI, NBINS_MTOT, MIN_MASS, MAX_MASS);
630 new TH2F(
"Distance vs Chi inj.",
"", 1000, MINCHI, MAXCHI, 5000,
631 MINDISTANCE / 1000., MAXDISTANCE / 1000.);
633 D_Chi_inj->GetXaxis()->SetTitle(
"#chi_{z}");
634 D_Chi_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
635 D_Chi_inj->GetXaxis()->SetTitleOffset(1.3);
636 D_Chi_inj->GetYaxis()->SetTitleOffset(1.3);
637 D_Chi_inj->GetXaxis()->SetTickLength(0.01);
638 D_Chi_inj->GetYaxis()->SetTickLength(0.01);
639 D_Chi_inj->GetXaxis()->CenterTitle(kTRUE);
640 D_Chi_inj->GetYaxis()->CenterTitle(kTRUE);
641 D_Chi_inj->GetXaxis()->SetTitleFont(42);
642 D_Chi_inj->GetXaxis()->SetLabelFont(42);
643 D_Chi_inj->GetYaxis()->SetTitleFont(42);
644 D_Chi_inj->GetYaxis()->SetLabelFont(42);
645 D_Chi_inj->SetMarkerStyle(20);
646 D_Chi_inj->SetMarkerSize(0.5);
647 D_Chi_inj->SetMarkerColor(2);
648 D_Chi_inj->SetTitle(
"");
650 D_Chi_inj->SetName(
"D_Chi_inj");
653 D_Chi_injx->GetXaxis()->SetTitle(
"#chi_{x}");
654 D_Chi_injx->SetName(
"D_Chi_injx");
656 D_Chi_injy->GetXaxis()->SetTitle(
"#chi_{y}");
657 D_Chi_injy->SetName(
"D_Chi_injy");
660 new TH2F(
"Distance vs Chi rec.",
"", 1000, MINCHI, MAXCHI, 5000,
661 MINDISTANCE / 1000., MAXDISTANCE / 1000);
662 D_Chi_rec->SetMarkerStyle(20);
663 D_Chi_rec->SetMarkerSize(0.5);
664 D_Chi_rec->SetMarkerColor(4);
670 new TH2F(
"Distance vs q inj.",
"", 1000, MINRATIO, MAXRATIO, 5000,
671 MINDISTANCE / 1000., MAXDISTANCE / 1000.);
673 D_q_inj->GetXaxis()->SetTitle(
"Mass ratio (M_{#odot})");
674 D_q_inj->GetYaxis()->SetTitle(
"Distance (Mpc)");
675 D_q_inj->GetXaxis()->SetTitleOffset(1.3);
676 D_q_inj->GetYaxis()->SetTitleOffset(1.3);
677 D_q_inj->GetXaxis()->SetTickLength(0.01);
678 D_q_inj->GetYaxis()->SetTickLength(0.01);
679 D_q_inj->GetXaxis()->CenterTitle(kTRUE);
680 D_q_inj->GetYaxis()->CenterTitle(kTRUE);
681 D_q_inj->GetXaxis()->SetTitleFont(42);
682 D_q_inj->GetXaxis()->SetLabelFont(42);
683 D_q_inj->GetYaxis()->SetTitleFont(42);
684 D_q_inj->GetYaxis()->SetLabelFont(42);
685 D_q_inj->SetMarkerStyle(20);
686 D_q_inj->SetMarkerSize(0.5);
687 D_q_inj->SetMarkerColor(2);
688 D_q_inj->SetTitle(
"");
690 D_q_inj->SetName(
"D_q_inj");
693 new TH2F(
"Distance vs q rec.",
"", 1000, MINRATIO, MAXRATIO, 5000,
694 MINDISTANCE / 1000., MAXDISTANCE / 1000);
696 D_q_rec->SetMarkerStyle(20);
697 D_q_rec->SetMarkerSize(0.5);
698 D_q_rec->SetMarkerColor(4);
699 TH1F *
Dt =
new TH1F(
"Dt",
"", 1000, -0.5, 0.5);
700 Dt->SetMarkerStyle(20);
701 Dt->SetMarkerSize(0.5);
702 Dt->SetMarkerColor(4);
706 rhocc->SetTitle(
"0 < cc < 1");
707 rhocc->SetTitleOffset(1.3,
"Y");
708 rhocc->GetXaxis()->SetTitle(
"network correlation");
709 rhocc->GetYaxis()->SetTitle(
"#rho");
710 rhocc->SetStats(kFALSE);
711 rhocc->SetMarkerStyle(20);
712 rhocc->SetMarkerSize(0.5);
713 rhocc->SetMarkerColor(1);
717 rho_pf->SetTitle(
"chi2");
718 rho_pf->GetXaxis()->SetTitle(
"log10(chi2)");
719 rho_pf->SetTitleOffset(1.3,
"Y");
720 rho_pf->GetYaxis()->SetTitle(
"#rho");
721 rho_pf->SetMarkerStyle(20);
722 rho_pf->SetMarkerColor(1);
723 rho_pf->SetMarkerSize(0.5);
724 rho_pf->SetStats(kFALSE);
726 Float_t
xq[6] = {8.0, 15.0, 25.0, 35.0, 45.0, 55.0};
727 Float_t *
yq =
new Float_t[101];
728 for (
int i = 0;
i < 101;
i++) {
732 new TH2F(
"dchirp rec.",
"Chirp Mass estimate", 5, xq, 100, yq);
733 dchirp_rec->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
734 dchirp_rec->GetYaxis()->SetTitle(
735 "Chirp mass: injected-estimated (M_{#odot})");
736 dchirp_rec->GetXaxis()->SetTitleOffset(1.3);
737 dchirp_rec->GetYaxis()->SetTitleOffset(1.3);
738 dchirp_rec->GetXaxis()->SetTickLength(0.01);
739 dchirp_rec->GetYaxis()->SetTickLength(0.01);
740 dchirp_rec->GetXaxis()->CenterTitle(kTRUE);
741 dchirp_rec->GetYaxis()->CenterTitle(kTRUE);
742 dchirp_rec->GetXaxis()->SetTitleFont(42);
743 dchirp_rec->GetXaxis()->SetLabelFont(42);
744 dchirp_rec->GetYaxis()->SetTitleFont(42);
745 dchirp_rec->GetYaxis()->SetLabelFont(42);
746 dchirp_rec->SetMarkerStyle(20);
747 dchirp_rec->SetMarkerSize(0.5);
748 dchirp_rec->SetMarkerColor(2);
751 new TH3F(
"Distance vs dchirp rec.",
"", 5, 10.0, 50., 100, -50, 50.,
752 5000, MINDISTANCE / 1000., MAXDISTANCE / 1000);
755 D_dchirp_rec->GetXaxis()->SetTitle(
"Chirp mass (M_{#odot})");
756 D_dchirp_rec->GetYaxis()->SetTitle(
757 "Chirp mass: injected-estimated (M_{#odot})");
758 D_dchirp_rec->GetZaxis()->SetTitle(
"Distance (Mpc)");
759 D_dchirp_rec->GetXaxis()->SetTitleOffset(1.3);
760 D_dchirp_rec->GetYaxis()->SetTitleOffset(1.3);
761 D_dchirp_rec->GetXaxis()->SetTickLength(0.01);
762 D_dchirp_rec->GetYaxis()->SetTickLength(0.01);
763 D_dchirp_rec->GetXaxis()->CenterTitle(kTRUE);
764 D_dchirp_rec->GetYaxis()->CenterTitle(kTRUE);
765 D_dchirp_rec->GetXaxis()->SetTitleFont(42);
766 D_dchirp_rec->GetXaxis()->SetLabelFont(42);
767 D_dchirp_rec->GetYaxis()->SetTitleFont(42);
768 D_dchirp_rec->GetYaxis()->SetLabelFont(42);
769 D_dchirp_rec->SetMarkerStyle(20);
770 D_dchirp_rec->SetMarkerSize(0.5);
771 D_dchirp_rec->SetMarkerColor(2);
772 D_dchirp_rec->SetTitle(
"");
779 TChain
sim(
"waveburst");
785 if (
sim.GetListOfBranches()->FindObject(
"ifar")) {
787 TMath::CeilNint(
sim.GetMaximum(
"ifar") / CYS / TRIALS);
789 cout <<
"Missing ifar branch: either use cbc_plots or add it "
796 "Distance vs Mtot rec. vs ifar",
"", 100, MINMtot, MAXMtot, 1000,
797 MINDISTANCE / 1000., MAXDISTANCE / 1000., 1000, 0., MAXIFAR);
799 D_Mtot_rec3->SetMarkerStyle(20);
800 D_Mtot_rec3->SetMarkerSize(0.5);
801 D_Mtot_rec3->SetMarkerColor(4);
811 mdc.SetBranchAddress(
"time",mytime);
812 mdc.SetBranchAddress(
"mass", mass);
813 mdc.SetBranchAddress(
"factor", &factor);
814 mdc.SetBranchAddress(
"distance", &distance);
815 mdc.SetBranchAddress(
"mchirp", &mchirp);
816 mdc.SetBranchAddress(
"spin", spin);
829 sprintf(line,
"#GPS@L1 mass1 mass2 distance spinx1 spiny1 spinz1 "
830 "spinx2 spiny2 spinz2 \n");
831 finj << line << endl;
832 ofstream *finj_single =
new ofstream[
nfactor];
835 for (
int l = 0; l <
nfactor; l++) {
849 finj_single[
l] << line << endl;
853 for (
int g = 0;
g < (
int)
mdc.GetEntries();
g++) {
858 mass[0] = SFmasses[factor - 1][0];
859 mass[1] = SFmasses[factor - 1][1];
860 mchirp = pow(mass[0] * mass[1], 3. / 5.) /
861 pow(mass[0] + mass[1], 1. / 5.);
864 inj_events->Fill(mass[0], mass[1]);
865 D_Mtot_inj->Fill(mass[1] + mass[0], distance);
866 D_Mchirp_inj->Fill(mchirp, distance);
868 for (
int i = 0;
i < 3;
i++) {
869 chi[
i] = (spin[
i] * mass[0] + spin[
i + 3] * mass[1]) /
872 D_Chi_inj->Fill(chi[2], distance);
873 D_Chi_injx->Fill(chi[0], distance);
874 D_Chi_injy->Fill(chi[1], distance);
875 inj_events_spin_mtot->Fill(chi[2], mass[1] + mass[0]);
877 D_q_inj->Fill(mass[0] / mass[1], distance);
881 ifactor = (
int)factor - 1;
882 if ((ifactor > nfactor - 1) || (ifactor < 0)) {
883 cout <<
"ifactor: " << ifactor << endl;
886 factor_events_inj[
ifactor].Fill(mass[0], mass[1]);
888 factor_events_spin_mtot_inj[
ifactor].Fill(chi[2],
896 sprintf(line,
"%10.3f %3.2f %3.2f %3.2f %3.2f %3.2f "
897 "%3.2f %3.2f %3.2f %3.2f\n",
898 mytime[0], mass[0], mass[1], distance, spin[0],
899 spin[1], spin[2], spin[3], spin[4], spin[5]);
900 finj << line << endl;
901 finj_single[
ifactor] << line << endl;
908 for (
int l = 0; l <
nfactor; l++) {
910 finj_single[
l].close();
914 NEVTS += factor_events_inj[
l].GetEntries();
917 cout <<
"Injected signals: " <<
mdc.GetEntries() << endl;
918 cout <<
"Injected signals in histogram factor_events_inj: " << NEVTS
928 float iSNR[3], sSNR[3];
929 sim.SetBranchAddress(
"mass", mass);
930 sim.SetBranchAddress(
"factor", &factor);
932 sim.SetBranchAddress(
"distance", &distance);
933 sim.SetBranchAddress(
"mchirp", &mchirp);
935 sim.SetBranchAddress(
"range", range);
936 sim.SetBranchAddress(
"chirp", chirp);
938 sim.SetBranchAddress(
"rho", rho);
939 sim.SetBranchAddress(
"netcc", netcc);
940 sim.SetBranchAddress(
"neted", &neted);
941 sim.SetBranchAddress(
"ifar", &myifar);
942 sim.SetBranchAddress(
"ecor", &ecor);
943 sim.SetBranchAddress(
"penalty", &penalty);
944 sim.SetBranchAddress(
"time", mytime);
945 sim.SetBranchAddress(
"iSNR", iSNR);
946 sim.SetBranchAddress(
"sSNR", sSNR);
947 sim.SetBranchAddress(
"spin", spin);
948 sim.SetBranchAddress(
"frequency", frequency);
951 cout <<
"Adding hveto flags.." << endl;
952 UChar_t veto_hveto_L1, veto_hveto_H1, veto_hveto_V1;
953 sim.SetBranchAddress(
"veto_hveto_L1", &veto_hveto_L1);
954 sim.SetBranchAddress(
"veto_hveto_H1", &veto_hveto_H1);
959 cout <<
"Adding cat3 flags.." << endl;
960 UChar_t veto_cat3_L1, veto_cat3_H1, veto_cat3_V1;
961 sim.SetBranchAddress(
"veto_cat3_L1", &veto_cat3_L1);
962 sim.SetBranchAddress(
"veto_cat3_H1", &veto_cat3_H1);
983 volume_first_shell[
i][
j] = 0.;
985 error_volume[
i][
j] = 0.;
986 error_volume_first_shell[
i][
j] = 0.;
987 error_radius[
i][
j] = 0.;
998 for (
int i = 0;
i < NBINS_MTOT + 1;
i++) {
999 spin_mtot_volume[
i] =
new float[NBINS_SPIN + 1];
1000 spin_mtot_radius[
i] =
new float[NBINS_SPIN + 1];
1001 error_spin_mtot_volume[
i] =
new float[NBINS_SPIN + 1];
1002 error_spin_mtot_radius[
i] =
new float[NBINS_SPIN + 1];
1004 for (
int j = 0;
j < NBINS_SPIN + 1;
j++) {
1005 spin_mtot_volume[
i][
j] = 0.;
1006 error_spin_mtot_volume[
i][
j] = 0.;
1009 spin_mtot_radius[
i][
j] = 0.;
1010 error_spin_mtot_radius[
i][
j] = 0.;
1020 sprintf(line,
"#GPS@L1 FAR[Hz] eFAR[Hz] Pval "
1021 "ePval factor rho frequency iSNR sSNR \n");
1022 fev << line << endl;
1027 ofstream *fev_single =
new ofstream[
nfactor];
1028 for (
int l = 1; l < nfactor + 1; l++) {
1034 sprintf(fname,
"%s/recovered_signals_%d.txt",
1039 fev_single[l - 1] << line << endl;
1056 double dV,
dV1, dV_spin_mtot,
nevts, internal_volume;
1066 double BKG_LIVETIME_yr = liveTot /
CYS;
1067 double BKG_LIVETIME_Myr = BKG_LIVETIME_yr / (1.e6);
1070 cout <<
"Total live time ---> background: " << liveTot <<
" s" << endl;
1071 cout <<
"Total live time ---> background: " << BKG_LIVETIME_yr <<
" yr"
1073 cout <<
"Total live time ---> background: " << BKG_LIVETIME_Myr
1079 for (
int g = 0;
g < (
int)
sim.GetEntries();
g++) {
1081 if (ifar <=
T_ifar * CYS * TRIALS) {
1090 if (netcc[0] <=
T_cor) {
1094 if ((mytime[0] - mytime[nIFO]) < -
T_win ||
1095 (mytime[0] - mytime[nIFO]) > 2 *
T_win) {
1100 if (neted / ecor >=
T_vED) {
1106 if (penalty <=
T_vED) {
1112 if (penalty <=
T_vED) {
1129 if (++cnt % 1000 == 0) {
1130 cout << cnt <<
" - ";
1132 Dt->Fill(mytime[0] -mytime[nIFO]);
1135 mass[0] = SFmasses[factor - 1][0];
1136 mass[1] = SFmasses[factor - 1][1];
1137 chirp[0] = pow(mass[0] * mass[1], 3. / 5.) /
1138 pow(mass[0] + mass[1], 1. / 5.);
1147 if (range[1] == 0.0) {
1150 D_Mtot_rec->Fill(mass[1] + mass[0], range[1]);
1151 D_Mtot_rec3->Fill(mass[1] + mass[0], range[1],
1152 ifar / TRIALS / CYS);
1153 D_Mchirp_rec->Fill(chirp[0], range[1]);
1154 D_q_rec->Fill(mass[0] / mass[1], range[1]);
1156 rhocc->Fill(netcc[0], rho[
pp_irho]);
1158 float chi2 = penalty > 0 ? log10(penalty) : 0;
1159 rho_pf->Fill(chi2, rho[pp_irho]);
1163 l = TMath::FloorNint((m2 - min_mass2) / MASS_BIN);
1164 if ((l >= NBINS_mass2) || (l < 0)) {
1165 cout <<
"Underflow/Overflow => Enlarge mass range! l="
1166 << l <<
" NBINS_mass=" << NBINS_mass2
1167 <<
" m2=" << m2 <<
" min_mass2=" << min_mass2
1171 m = TMath::FloorNint((m1 - MIN_MASS) / MASS_BIN);
1172 if ((m >= NBINS_mass) || (m < 0)) {
1173 cout <<
"Underflow/Overflow => Enlarge mass range! m="
1174 << m <<
" NBINS_mass=" << NBINS_mass
1175 <<
" m1=" << m1 <<
" MIN_MASS=" << MIN_MASS
1179 rec_events->Fill(mass[0], mass[1]);
1181 chirp[0], chirp[0] - chirp[1],
1183 dchirp_rec->Fill(chirp[0], chirp[0] - chirp[1]);
1186 for (
int i = 0;
i < 3;
i++) {
1187 chi[
i] = (spin[
i] * mass[0] + spin[
i + 3] * mass[1]) /
1188 (mass[1] + mass[0]);
1190 D_Chi_rec->Fill(chi[2], range[1]);
1191 D_Chi_recx->Fill(chi[0], range[1]);
1192 D_Chi_recy->Fill(chi[1], range[1]);
1193 mtt = TMath::FloorNint((m1 + m2 - MIN_MASS) / MASS_BIN / 2.);
1194 if ((mtt > NBINS_MTOT) || (mtt < 0)) {
1195 cout <<
"mt=" << mtt
1196 <<
" is larger than NBINS_MTOT=" << NBINS_MTOT
1197 <<
" Mtot=" << m1 + m2 <<
" minMtot=" << MIN_MASS
1201 cz = TMath::FloorNint((chi[2] - MINCHI) / CHI_BIN);
1202 if ((cz > NBINS_SPIN) || (cz < 0)) {
1204 <<
" is larger than NBINS_SPIN=" << NBINS_SPIN
1205 <<
" chi[2]=" << chi[2] <<
" MINCHI=" << MINCHI
1209 rec_events_spin_mtot->Fill(chi[2], mass[1] + mass[0]);
1213 ifactor = (
int)factor - 1;
1222 }
else if (DDistrUniform) {
1226 }
else if (DDistrChirpMass) {
1230 pow(chirp[0] / 1.22,
1237 else if (Redshift) {
1243 cout <<
"No defined distance distribution? "
1244 "WARNING: Assuming uniform in volume"
1249 if (FixedFiducialVolume) {
1257 nevts = factor_events_inj[
ifactor].GetEntries();
1264 nevts = (double)NINJ[ifactor];
1265 #endif // vector is needed....
1270 if (FixedFiducialVolume) {
1272 nevts += factor_events_spin_mtot_inj[
i]
1273 .GetBinContent(cz + 1, mtt + 1);
1277 factor_events_spin_mtot_inj[
ifactor].GetBinContent(
1281 nevts = (double)NINJ[ifactor];
1287 dV_spin_mtot = dV /
nevts;
1292 factor_events_inj[
i].GetBinContent(m + 1, l + 1);
1295 nevts = (double)NINJ[ifactor];
1304 factor_events_rec->Fill(mass[0], mass[1]);
1312 (
double)RHO_NBINS) +
1314 for (
int i = 0;
i <
nT;
i++) {
1318 eVrho[
i] += pow(dV1, 2);
1321 eVrho[
i] += pow(dV, 2);
1330 vifar.push_back(ifar);
1334 "%10.3f %4.3e %4.3e %4.3e %4.3e %3.2f %3.2f "
1335 "%3.2f %3.2f %3.2f\n",
1336 mytime[2], 1. / ifar,
1337 TMath::Sqrt(TMath::Nint(liveTot / ifar)) / liveTot,
1339 TMath::Sqrt(TMath::Nint(liveTot / ifar)) / liveTot *
1341 factor, rho[pp_irho], frequency[0],
1342 sqrt(iSNR[0] + iSNR[1]),
1343 sqrt(sSNR[0] + sSNR[1]));
1346 fev << line << endl;
1347 fev_single[
ifactor] << line << endl;
1351 error_volume[
m][
l] += pow(dV, 2);
1353 spin_mtot_volume[
mtt][
cz] += dV_spin_mtot;
1355 error_spin_mtot_volume[
mtt][
cz] += TMath::Power(dV_spin_mtot, 2.0);
1361 for (
int l = 0; l <
nfactor; l++) {
1362 fev_single[
l].close();
1365 cout <<
"Recovered entries: " << cnt << endl;
1366 cout <<
"Recovered entries: " << cnt2 << endl;
1367 cout <<
"Recovered entries cut by frequency: " << cntfreq << endl;
1368 cout <<
"Recovered entries vetoed: " << countv << endl;
1369 cout <<
"dV : " << dV <<
" dV1 : " << dV1 << endl;
1374 if (INCLUDE_INTERNAL_VOLUME) {
1375 for (
int i = 0;
i < vdv.size();
i++) {
1377 vdv[
i] += internal_volume;
1381 if (Vrho[
i] > 0.0) {
1382 Vrho[
i] += internal_volume;
1386 for (
int i = 0;
i < NBINS_MTOT + 1;
i++) {
1387 for (
int j = 0;
j < NBINS_SPIN + 1;
j++) {
1388 if (spin_mtot_volume[
i][
j] > 0.0) {
1389 spin_mtot_volume[
i][
j] +=
1397 if (volume[
i][
j] > 0.0) {
1398 volume[
i][
j] += internal_volume;
1404 Int_t *mindex =
new Int_t[vdv.size()];
1405 TMath::Sort((
int)vdv.size(), &vifar[0], mindex,
true);
1412 vV.push_back(vdv[mindex[0]]);
1413 veV.push_back(pow(vdv[mindex[0]], 2));
1414 vsifar.push_back(vifar[mindex[0]]);
1415 vfar.push_back(1. / vifar[mindex[0]]);
1416 vefar.push_back(TMath::Sqrt(TMath::Nint(liveTot / vifar[mindex[0]])) /
1420 for (
int i = 1;
i < vdv.size();
i++) {
1421 if (vifar[mindex[
i]] == 0) {
1424 if (vifar[mindex[
i]] == vsifar[mcount]) {
1426 veV[
mcount] += pow(vdv[mindex[
i]], 2);
1428 vsifar.push_back(vifar[mindex[
i]]);
1429 vfar.push_back(1. / vifar[mindex[i]]);
1430 vefar.push_back(TMath::Sqrt(TMath::Nint(
1431 liveTot / vifar[mindex[i]])) /
1433 vV.push_back(vV[mcount] + vdv[mindex[i]]);
1434 veV.push_back(veV[mcount] + pow(vdv[mindex[i]], 2));
1438 cout <<
"Length of ifar/volume vector: " << vV.size() << endl;
1439 for (
int i = 0;
i < vV.size();
i++) {
1440 veV[
i] = TMath::Sqrt(veV[
i]);
1441 vfar[
i] *= TRIALS *
CYS;
1442 vefar[
i] *= TRIALS *
CYS;
1450 new TGraphErrors(vV.size(), &vfar[0], &vV[0], &vefar[0], &veV[0]);
1451 gr->GetYaxis()->SetTitle(
"Volume [Mpc^{3}]");
1453 gr->GetYaxis()->SetTitle(
"Volume*Time [Gpc^{3}*yr]");
1455 gr->GetXaxis()->SetTitle(
"FAR [yr^{-1}]");
1456 gr->GetXaxis()->SetTitleOffset(1.3);
1457 gr->GetYaxis()->SetTitleOffset(1.25);
1458 gr->GetXaxis()->SetTickLength(0.01);
1459 gr->GetYaxis()->SetTickLength(0.01);
1460 gr->GetXaxis()->CenterTitle(kTRUE);
1461 gr->GetYaxis()->CenterTitle(kTRUE);
1462 gr->GetXaxis()->SetTitleFont(42);
1463 gr->GetXaxis()->SetLabelFont(42);
1464 gr->GetYaxis()->SetTitleFont(42);
1465 gr->GetYaxis()->SetLabelFont(42);
1466 gr->SetMarkerStyle(20);
1467 gr->SetMarkerSize(1.0);
1468 gr->SetMarkerColor(1);
1469 gr->SetLineColor(kBlue);
1486 FMC += factor_events_inj[
i]->GetEntries() / NINJ[
i];
1487 if (factor_events_inj[
i]->GetEntries() > 0) {
1491 Tscale = TMC * FMC / actual_nfactor /
1496 for (
int i = 0;
i < vV.size();
i++) {
1498 pow(3. / (4. *
TMath::Pi() * Tscale) * vV[
i], 1. / 3.));
1499 veR.push_back(pow(3. / (4 *
TMath::Pi() * Tscale), 1. / 3.) *
1500 1. / 3 * pow(vV[i], -2. / 3.) * veV[i]);
1502 cout <<
"Zero-lag livetime: " << Tscale * 365.25 <<
" [days]" << endl;
1506 new TGraphErrors(vR.size(), &vfar[0], &vR[0], &vefar[0], &veR[0]);
1507 gr2->GetYaxis()->SetTitle(
"Sensitive Range [Mpc]");
1509 gr2->GetYaxis()->SetTitle(
"Sensitive Range [Gpc]");
1511 gr2->GetXaxis()->SetTitle(
"FAR [yr^{-1}]");
1512 gr2->GetXaxis()->SetTitleOffset(1.3);
1513 gr2->GetYaxis()->SetTitleOffset(1.25);
1514 gr2->GetXaxis()->SetTickLength(0.01);
1515 gr2->GetYaxis()->SetTickLength(0.01);
1516 gr2->GetXaxis()->CenterTitle(kTRUE);
1517 gr2->GetYaxis()->CenterTitle(kTRUE);
1518 gr2->GetXaxis()->SetTitleFont(42);
1519 gr2->GetXaxis()->SetLabelFont(42);
1520 gr2->GetYaxis()->SetTitleFont(42);
1521 gr2->GetYaxis()->SetLabelFont(42);
1522 gr2->SetMarkerStyle(20);
1523 gr2->SetMarkerSize(1.0);
1524 gr2->SetMarkerColor(1);
1525 gr2->SetLineColor(kBlue);
1535 FILE *frange = fopen(fname,
"w");
1536 fprintf(frange,
"#rho FAR[year^{-1}] eFAR range[Gpc] erange\n");
1537 for (
int i = 0; i < vR.size(); i++) {
1538 fprintf(frange,
"%3.3g %4.3g %4.3g %4.4g %4.4g\n", 0.0,
1539 vfar[i], vefar[i], vR[i], veR[i]);
1547 eVrho[
i] = TMath::Sqrt(eVrho[i]);
1549 cout <<
"Vrho[0] = " << Vrho[0] <<
" +/- " << eVrho[0] << endl;
1550 cout <<
"Vrho[RHO_NBINS-1] = " << Vrho[RHO_NBINS - 1] <<
" +/- "
1551 << eVrho[RHO_NBINS - 1] << endl;
1554 inj_events->Draw(
"colz");
1557 inj_events->GetBinContent(inj_events->GetMaximumBin()) + 1;
1558 inj_events->GetZaxis()->SetRangeUser(0, MAX_AXIS_Z);
1561 sprintf(inj_title,
"Injected events");
1568 new TPaveText(0.325301, 0.926166, 0.767068, 0.997409,
"blNDC");
1569 p_inj->SetBorderSize(0);
1570 p_inj->SetFillColor(0);
1571 p_inj->SetTextColor(1);
1572 p_inj->SetTextFont(32);
1573 p_inj->SetTextSize(0.045);
1574 TText *
text = p_inj->AddText(inj_title);
1590 hcandle->SetMarkerSize(0.5);
1591 hcandle->Draw(
"CANDLE");
1596 dchirp_rec->SetMarkerSize(0.5);
1597 dchirp_rec->Draw(
"CANDLE");
1619 c1->SetLogy(kFALSE);
1620 rhocc->Draw(
"colz");
1626 c1->SetLogx(kFALSE);
1630 c1->SetLogy(kFALSE);
1631 rho_pf->Draw(
"colz");
1639 char sel[1024] =
"";
1640 char newcut[2048] =
"";
1641 char newcut2[2048] =
"";
1649 myptitle =
"Number of reconstructed events as a function of injected SNR";
1650 gStyle->SetOptStat(0);
1652 myxtitle =
"Injected network snr";
1656 myytitle =
"counts";
1660 sprintf(sel,
"sqrt(pow(snr[%d],2)", 0);
1661 for (
int i = 1; i <
nIFO; i++) {
1662 sprintf(sel,
"%s + pow(snr[%d],2)", sel, i);
1665 sprintf(sel,
"%s)>>hist(500)", sel);
1669 cout <<
"nmdc : " << nmdc << endl;
1671 TH2F *htemp = (TH2F *)gPad->GetPrimitive(
"hist");
1672 htemp->GetXaxis()->SetTitle(myxtitle);
1673 htemp->GetYaxis()->SetTitle(myytitle);
1676 htemp->GetXaxis()->SetRangeUser(
1677 1, pow(10., TMath::Ceil(TMath::Log10(htemp->GetMaximum()))));
1678 htemp->GetYaxis()->SetRangeUser(
1679 1, pow(10., TMath::Ceil(TMath::Log10(htemp->GetMaximum()))));
1680 htemp->SetLineColor(kBlack);
1681 htemp->SetLineWidth(3);
1682 sprintf(newcut,
"(((time[0]-time[%d])>-%g) || (time[0]-time[%d])<%g) "
1687 sprintf(sel,
"sqrt(iSNR[%d]", 0);
1688 for (
int i = 1; i <
nIFO; i++) {
1689 sprintf(sel,
"%s + iSNR[%d]", sel, i);
1691 sprintf(sel,
"%s)>>hist2(500)", sel);
1692 cout <<
"cut " << newcut << endl;
1696 sim.Draw(sel, newcut,
"same");
1697 TH2F *htemp2 = (TH2F *)gPad->GetPrimitive(
"hist2");
1698 htemp2->SetFillColor(kRed);
1699 htemp2->SetFillStyle(3017);
1700 htemp2->SetLineColor(kRed);
1701 htemp2->SetLineWidth(2);
1704 cout <<
"nwave : " << nwave << endl;
1709 cout <<
"final cut " << newcut2 << endl;
1711 sel_fin.ReplaceAll(
"hist2",
"hist3");
1715 sim.Draw(sel_fin, newcut2,
"same");
1716 TH2F *htemp3 = (TH2F *)gPad->GetPrimitive(
"hist3");
1717 htemp3->SetFillColor(kBlue);
1718 htemp3->SetFillStyle(3017);
1719 htemp3->SetLineColor(kBlue);
1720 htemp3->SetLineWidth(2);
1722 cout <<
"nwave_final : " << nwave_final << endl;
1726 htemp->SetTitle(
title);
1728 leg_snr =
new TLegend(0.6, 0.755, 0.885, 0.923,
"",
"brNDC");
1729 sprintf(lab,
"Injections Average SNR: %g", htemp->GetMean());
1730 leg_snr->AddEntry(
"", lab,
"a");
1731 sprintf(lab,
"Injected: %i", nmdc);
1732 leg_snr->AddEntry(htemp, lab,
"l");
1733 sprintf(lab,
"Found(minimal cuts): %i", nwave);
1734 leg_snr->AddEntry(htemp2, lab,
"l");
1735 sprintf(lab,
"Found(final cuts): %i", nwave_final);
1736 leg_snr->AddEntry(htemp3, lab,
"l");
1740 sprintf(fname,
"%s/Injected_snr_distributions.png",
netdir);
1745 sim.SetMarkerStyle(20);
1746 sim.SetMarkerSize(0.5);
1747 sim.SetMarkerColor(kRed);
1749 sprintf(sel,
"sqrt(sSNR[%d]", 0);
1750 for (
int i = 1; i <
nIFO; i++) {
1751 sprintf(sel,
"%s + sSNR[%d]", sel, i);
1753 sprintf(sel,
"%s):sqrt(iSNR[%d]", sel, 0);
1754 for (
int i = 1; i <
nIFO; i++) {
1755 sprintf(sel,
"%s + iSNR[%d]", sel, i);
1757 sprintf(sel,
"%s)>>hist4(500)", sel);
1758 sim.Draw(sel, newcut,
"");
1759 TH2F *
htemp4 = (TH2F *)gPad->GetPrimitive(
"hist4");
1760 htemp4->GetXaxis()->SetTitle(
"Injected network snr");
1761 htemp4->GetYaxis()->SetTitle(
"Estimated network snr");
1762 htemp4->GetXaxis()->SetRangeUser(
1763 5, pow(10., TMath::Ceil(TMath::Log10(htemp4->GetMaximum()))));
1764 htemp4->GetYaxis()->SetRangeUser(
1765 5, pow(10., TMath::Ceil(TMath::Log10(htemp4->GetMaximum()))));
1770 sim.SetMarkerColor(kBlue);
1771 sim.Draw(sel, newcut2,
"same");
1777 sprintf(fname,
"%s/Estimated_snr_vs_Injected_snr.eps",
netdir);
1783 sprintf(sel,
"(sqrt(sSNR[%d]", 0);
1784 for (
int i = 1; i <
nIFO; i++) {
1785 sprintf(sel,
"%s + sSNR[%d]", sel, i);
1787 sprintf(sel,
"%s)-sqrt(iSNR[%d]", sel, 0);
1788 for (
int i = 1; i <
nIFO; i++) {
1789 sprintf(sel,
"%s + iSNR[%d]", sel, i);
1791 sprintf(sel,
"%s))/sqrt(iSNR[%d]", sel, 0);
1792 for (
int i = 1; i <
nIFO; i++) {
1793 sprintf(sel,
"%s + iSNR[%d]", sel, i);
1795 sprintf(sel,
"%s)>>hist5", sel);
1796 cout <<
"Selection: " << sel << endl;
1798 gStyle->SetOptStat(1);
1799 gStyle->SetOptFit(1);
1802 sim.Draw(sel, newcut2);
1803 TH2F *
htemp5 = (TH2F *)gPad->GetPrimitive(
"hist5");
1804 htemp5->GetXaxis()->SetTitle(
1805 "(Estimated snr -Injected snr)/Injected snr");
1806 htemp5->GetYaxis()->SetTitle(
"Counts");
1807 sim.GetHistogram()->Fit(
"gaus");
1813 gStyle->SetOptStat(0);
1814 gStyle->SetOptFit(0);
1869 D_Mtot_inj->GetYaxis()->SetRangeUser(10., 3 * MAXDISTANCE);
1870 D_Mtot_inj->Draw(
"p");
1871 D_Mtot_rec->Draw(
"p same");
1874 new TLegend(0.679719, 0.156425, 0.997992, 0.327409,
"",
"brNDC");
1875 sprintf(lab,
"Injections: %i", (
int)
mdc.GetEntries());
1876 leg_D->AddEntry(
"", lab,
"a");
1877 sprintf(lab,
"found: %i", cnt);
1878 leg_D->AddEntry(D_Mtot_rec, lab,
"p");
1881 leg_D->AddEntry(D_Mtot_inj, lab,
"p");
1883 leg_D->SetFillColor(0);
1890 D_Mtot_inj->Draw(
"p");
1891 D_Mtot_rec3->GetZaxis()->SetRange(0, 1.);
1892 TH1 *
t0 = D_Mtot_rec3->Project3D(
"yx_0");
1893 t0->SetMarkerColor(kMagenta);
1895 D_Mtot_rec3->GetZaxis()->SetRange(1., 10.);
1896 TH1 *
t1 = D_Mtot_rec3->Project3D(
"yx_1");
1897 t1->SetMarkerColor(kCyan);
1899 D_Mtot_rec3->GetZaxis()->SetRange(10., 100.);
1900 TH1 *
t10 = D_Mtot_rec3->Project3D(
"yx_10");
1901 t10->SetMarkerColor(kBlue);
1902 t10->Draw(
"p same");
1903 D_Mtot_rec3->GetZaxis()->SetRange(100., MAXIFAR);
1904 TH1 *
t100 = D_Mtot_rec3->Project3D(
"yx_100");
1905 t100->SetMarkerColor(kYellow);
1906 t100->Draw(
"p same");
1908 new TLegend(0.679719, 0.156425, 0.997992, 0.327409,
"",
"brNDC");
1909 leg_D2->AddEntry(t0,
"IFAR<1 yr",
"p");
1910 leg_D2->AddEntry(t1,
"1 yr < IFAR < 10 yr",
"p");
1911 leg_D2->AddEntry(t10,
"10 yr < IFAR < 100 yr",
"p");
1912 leg_D2->AddEntry(t100,
"IFAR > 100 yr",
"p");
1917 sprintf(fname,
"%s/Distance_vs_total_mass_ifar.eps",
netdir);
1922 D_Mchirp_inj->GetYaxis()->SetRangeUser(10., 3 * MAXDISTANCE);
1924 D_Mchirp_inj->Draw(
"p");
1925 D_Mchirp_rec->Draw(
"p same");
1933 D_Chi_inj->GetYaxis()->SetRangeUser(10., 3 * MAXDISTANCE);
1935 D_Chi_inj->Draw(
"p");
1936 D_Chi_rec->Draw(
"p same");
1944 D_q_inj->GetYaxis()->SetRangeUser(10., 3 * MAXDISTANCE);
1946 D_q_rec->Draw(
"p same");
1955 new TLegend(0.679719, 0.826425, 0.997992, 0.997409,
"",
"brNDC");
1956 sprintf(lab,
"Injections: %i", (
int)
mdc.GetEntries());
1957 leg_D->AddEntry(
"", lab,
"a");
1958 sprintf(lab,
"found: %i", cnt);
1959 leg_D->AddEntry(D_Mtot_rec, lab,
"p");
1962 leg_D->AddEntry(D_Mtot_inj, lab,
"p");
1964 leg_D->SetFillColor(0);
1968 TH1D *
D_inj = D_Mtot_inj->ProjectionY();
1969 D_inj->GetXaxis()->SetTitle(
"Distance (Mpc)");
1970 D_inj->GetYaxis()->SetTitle(
"Events");
1971 D_inj->GetXaxis()->SetTickLength(0.02);
1972 D_inj->GetYaxis()->SetTickLength(0.01);
1973 D_inj->GetXaxis()->SetTitleOffset(1.3);
1974 D_inj->GetYaxis()->SetTitleOffset(1.3);
1975 D_inj->GetXaxis()->CenterTitle(kTRUE);
1976 D_inj->GetYaxis()->CenterTitle(kTRUE);
1977 D_inj->GetXaxis()->SetTitleFont(42);
1978 D_inj->GetXaxis()->SetLabelFont(42);
1979 D_inj->GetYaxis()->SetTitleFont(42);
1980 D_inj->GetYaxis()->SetLabelFont(42);
1981 D_inj->SetLineWidth(4);
1982 D_inj->SetLineColor(2);
1983 D_inj->SetFillColor(2);
1984 D_inj->SetFillStyle(3017);
1986 D_inj->GetXaxis()->SetRangeUser(10., MAX_EFFECTIVE_RADIUS);
1987 D_inj->GetYaxis()->SetRangeUser(
1988 0.1, pow(10., TMath::Ceil(TMath::Log10(D_inj->GetMaximum()))));
1991 TH1D *
D_rec = D_Mtot_rec->ProjectionY();
1992 D_rec->SetLineWidth(4);
1993 D_rec->SetLineColor(4);
1994 D_rec->SetFillColor(4);
1995 D_rec->SetFillStyle(3017);
1997 D_rec->Draw(
"lp same");
2000 new TPaveText(0.125301, 0.926166, 0.567068, 0.997409,
"blNDC");
2001 p_radius->SetBorderSize(0);
2002 p_radius->SetFillColor(0);
2003 p_radius->SetTextColor(1);
2004 p_radius->SetTextFont(32);
2005 p_radius->SetTextSize(0.045);
2006 text = p_radius->AddText(
"Found&Lost vs distance");
2009 sprintf(fname,
"%s/Injected_distances_distribution.png",
netdir);
2016 Mtot_inj->GetXaxis()->SetTitle(
"Total Mass");
2017 Mtot_inj->GetYaxis()->SetTitle(
"Events");
2018 Mtot_inj->GetXaxis()->SetTickLength(0.02);
2019 Mtot_inj->GetYaxis()->SetTickLength(0.01);
2020 Mtot_inj->GetXaxis()->SetTitleOffset(1.3);
2021 Mtot_inj->GetYaxis()->SetTitleOffset(1.3);
2022 Mtot_inj->GetXaxis()->CenterTitle(kTRUE);
2023 Mtot_inj->GetYaxis()->CenterTitle(kTRUE);
2024 Mtot_inj->GetXaxis()->SetTitleFont(42);
2025 Mtot_inj->GetXaxis()->SetLabelFont(42);
2026 Mtot_inj->GetYaxis()->SetLabelFont(42);
2027 Mtot_inj->SetLineWidth(4);
2028 Mtot_inj->SetLineColor(2);
2029 Mtot_inj->SetFillColor(2);
2030 Mtot_inj->SetFillStyle(3017);
2031 Mtot_inj->SetTitle(0);
2033 Mtot_inj->GetXaxis()->SetRangeUser(MINMtot, MAXMtot);
2034 Mtot_inj->GetYaxis()->SetRangeUser(
2035 1, pow(10., TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
2036 Mtot_inj->Draw(
"lp");
2038 Mtot_rec->SetLineWidth(4);
2039 Mtot_rec->SetLineColor(4);
2040 Mtot_rec->SetFillColor(4);
2041 Mtot_rec->SetFillStyle(3017);
2042 Mtot_rec->SetTitle(0);
2043 Mtot_rec->Draw(
"lp same");
2050 Mchirp_inj->GetXaxis()->SetTitle(
"Chirp Mass");
2051 Mchirp_inj->GetYaxis()->SetTitle(
"Events");
2052 Mchirp_inj->GetXaxis()->SetTickLength(0.02);
2053 Mchirp_inj->GetYaxis()->SetTickLength(0.01);
2054 Mchirp_inj->GetXaxis()->SetTitleOffset(1.3);
2055 Mchirp_inj->GetYaxis()->SetTitleOffset(1.3);
2056 Mchirp_inj->GetXaxis()->CenterTitle(kTRUE);
2057 Mchirp_inj->GetYaxis()->CenterTitle(kTRUE);
2058 Mchirp_inj->GetXaxis()->SetTitleFont(42);
2059 Mchirp_inj->GetXaxis()->SetLabelFont(42);
2060 Mchirp_inj->GetYaxis()->SetTitleFont(42);
2061 Mchirp_inj->GetYaxis()->SetLabelFont(42);
2062 Mchirp_inj->SetLineWidth(4);
2063 Mchirp_inj->SetLineColor(2);
2064 Mchirp_inj->SetFillColor(2);
2065 Mchirp_inj->SetFillStyle(3017);
2066 Mchirp_inj->SetTitle(0);
2068 Mchirp_inj->GetXaxis()->SetRangeUser(MINCHIRP, MAXCHIRP);
2069 Mchirp_inj->GetYaxis()->SetRangeUser(
2070 1, pow(10., TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
2071 Mchirp_inj->Draw(
"lp");
2073 Mchirp_rec->SetLineWidth(4);
2074 Mchirp_rec->SetLineColor(4);
2075 Mchirp_rec->SetFillColor(4);
2076 Mchirp_rec->SetFillStyle(3017);
2077 Mchirp_rec->SetTitle(0);
2078 Mchirp_rec->Draw(
"lp same");
2085 TH1D *Chi_inj = D_Chi_inj->ProjectionX();
2086 Chi_inj->GetXaxis()->SetTitle(
"#chi_{z}");
2087 Chi_inj->GetYaxis()->SetTitle(
"Events");
2088 Chi_inj->GetXaxis()->SetTickLength(0.02);
2089 Chi_inj->GetYaxis()->SetTickLength(0.01);
2090 Chi_inj->GetXaxis()->SetTitleOffset(1.3);
2091 Chi_inj->GetYaxis()->SetTitleOffset(1.3);
2092 Chi_inj->GetXaxis()->CenterTitle(kTRUE);
2093 Chi_inj->GetYaxis()->CenterTitle(kTRUE);
2094 Chi_inj->GetXaxis()->SetTitleFont(42);
2095 Chi_inj->GetXaxis()->SetLabelFont(42);
2096 Chi_inj->GetYaxis()->SetTitleFont(42);
2097 Chi_inj->GetYaxis()->SetLabelFont(42);
2098 Chi_inj->SetLineWidth(4);
2099 Chi_inj->SetLineColor(2);
2100 Chi_inj->SetFillColor(2);
2101 Chi_inj->SetFillStyle(3017);
2102 Chi_inj->SetTitle(0);
2104 Chi_inj->GetXaxis()->SetRangeUser(MINCHI, MAXCHI);
2105 Chi_inj->GetYaxis()->SetRangeUser(
2106 1, pow(10., TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
2107 Chi_inj->Draw(
"lp");
2108 TH1D *Chi_rec = D_Chi_rec->ProjectionX();
2109 Chi_rec->SetLineWidth(4);
2110 Chi_rec->SetLineColor(4);
2111 Chi_rec->SetFillColor(4);
2112 Chi_rec->SetFillStyle(3017);
2113 Chi_rec->SetTitle(0);
2114 Chi_rec->Draw(
"lp same");
2120 TH1D *Chi_injx = D_Chi_injx->ProjectionX();
2121 Chi_injx->SetLineWidth(4);
2122 Chi_injx->SetLineColor(2);
2123 Chi_injx->SetFillColor(2);
2124 Chi_injx->SetFillStyle(3017);
2125 Chi_injx->SetTitle(0);
2126 Chi_injx->Draw(
"lp");
2127 TH1D *Chi_recx = D_Chi_recx->ProjectionX();
2128 Chi_recx->SetLineWidth(4);
2129 Chi_recx->SetLineColor(4);
2130 Chi_recx->SetFillColor(4);
2131 Chi_recx->SetFillStyle(3017);
2132 Chi_recx->SetTitle(0);
2133 Chi_recx->Draw(
"lp same");
2139 TH1D *Chi_injy = D_Chi_injy->ProjectionX();
2140 Chi_injy->SetLineWidth(4);
2141 Chi_injy->SetLineColor(2);
2142 Chi_injy->SetFillColor(2);
2143 Chi_injy->SetFillStyle(3017);
2144 Chi_injy->SetTitle(0);
2145 Chi_injy->Draw(
"lp");
2146 TH1D *Chi_recy = D_Chi_recy->ProjectionX();
2147 Chi_recy->SetLineWidth(4);
2148 Chi_recy->SetLineColor(4);
2149 Chi_recy->SetFillColor(4);
2150 Chi_recy->SetFillStyle(3017);
2151 Chi_recy->SetTitle(0);
2152 Chi_recy->Draw(
"lp same");
2160 q_inj->GetXaxis()->SetTitle(
"Mass Ratio");
2161 q_inj->GetYaxis()->SetTitle(
"Events");
2162 q_inj->GetXaxis()->SetTickLength(0.02);
2163 q_inj->GetYaxis()->SetTickLength(0.01);
2164 q_inj->GetXaxis()->SetTitleOffset(1.3);
2165 q_inj->GetYaxis()->SetTitleOffset(1.3);
2166 q_inj->GetXaxis()->CenterTitle(kTRUE);
2167 q_inj->GetYaxis()->CenterTitle(kTRUE);
2168 q_inj->GetXaxis()->SetTitleFont(42);
2169 q_inj->GetXaxis()->SetLabelFont(42);
2170 q_inj->GetYaxis()->SetTitleFont(42);
2171 q_inj->GetYaxis()->SetLabelFont(42);
2172 q_inj->SetLineWidth(4);
2173 q_inj->SetLineColor(2);
2174 q_inj->SetFillColor(2);
2175 q_inj->SetFillStyle(3017);
2178 q_inj->GetXaxis()->SetRangeUser(MINRATIO, MAXRATIO);
2179 q_inj->GetYaxis()->SetRangeUser(
2180 1, pow(10., TMath::Ceil(TMath::Log10(Mtot_inj->GetMaximum()))));
2183 q_rec->SetLineWidth(4);
2184 q_rec->SetLineColor(4);
2185 q_rec->SetFillColor(4);
2186 q_rec->SetFillStyle(3017);
2188 q_rec->Draw(
"lp same");
2202 efficiency->SetName(
"efficiency");
2203 efficiency->Divide(inj_events);
2204 efficiency->GetZaxis()->SetRangeUser(0, 1.0);
2205 efficiency->SetTitle(
"");
2207 efficiency->Draw(
"colz text");
2209 TExec *
ex1 =
new TExec(
"ex1",
"gStyle->SetPaintTextFormat(\".2f\");");
2213 sprintf(eff_title,
"Efficiency");
2215 sprintf(eff_title,
"%s (%.1f < #chi < %.1f)", eff_title, MINCHI,
2220 new TPaveText(0.325301, 0.926166, 0.767068, 0.997409,
"blNDC");
2221 p_eff->SetBorderSize(0);
2222 p_eff->SetFillColor(0);
2223 p_eff->SetTextColor(1);
2224 p_eff->SetTextFont(32);
2225 p_eff->SetTextSize(0.045);
2226 text = p_eff->AddText(eff_title);
2230 sprintf(fname,
"%s/Efficiency_mass1_mass2_chi_%f_%f.png",
netdir,
2239 efficiency_first_shell->Divide(&factor_events_inj[nfactor - 1]);
2254 if (factor_events_rec->GetBinContent(
j + 1,
k + 1) !=
2265 if (error_volume[
j][
k] != 0.) {
2266 error_volume[
j][
k] =
2267 TMath::Sqrt(error_volume[
j][
k]);
2271 pow(3. * volume[
j][
k] / (4 *
TMath::Pi() * Tscale),
2275 if (volume[
j][
k] != 0.)
2276 error_radius[
j][
k] =
2280 pow(1. / pow(volume[
j][
k], 2), 1. / 3) *
2284 cout <<
"Average Volume at threshold V0 = " << V0 / massbins <<
"on "
2285 << massbins <<
" mass bins" << endl;
2288 TH2F *
h_radius =
new TH2F(
"h_radius",
"", NBINS_mass, MIN_MASS,
2289 MAX_MASS, NBINS_mass2, min_mass2, max_mass2);
2290 h_radius->GetXaxis()->SetRangeUser(MIN_plot_mass1, MAX_plot_mass1);
2291 h_radius->GetYaxis()->SetRangeUser(MIN_plot_mass2, MAX_plot_mass2);
2292 h_radius->GetXaxis()->SetTitle(
"Mass 1 (M_{#odot})");
2293 h_radius->GetYaxis()->SetTitle(
"Mass 2 (M_{#odot})");
2294 h_radius->GetXaxis()->SetTitleOffset(1.3);
2295 h_radius->GetYaxis()->SetTitleOffset(1.25);
2296 h_radius->GetXaxis()->CenterTitle(kTRUE);
2297 h_radius->GetYaxis()->CenterTitle(kTRUE);
2298 h_radius->GetXaxis()->SetNdivisions(410);
2299 h_radius->GetYaxis()->SetNdivisions(410);
2300 h_radius->GetXaxis()->SetTickLength(0.01);
2301 h_radius->GetYaxis()->SetTickLength(0.01);
2302 h_radius->GetZaxis()->SetTickLength(0.01);
2303 h_radius->GetXaxis()->SetTitleFont(42);
2304 h_radius->GetXaxis()->SetLabelFont(42);
2305 h_radius->GetYaxis()->SetTitleFont(42);
2306 h_radius->GetYaxis()->SetLabelFont(42);
2307 h_radius->GetZaxis()->SetLabelFont(42);
2308 h_radius->GetZaxis()->SetLabelSize(0.03);
2309 h_radius->SetTitle(
"");
2313 h_radius->SetBinContent(i,
j, radius[i - 1][
j - 1]);
2314 h_radius->SetBinError(i,
j, error_radius[i - 1][
j - 1]);
2318 h_radius->SetContour(
NCont);
2319 h_radius->SetEntries(1);
2321 h_radius->Draw(
"colz text colsize=2");
2324 h_radius->GetZaxis()->SetRangeUser(0, MAX_EFFECTIVE_RADIUS / 2.);
2326 TExec *
ex2 =
new TExec(
"ex2",
"gStyle->SetPaintTextFormat(\".0f\");");
2331 sprintf(radius_title,
"%s : Effective radius (Mpc)", networkname);
2334 new TPaveText(0.325301, 0.926166, 0.767068, 0.997409,
"blNDC");
2335 p_radius->SetBorderSize(0);
2336 p_radius->SetFillColor(0);
2337 p_radius->SetTextColor(1);
2338 p_radius->SetTextFont(32);
2339 p_radius->SetTextSize(0.045);
2340 text = p_radius->AddText(radius_title);
2354 new TH2F(
"Chirp_Mass",
"", NBINS_mass * 10, MIN_plot_mass1,
2355 MAX_plot_mass1 * 1.1, NBINS_mass2 * 10, MIN_plot_mass2,
2356 MAX_plot_mass2 * 1.1);
2357 for (Int_t i = 0; i < NBINS_mass * 10; i++) {
2358 for (Int_t
j = 0;
j < NBINS_mass2 * 10;
j++) {
2359 M1 = MIN_plot_mass1 +
2360 i * (MAX_plot_mass1 - MIN_plot_mass1 * 1.1) /
2362 M2 = MIN_plot_mass2 +
2363 j * (MAX_plot_mass2 - MIN_plot_mass2 * 1.1) /
2365 chirp_mass->SetBinContent(
2366 i,
j, (
float)TMath::Power(
2367 pow(M1 * M2, 3.) / (M1 + M2), 1. / 5));
2372 for (
int i = 0; i <
CONTOURS; i++) {
2373 contours[
i] = TMath::Nint((i + 1) * MAXCHIRP / CONTOURS);
2375 chirp_mass->GetZaxis()->SetRangeUser(0, MAXCHIRP);
2377 chirp_mass->SetContour(CONTOURS, contours);
2379 TCanvas *c1t =
new TCanvas(
"c1t",
"Contour List", 610, 0, 600, 600);
2380 c1t->SetTopMargin(0.15);
2383 chirp_mass->Draw(
"CONT Z LIST");
2388 (TObjArray *)gROOT->GetListOfSpecials()->FindObject(
"contours");
2389 TList *contLevel = NULL;
2390 TGraph *curv = NULL;
2395 if (conts == NULL) {
2396 printf(
"*** No Contours Were Extracted!\n");
2400 TotalConts = conts->GetSize();
2403 printf(
"TotalConts = %d\n", TotalConts);
2406 contLevel = (TList *)conts->At(i);
2407 printf(
"Contour %d has %d Graphs\n", i, contLevel->GetSize());
2408 nGraphs += contLevel->GetSize();
2413 Tl.SetTextSize(0.02);
2416 contLevel = (TList *)conts->At(i);
2419 printf(
"Z-Level Passed in as: Z = %f\n", z0);
2422 curv = (TGraph *)contLevel->First();
2423 for (
int j = 0;
j < contLevel->GetSize();
j++) {
2424 point = curv->GetN() - 1;
2425 curv->GetPoint(point, x0, Y0);
2431 ((x0 < MIN_plot_mass1) || (x0 > MAX_plot_mass1) ||
2432 (Y0 < MIN_plot_mass2) || (Y0 > MAX_plot_mass2)) &&
2435 curv->GetPoint(point, x0, Y0);
2440 curv->SetLineWidth(1);
2441 curv->SetLineStyle(3);
2444 printf(
"\tGraph: %d -- %d Elements\n", nGraphs,
2446 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",
2452 gc = (TGraph *)curv->Clone();
2456 sprintf(val,
"#it{M_{c}}=%g", z0);
2458 Tl.DrawLatex(x0 - 1., Y0 + 0.5, val);
2470 #ifdef PLOT_MASS_RATIO
2472 new TH2F(
"Mass_Ratio",
"", NBINS_mass * 10, MIN_plot_mass1,
2473 MAX_plot_mass1 * 1.1, NBINS_mass2 * 10, MIN_plot_mass2,
2474 MAX_plot_mass2 * 1.1);
2477 for (
int i = 0; i < NBINS_mass * 10; i++) {
2478 for (
int j = 0;
j < NBINS_mass * 10;
j++) {
2481 i * (MAX_plot_mass1 - MIN_plot_mass1 * 1.1) /
2484 j * (MAX_plot_mass2 - MIN_plot_mass2 * 1.1) /
2487 mass_ratio->SetBinContent(i,
j, (
float)M1 / M2);
2491 Double_t contours2[5];
2498 mass_ratio->SetContour(5, contours2);
2500 TCanvas *c1t2 =
new TCanvas(
"c1t2",
"Contour List2", 610, 0, 600, 600);
2501 c1t2->SetTopMargin(0.15);
2504 mass_ratio->Draw(
"CONT Z LIST");
2509 (TObjArray *)gROOT->GetListOfSpecials()->FindObject(
"contours");
2510 TList *contLevel2 = NULL;
2511 TGraph *curv2 = NULL;
2517 if (conts2 == NULL) {
2518 printf(
"*** No Contours Were Extracted!\n");
2522 TotalConts = conts2->GetSize();
2524 printf(
"TotalConts = %d\n", TotalConts);
2527 contLevel2 = (TList *)conts2->At(i);
2528 printf(
"Contour %d has %d Graphs\n", i, contLevel2->GetSize());
2529 nGraphs += contLevel2->GetSize();
2533 Tl2.SetTextSize(0.02);
2537 contLevel2 = (TList *)conts2->At(i);
2540 printf(
"Z-Level Passed in as: Z = %f\n", z0);
2543 curv2 = (TGraph *)contLevel2->First();
2545 for (
int j = 0;
j < contLevel2->GetSize();
j++) {
2547 point = curv2->GetN() - 1;
2548 curv2->GetPoint(point, x0, Y0);
2550 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",
2553 while (((x0 < MIN_plot_mass1) ||
2554 (x0 > MAX_plot_mass1 - 4.) ||
2555 (Y0 < MIN_plot_mass2) ||
2556 (Y0 > MAX_plot_mass2 - 2)) &&
2558 curv2->GetPoint(point, x0, Y0);
2562 curv2->SetLineWidth(1);
2563 curv2->SetLineStyle(3);
2566 printf(
"\tGraph: %d -- %d Elements\n", nGraphs,
2568 printf(
"\tCoordinate Point # %d : x0 = %f y0 = %f \n",
2574 gc2 = (TGraph *)curv2->Clone();
2577 sprintf(val,
"#it{q}=%.2g", z0);
2578 Tl2.DrawLatex(x0, Y0, val);
2599 int spin_mtot_bins = 0;
2600 double V0_spin_mtot = 0.0;
2601 for (
int j = 0;
j < NBINS_MTOT;
j++) {
2611 if (spin_mtot_volume[
j][
k] != 0.) {
2616 V0_spin_mtot += spin_mtot_volume[
j][
k];
2617 error_spin_mtot_volume[
j][
k] = TMath::Sqrt(
2618 error_spin_mtot_volume
2624 spin_mtot_radius[
j][
k] =
2625 pow(3. * spin_mtot_volume[
j][
k] /
2629 error_spin_mtot_radius[
j][
k] =
2633 pow(1. / pow(spin_mtot_volume[
j][
k], 2),
2635 error_spin_mtot_volume[
j][k];
2638 cout <<
j <<
" " <<
k <<
" " << spin_mtot_volume[
j][
k]
2639 <<
" " << spin_mtot_radius[
j][
k] << endl;
2642 cout <<
"Average Spin-Mtot Volume at threshold V0 = "
2643 << V0_spin_mtot / spin_mtot_bins << endl;
2646 TH2F *h_spin_mtot_radius =
2647 new TH2F(
"h_spin_mtot_radius",
"", NBINS_SPIN, MINCHI, MAXCHI,
2648 NBINS_MTOT, MIN_MASS, MAX_MASS);
2651 h_spin_mtot_radius->GetXaxis()->SetTitle(
"#chi_{z}");
2652 h_spin_mtot_radius->GetYaxis()->SetTitle(
"Total Mass (M_{#odot})");
2653 h_spin_mtot_radius->GetZaxis()->SetTitle(
"Sensitive Distance [Mpc]");
2654 h_spin_mtot_radius->GetXaxis()->SetTitleOffset(1.3);
2655 h_spin_mtot_radius->GetYaxis()->SetTitleOffset(1.25);
2656 h_spin_mtot_radius->GetXaxis()->CenterTitle(kTRUE);
2657 h_spin_mtot_radius->GetYaxis()->CenterTitle(kTRUE);
2658 h_spin_mtot_radius->GetZaxis()->CenterTitle(kTRUE);
2659 h_spin_mtot_radius->GetXaxis()->SetNdivisions(410);
2660 h_spin_mtot_radius->GetYaxis()->SetNdivisions(410);
2661 h_spin_mtot_radius->GetXaxis()->SetTickLength(0.01);
2662 h_spin_mtot_radius->GetYaxis()->SetTickLength(0.01);
2663 h_spin_mtot_radius->GetZaxis()->SetTickLength(0.01);
2664 h_spin_mtot_radius->GetXaxis()->SetTitleFont(42);
2665 h_spin_mtot_radius->GetXaxis()->SetLabelFont(42);
2666 h_spin_mtot_radius->GetYaxis()->SetTitleFont(42);
2667 h_spin_mtot_radius->GetYaxis()->SetLabelFont(42);
2668 h_spin_mtot_radius->GetZaxis()->SetLabelFont(42);
2669 h_spin_mtot_radius->GetZaxis()->SetLabelSize(0.03);
2670 h_spin_mtot_radius->SetTitle(
"");
2671 h_spin_mtot_radius->SetMarkerSize(
2674 for (
int i = 1; i <= NBINS_MTOT + 1; i++) {
2675 for (
int j = 1;
j <= NBINS_SPIN + 1;
j++) {
2676 h_spin_mtot_radius->SetBinContent(
2677 j, i, spin_mtot_radius[i - 1][
j - 1]);
2678 h_spin_mtot_radius->SetBinError(
2679 j, i, error_spin_mtot_radius[i - 1][
j - 1]);
2680 cout <<
j <<
" " << i <<
" "
2681 << h_spin_mtot_radius->GetBinContent(
j, i) << endl;
2685 h_spin_mtot_radius->SetContour(
NCont);
2686 h_spin_mtot_radius->SetEntries(1);
2691 h_spin_mtot_radius->Draw(
2694 h_spin_mtot_radius->GetZaxis()->SetRangeUser(0,
2695 MAX_EFFECTIVE_RADIUS / 2.);
2697 TExec *ex2 =
new TExec(
"ex2",
"gStyle->SetPaintTextFormat(\".0f\");");
2718 pow(3. * Vrho[i] / (4 *
TMath::Pi() * Tscale), 1. / 3);
2719 eRrho[
i] = pow(3. / (4 *
TMath::Pi() * Tscale), 1. / 3) * 1. /
2720 3 * pow(Vrho[i], -2. / 3) * eVrho[
i];
2723 cout <<
"Rho bin: " << Trho[
i] <<
" Radius: " << Rrho[
i]
2724 <<
" +/- " << eRrho[
i] << endl;
2730 c1, networkname,
netdir, write_ascii);
2750 delete[] volume_first_shell[
i];
2752 delete[] error_volume[
i];
2753 delete[] error_volume_first_shell[
i];
2754 delete[] error_radius[
i];
2763 for (
int i = 0; i < NBINS_MTOT + 1; i++) {
2764 delete[] spin_mtot_volume[
i];
2765 delete[] spin_mtot_radius[
i];
2766 delete[] error_spin_mtot_volume[
i];
2767 delete[] error_spin_mtot_radius[
i];
static double g(double e)
delete[] spin_mtot_volume
printf("total live time: non-zero lags = %10.1f \n", liveTot)
std::vector< double > veV
fprintf(stdout,"start=%f duration=%f rate=%f\n", x.start(), x.size()/x.rate(), x.rate())
Complex Exp(double phase)
TH2F * efficiency_first_shell
delete[] volume_first_shell
TCut netcc("netcc","netcc[0]>0.7")
std::vector< double > vdv
dV
Temporay patch for redshifted mass distributions, i.e. point-like in source frame and spread over mul...
std::vector< double > veR
std::vector< double > vsifar
delete[] factor_events_spin_mtot_inj
#define CWB_PLUGIN_EXPORT(VAR)
#define IMPORT(TYPE, VAR)
sprintf(fname3,"%s/injected_signals.txt", netdir)
cout<< endl;if(write_ascii){fev.close();for(int l=0;l< nfactor;l++){fev_single[l].close();}}cout<< "Recovered entries: "<< cnt<< endl;cout<< "Recovered entries: "<< cnt2<< endl;cout<< "Recovered entries cut by frequency: "<< cntfreq<< endl;cout<< "Recovered entries vetoed: "<< countv<< endl;cout<< "dV : "<< dV<< " dV1 : "<< dV1<< endl;internal_volume=4./3.*TMath::Pi()*pow(minDistance[0]/1000., 3.);if(INCLUDE_INTERNAL_VOLUME){for(int i=0;i< vdv.size();i++){if(vdv[i] > 0.0){vdv[i]+=internal_volume;}}for(int i=0;i< RHO_NBINS;i++){if(Vrho[i] > 0.0){Vrho[i]+=internal_volume;}}for(int i=0;i< NBINS_MTOT+1;i++){for(int j=0;j< NBINS_SPIN+1;j++){if(spin_mtot_volume[i][j] > 0.0){spin_mtot_volume[i][j]+=internal_volume;}}}for(int i=0;i< NBINS_mass;i++){for(int j=0;j< NBINS_mass2;j++){if(volume[i][j] > 0.0){volume[i][j]+=internal_volume;}}}}Int_t *mindex=new Int_t[vdv.size()];TMath::Sort((int) vdv.size(),&vifar[0], mindex, true);std::vector< double > vV
delete[] error_spin_mtot_radius
strcpy(cfg->tmp_dir,"tmp")
delete[] error_volume_first_shell
std::vector< double > iSNR[NIFO_MAX]
for(int i=0;i< nfactor;i++)
delete[] error_spin_mtot_volume
delete[] spin_mtot_radius
TString sel("slag[1]:rho[1]")
char veto_not_vetoed[1024]
std::vector< double > vefar
std::vector< double > vfar
detectorParams detParms[4]
std::vector< double > vifar