47 std::vector<Style_t>
styleline = {kSolid, kSolid, kSolid, kSolid, kSolid, kSolid, kSolid, kSolid, kSolid};
51 std::map< std::string, std::vector<const ISyst*> >
GetSystMap(){
52 std::map< std::string, std::vector<const ISyst*> > mapSystVecs;
54 std::vector<const ISyst*> muESysts;
57 std::vector<const ISyst*> neutronSysts;
60 mapSystVecs[
"MuESysts"] = muESysts;
61 mapSystVecs[
"NeutronSysts"] = neutronSysts;
91 virtual double LowLimit()
const {
return 0.514;}
131 const double ssth23 = 0.585;
132 const double dmsq32 = 2.501e-3;
135 float minx = 0.35, maxx = 0.65;
136 float minx_zoom = 0.575, maxx_zoom = 0.595;
137 float miny = 2.30,
maxy = 2.70;
138 float miny_zoom = 2.44, maxy_zoom = 2.52;
143 std::vector< const ISyst* >
systs = {};
145 for(
auto thissyst : systmap){
146 for(
unsigned int sysVecIt = 0; sysVecIt < thissyst.second.size(); ++sysVecIt){
147 systs.push_back(thissyst.second[sysVecIt]);
156 std::vector< PredictionSystJoint2018* >
predictions;
157 for(
int quant = 1; quant < 5; ++quant){
158 predictions.push_back(
new PredictionSystJoint2018(
kNuMu,
calc,
"fhc", quant, systs,
"/nova/ana/nu_mu_ana/Ana2018/Predictions/pred_numuconcat_fhc__numu2018.root"));
177 for(
auto const& thisSystList: systmap){
179 TCanvas* canvas_zoom =
new TCanvas(
"canvas_zoom", (NameZoom).c_str());
180 TString out_zoom = NameZoom.c_str();
183 TCanvas*
canvas =
new TCanvas(
"canvas", (Name).c_str());
184 TString
out = Name.c_str();
187 TH2F *axes_zoom =
new TH2F(
"setaxes_zoom",
"", 30, minx_zoom, maxx_zoom, 50, miny_zoom, maxy_zoom);
188 axes_zoom->GetXaxis()->SetTitle(
"sin^{2}#theta_{23}");
189 axes_zoom->GetYaxis()->SetTitle(
"#Deltam^{2}_{32} (10^{-3} eV^{2})");
190 axes_zoom->GetXaxis()->SetTitleOffset(0.95);
191 axes_zoom->GetYaxis()->SetTitleOffset(0.85);
192 axes_zoom->GetXaxis()->SetTitleSize(0.055);
193 axes_zoom->GetYaxis()->SetTitleSize(0.055);
194 axes_zoom->GetXaxis()->SetLabelSize(0.04);
195 axes_zoom->GetYaxis()->SetLabelSize(0.04);
196 axes_zoom->GetXaxis()->CenterTitle();
197 axes_zoom->GetYaxis()->CenterTitle();
198 axes_zoom->SetTitle(
"");
199 axes_zoom->GetYaxis()->SetDecimals();
201 TH2F *
axes =
new TH2F(
"setaxes",
"" ,38 ,minx, maxx, 52, miny,
maxy);
202 axes->GetXaxis()->SetTitle(
"sin^{2}#theta_{23}");
203 axes->GetYaxis()->SetTitle(
"#Deltam^{2}_{32} (10^{-3} eV^{2})");
204 axes->GetXaxis()->SetTitleOffset(0.95);
205 axes->GetYaxis()->SetTitleOffset(0.85);
206 axes->GetXaxis()->SetTitleSize(0.055);
207 axes->GetYaxis()->SetTitleSize(0.055);
208 axes->GetXaxis()->SetLabelSize(0.04);
209 axes->GetYaxis()->SetLabelSize(0.04);
210 axes->GetXaxis()->CenterTitle();
211 axes->GetYaxis()->CenterTitle();
213 axes->GetYaxis()->SetDecimals();
219 gPad->SetFillStyle(0);
220 gPad->SetTopMargin(0.08);
221 gPad->SetRightMargin(0.08);
222 gPad->SetBottomMargin(0.12);
223 gPad->SetLeftMargin(0.12);
224 gStyle->SetTitleOffset(0.95,
"x");
225 gStyle->SetTitleOffset(0.85,
"y");
231 gPad->SetFillStyle(0);
232 gPad->SetTopMargin(0.08);
233 gPad->SetRightMargin(0.08);
234 gPad->SetBottomMargin(0.12);
235 gPad->SetLeftMargin(0.12);
236 gStyle->SetTitleOffset(0.95,
"x");
237 gStyle->SetTitleOffset(0.85,
"y");
243 TLegend *
leg =
new TLegend(0.125, 0.45, 0.60, 0.85);
244 TLegendEntry *
entry = leg->AddEntry(
"NULL",
"NOvA NH #nu_{#mu}+#bar{#nu}_{#mu} Systematic",
"h");
247 std::vector<const ISyst*> systList = thisSystList.second;
255 for(
const ISyst*
s: systList){
257 TGraph* gUO =
new TGraph;
258 TGraph* gLO =
new TGraph;
265 std::vector<Spectrum> s_fakedata;
266 std::vector <const IExperiment*> experiments;
267 for(
int quant = 0; quant < 4; quant++){
268 s_fakedata.push_back( predictions[quant]->PredictSyst(
calc, systListShift).
FakeData(pot) );
280 Fitter fitter(&exptSyst, fitvarsUO);
281 fitter.Fit(
calc, Fitter::kQuiet);
282 gUO->SetPoint(gUO->GetN(), kFitSinSqTheta23UO.
GetValue(
calc), kFitDmSq32Scaled.GetValue(
calc));
286 Fitter fitterLO(&exptSyst, fitvarsLO);
287 fitterLO.Fit(
calc, Fitter::kQuiet);
288 gLO->SetPoint(gLO->GetN(), kFitSinSqTheta23LO.
GetValue(
calc), kFitDmSq32Scaled.GetValue(
calc));
294 gUO->SetLineColor(
color[graphId]);
296 gLO->SetLineColor(
color[graphId]);
300 gUO->SetTitle((
s->LatexName()).c_str());
301 gUO->SetFillColor(10);
302 gUO->SetMarkerStyle(0);
303 gUO->SetLineWidth(3);
304 gLO->SetTitle((
s->LatexName()).c_str());
305 gLO->SetFillColor(10);
306 gLO->SetMarkerStyle(0);
307 gLO->SetLineWidth(3);
309 leg->
AddEntry(gUO, (
s->LatexName()).c_str(),
"l");
328 canvas->SaveAs((Name+
".png").c_str());
333 canvas_zoom->SaveAs((NameZoom+
".png").c_str());
334 canvas_zoom->Close();
virtual void SetValue(osc::IOscCalcAdjustable *osc, double val) const
bin1_2sigma SetFillColor(3)
Cuts and Vars for the 2020 FD DiF Study.
void ResetOscCalcToDefault(osc::IOscCalcAdjustable *calc)
Reset calculator to default assumptions for all parameters.
Loads shifted spectra from files.
Simple record of shifts applied to systematic parameters.
virtual std::string LatexName() const
virtual std::string ShortName() const
virtual T GetTh23() const
std::vector< Color_t > color
const FitSinSqTheta23LO kFitSinSqTheta23LO
TCanvas * canvas(const char *nm, const char *ti, const char *a)
const NeutronVisEScaleSyst2018 kNeutronVisEScalePrimariesSyst2018(false)
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
T sqr(T x)
More efficient square function than pow(x,2)
Encapsulate code to systematically shift a caf::SRProxy.
ntuple SetFillStyle(1001)
virtual void SetDmsq32(const T &dmsq32)=0
virtual std::string LatexName() const
const MuEScaleSyst2017 kMuEScaleSyst2017(0.0074, 0.0012)
std::vector< Style_t > styleline
const RelMuEScaleSyst2017 kRelMuEScaleSyst2017(0.0045, 10.5)
std::map< std::string, std::vector< const ISyst * > > GetSystMap()
virtual double LowLimit() const
const FitSinSqTheta23UO kFitSinSqTheta23UO
leg AddEntry(GRdata,"data","p")
const ReactorExperiment * WorldReactorConstraint2017()
Reactor constraint from PDG 2017.
const ConstrainedFitVarWithPrior fitDmSq32Scaled_UniformPrior & kFitDmSq32Scaled
virtual double GetValue(const osc::IOscCalcAdjustable *osc) const
Oscillation probability calculators.
void ResetCalc(osc::IOscCalcAdjustable *calc, double ssth23=-5, double dmsq32=-5)
virtual double HighLimit() const
virtual double LowLimit() const
Combine multiple component experiments.
const SolarConstraints kSolarConstraintsPDG2017(7.53e-5, 0.18e-5, 0.851, 0.020)
virtual std::string ShortName() const
virtual void SetTh23(const T &th23)=0
const double kAna2018FHCPOT
virtual double GetValue(const osc::IOscCalcAdjustable *osc) const
virtual void SetValue(osc::IOscCalcAdjustable *osc, double val) const
void SetShift(const ISyst *syst, double shift, bool force=false)
virtual double HighLimit() const
const double kAna2018FHCLivetime
Compare a single data spectrum to the MC + cosmics expectation.