15 void DrawArrow(TCanvas *
c,
double x, TString arrow_opt,
int line_color = kBlack,
int line_style = 1,
int line_width = 3);
18 std::string input_file_name =
"/nova/ana/users/ddoyle/NuebarFiducialOptimization/fiducial_optimization_nunubar_all.root",
19 std::string plot_dump =
"/nova/ana/users/ddoyle/NuebarFiducialOptimization/plots_nunubar/binbybin/")
23 double arrow_down = 0;
48 results_file_name.insert(results_file_name.find(
".root"),
"_results");
52 TFile * input = TFile::Open(input_file_name.c_str(),
"read");
56 TFile *
results =
new TFile(results_file_name.c_str(),
"recreate");
60 results->mkdir(rootdir.c_str()),
64 TH1D * frac_uncert_xsec = (TH1D*) results->Get((rootdir +
"/frac_uncert_xsec" ).c_str());
65 TH1D * frac_uncert_sel = (TH1D*) results->Get((rootdir +
"/frac_uncert_sel" ).c_str());
66 TH1D * frac_uncert_bkgd_stat = (TH1D*) results->Get((rootdir +
"/frac_uncert_bkgd_stat").c_str());
67 TH1D * frac_uncert_bkgd_syst = (TH1D*) results->Get((rootdir +
"/frac_uncert_bkgd_syst").c_str());
68 TH1D * frac_uncert_eff = (TH1D*) results->Get((rootdir +
"/frac_uncert_eff" ).c_str());
72 TCanvas *
c =
new TCanvas();
73 c->SetLeftMargin(0.15);
75 frac_uncert_xsec->GetXaxis()->CenterTitle();
76 frac_uncert_xsec->GetYaxis()->CenterTitle();
77 frac_uncert_xsec->GetYaxis()->SetRangeUser(0, 1.2);
78 frac_uncert_xsec->GetYaxis()->SetTitleOffset(1.1);
79 frac_uncert_xsec->SetLineColor(
kRed);
81 frac_uncert_sel->GetXaxis()->CenterTitle();
82 frac_uncert_sel->GetYaxis()->CenterTitle();
83 frac_uncert_sel->GetYaxis()->SetRangeUser(0, 1.2);
84 frac_uncert_sel->GetYaxis()->SetTitleOffset(1.1);
85 frac_uncert_sel->SetLineColor(
kRed);
87 frac_uncert_bkgd_stat->GetXaxis()->CenterTitle();
88 frac_uncert_bkgd_stat->GetYaxis()->CenterTitle();
89 frac_uncert_bkgd_stat->GetYaxis()->SetRangeUser(0, 1.2);
90 frac_uncert_bkgd_stat->GetYaxis()->SetTitleOffset(1.1);
91 frac_uncert_bkgd_stat->SetLineColor(
kRed);
93 frac_uncert_bkgd_syst->GetXaxis()->CenterTitle();
94 frac_uncert_bkgd_syst->GetYaxis()->CenterTitle();
95 frac_uncert_bkgd_syst->GetYaxis()->SetRangeUser(0, 1.2);
96 frac_uncert_bkgd_syst->GetYaxis()->SetTitleOffset(1.1);
97 frac_uncert_bkgd_syst->SetLineColor(
kRed);
99 frac_uncert_eff->GetXaxis()->CenterTitle();
100 frac_uncert_eff->GetYaxis()->CenterTitle();
101 frac_uncert_eff->GetYaxis()->SetRangeUser(0, 1.2);
102 frac_uncert_eff->GetYaxis()->SetTitleOffset(1.1);
103 frac_uncert_eff->SetLineColor(
kRed);
105 frac_uncert_xsec->Draw(
"hist");
109 c->Print((plot_dump +
"/" + rootdir +
"_frac_uncert_xsec.pdf").c_str());
111 frac_uncert_sel->Draw(
"hist");
115 c->Print((plot_dump +
"/" + rootdir +
"_frac_uncert_sel.pdf").c_str());
117 frac_uncert_bkgd_stat->Draw(
"hist");
121 c->Print((plot_dump +
"/" + rootdir +
"_frac_uncert_bkgd_stat.pdf").c_str());
123 frac_uncert_bkgd_syst->Draw(
"hist");
127 c->Print((plot_dump +
"/" + rootdir +
"_frac_uncert_bkgd_syst.pdf").c_str());
129 frac_uncert_eff->Draw(
"hist");
133 c->Print((plot_dump +
"/" + rootdir +
"_frac_uncert_eff.pdf").c_str());
137 TFile * fdebug = TFile::Open((plot_dump +
"/debug.root").c_str());
138 auto syst_defs = optimize->GetSystDefs();
139 auto mvsyst_defs = optimize->GetMVSystDefs();
140 syst_defs.insert(syst_defs.end(), mvsyst_defs.begin(), mvsyst_defs.end());
141 std::vector<TH1*> vabs_uncert_eff_syst;
142 std::vector<TH1*> vabs_uncert_bkgd_syst;
143 std::vector<TH1*> vfrac_uncert_eff_syst;
144 std::vector<TH1*> vfrac_uncert_bkgd_syst;
145 std::vector<std::string> syst_labels;
146 for(
auto syst : syst_defs) {
147 syst_labels.push_back(syst->GetName());
148 vabs_uncert_eff_syst .push_back((TH1*) fdebug->Get((syst->GetName() +
"_abs_uncert_eff_syst" ).c_str()));
149 vabs_uncert_bkgd_syst .push_back((TH1*) fdebug->Get((syst->GetName() +
"_abs_uncert_bkgd_syst" ).c_str()));
150 vfrac_uncert_eff_syst .push_back((TH1*) fdebug->Get((syst->GetName() +
"_frac_uncert_eff_syst" ).c_str()));
151 vfrac_uncert_bkgd_syst.push_back((TH1*) fdebug->Get((syst->GetName() +
"_frac_uncert_bkgd_syst").c_str()));
152 vfrac_uncert_eff_syst .back()->GetYaxis()->SetRangeUser(0, 1.2);
153 vfrac_uncert_bkgd_syst.back()->GetYaxis()->SetRangeUser(0, 1.2);
157 CutOptimization::PlotDebug(vabs_uncert_eff_syst , syst_labels,
"hist",
"Abs. Syst. Uncert Efficiency", plot_dump +
"/debug_syst_abs_uncert_eff.pdf");
158 CutOptimization::PlotDebug(vabs_uncert_bkgd_syst , syst_labels,
"hist",
"Abs. Syst. Uncert Background", plot_dump +
"/debug_syst_abs_uncert_bkgd.pdf");
159 CutOptimization::PlotDebug(vfrac_uncert_eff_syst , syst_labels,
"hist",
"Frac. Syst. Uncert Efficiency", plot_dump +
"/debug_syst_frac_uncert_eff.pdf");
160 CutOptimization::PlotDebug(vfrac_uncert_bkgd_syst, syst_labels,
"hist",
"Frac. Syst. Uncert Background", plot_dump +
"/debug_syst_frac_uncert_bkgd.pdf");
168 bool left = arrow_opt.Contains(
"<");
169 double offset = 0.07 * (c->GetX2() - c->GetX1());
170 if(left) offset *= -1;
172 double y = c->GetY1() + 0.7 * (c->GetY2() - c->GetY1());
174 TLine *
l1 =
new TLine(x, 0, x, y);
175 TArrow * arrow =
new TArrow(x, y, x+offset, y, 0.04, arrow_opt.Data());
176 if(left) arrow =
new TArrow(x+offset, y, x, y, 0.04, arrow_opt.Data());
178 arrow->SetLineColor(line_color);
179 l1 ->SetLineColor(line_color);
181 arrow->SetLineStyle(line_style);
182 l1 ->SetLineStyle(line_style);
184 arrow->SetLineWidth(line_width);
185 l1 ->SetLineWidth(line_width);
void DrawArrow(TCanvas *c, double x, TString arrow_opt, int line_color=kBlack, int line_style=1, int line_width=3)
Cuts and Vars for the 2020 FD DiF Study.
const TVector3 vNueCCIncFiducialMin(-130,-140, 150)
static std::unique_ptr< CutOptimization > LoadFrom(TDirectory *dir, const std::string &name)
static void PlotDebug(TH1 *hist, std::string draw_option, std::string title, std::string name)
const TVector3 vNueCCIncFiducialMax(150, 140, 800)
const double kAna2019RHCPOT
void fiducial_optimization_plots(int axis, std::string input_file_name="/nova/ana/users/ddoyle/NuebarFiducialOptimization/fiducial_optimization_nunubar_all.root", std::string plot_dump="/nova/ana/users/ddoyle/NuebarFiducialOptimization/plots_nunubar/binbybin/")
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)