13 #include "TLegendEntry.h" 19 #include "NDAna/muonid/NDXSecMuonPID.h" 26 const int ret = gSystem->Load(
"libNDAnamuonid");
33 std::string input_file_name=
"/nova/ana/users/ddoyle/NuebarResolutionStudy/signal_count.root",
34 std::string plot_dump=
"/nova/ana/users/ddoyle/NuebarResolutionStudy/signal_count_plots/")
64 TFile
output(
"signal_count.root",
"recreate");
65 nue.
SaveTo(output.mkdir(
"nue"));
66 nuebar.
SaveTo(output.mkdir(
"nuebar"));
70 TFile * input = TFile::Open(input_file_name.c_str());
71 TCanvas *
c =
new TCanvas();
89 gStyle->SetPalette(kDeepSea);
90 gStyle->SetPaintTextFormat(
".2f");
92 nue->SetTitle(
"Signal #nu_{e}");
93 nue->SetMarkerColor(kWhite);
94 nue->GetXaxis()->SetRangeUser(0.5, 1);
95 nue->GetYaxis()->SetRangeUser(0, 6);
96 nue->Draw(
"colz text");
97 c->Print((plot_dump +
"/nue.pdf").c_str());
99 nuebar->SetTitle(
"Signal #bar{#nu}_{e}");
100 nuebar->SetMarkerColor(kWhite);
101 nuebar->GetXaxis()->SetRangeUser(0.5, 1);
102 nuebar->GetYaxis()->SetRangeUser(0, 6);
103 nuebar->Draw(
"colz text");
104 c->Print((plot_dump +
"/nuebar.pdf").c_str());
106 TH2 * nunubar = (TH2*) nue->Clone(
"nunubar");
107 nunubar->Add(nuebar);
108 nunubar->SetTitle(
"Signal #bar{#nu}_{e} + #nu_{e}");
109 nunubar->SetMarkerColor(kWhite);
110 nunubar->GetXaxis()->SetRangeUser(0.5, 1);
111 nunubar->GetYaxis()->SetRangeUser(0, 6);
112 nunubar->Draw(
"colz text");
113 c->Print((plot_dump +
"/nunubar.pdf").c_str());
117 auto kNuebarColor =
kGreen;
118 auto kNueColor = kMagenta;
120 gStyle->SetPaintTextFormat(
"4.2g");
121 TH2 * nue_frac = (TH2*) nue ->
Clone(
"nue_frac" );
122 TH2 * nuebar_frac = (TH2*) nuebar->Clone(
"nuebar_frac");
123 nue_frac->SetMarkerColor(kNueColor);
124 nuebar_frac->SetMarkerColor(kNuebarColor);
126 TLegend *
leg =
new TLegend(0.2, 0.8, 0.3, 0.7,
"",
"NDC");
128 auto entry = leg->AddEntry((TObject*)0,
"#bar{#nu}_{e} Fraction",
"");
129 entry->SetTextColor(kNuebarColor);
130 entry = leg->AddEntry((TObject*)0,
"#nu_{e} Fraction" ,
"");
131 entry->SetTextColor(kNueColor);
133 nue_frac->Divide(nunubar);
134 nuebar_frac->Divide(nunubar);
136 nunubar ->Draw(
"colz");
138 nuebar_frac->SetBarOffset(0.2);
139 nue_frac ->SetBarOffset(-0.2);
140 nue_frac ->Draw(
"text same");
141 nuebar_frac->Draw(
"text same");
143 c->Print((plot_dump +
"/nunubar_fracs.pdf").c_str());
148 TH2 * nuebar_uncert = (TH2*) nuebar->Clone(
"nuebar_uncert");
149 TH2 * nunubar_uncert = (TH2*) nunubar->Clone(
"nunubar_uncert");
150 auto NX = nuebar_uncert->GetNbinsX();
151 auto NY = nuebar_uncert->GetNbinsY();
152 for(
auto x = 1;
x <= NX;
x++) {
153 for(
auto y = 1;
y <= NY;
y++) {
154 auto nnuebar = nuebar->GetBinContent(
x,
y);
155 auto nnunubar = nunubar->GetBinContent(
x,
y);
158 nuebar_uncert->SetBinContent(
x,
y, 1/
std::sqrt(nnuebar));
160 nuebar_uncert->SetBinContent(
x,
y, 0);
163 nunubar_uncert->SetBinContent(
x,
y, 1/
std::sqrt(nnunubar));
165 nunubar_uncert->SetBinContent(
x,
y, 0);
169 TH2 * uncert_diff = (TH2*) nunubar_uncert->Clone(
"uncert_diff");
170 uncert_diff->Add(nuebar_uncert, -1);
172 nunubar_uncert->SetTitle(
"Signal #nu_{e} + #bar{#nu}_{e} Stat. Uncert.");
173 nuebar_uncert->SetTitle(
"Signal #bar{#nu}_{e} Stat. Uncert.");
174 uncert_diff->SetTitle(
"#Delta Stat. Uncert. (#bar{#nu} + #nu) - #bar{#nu}");
176 nunubar_uncert->Draw(
"colz text");
177 c->Print((plot_dump +
"/nunubar_uncert.pdf").c_str());
179 nuebar_uncert->Draw(
"colz text");
180 c->Print((plot_dump +
"/nuebar_uncert.pdf").c_str());
182 uncert_diff->Draw(
"colz text");
183 c->Print((plot_dump +
"/uncert_diff.pdf").c_str());
TH2 * ToTH2(double exposure, EExposureType expotype=kPOT, EBinType bintype=kBinContent) const
Spectrum must be 2D to obtain TH2.
Cuts and Vars for the 2020 FD DiF Study.
TH1D * ToTH1(double exposure, Color_t col=kBlack, Style_t style=kSolid, EExposureType expotype=kPOT, EBinType bintype=kBinContent) const
Histogram made from this Spectrum, scaled to some exposure.
const ana::HistAxis kTrueElectronEStandardAxis
void signal_count(bool make_plots=false, std::string input_file_name="/nova/ana/users/ddoyle/NuebarResolutionStudy/signal_count.root", std::string plot_dump="/nova/ana/users/ddoyle/NuebarResolutionStudy/signal_count_plots/")
void SetSpillCut(const SpillCut &cut)
const ana::HistAxis kTrueElectronEVsCosStandardAxis
std::unique_ptr< T > LoadFrom(TDirectory *dir, const std::string &label)
Representation of a spectrum in any variable, with associated POT.
const ana::HistAxis kTrueElectronCosThetaStandardAxis
const std::string PROD5_MC_RHC_NOMINAL
virtual void Go() override
Load all the registered spectra.
void SaveTo(TDirectory *dir, const std::string &name) const
std::vector< float > Spectrum
const ana::Cut kPreselectionLoose
const double kAna2020RHCPOT
const SystShifts kNoShift
const std::vector< Binning > & GetBinnings() const
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const ana::Cut kMuonIDProd4Cut
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
void make_plots(TFile *f, TH2 *hVsRun, TGraph *g, int run, std::string suffix, double xpos, TH2 *&cut)
const std::vector< std::string > & GetLabels() const