46 for (
const auto &
v:vars){
47 std::cout <<
v->LatexName() <<
" " <<
v->GetValue(calc) <<
", ";
67 const bool stats =
false,
68 const bool nueOnly =
false,
69 const bool numuOnly =
false,
74 std::vector <SuperPred> allpreds;
77 allpreds.push_back({
true,
"fhc", potFHC,
79 true,
false,
true,
false)});
85 allpreds.push_back({
true,
"rhc", potRHC,
87 true,
false,
true,
false)});
97 for (
int i = 0;
i < nnumu; ++
i) {
98 allpreds.push_back({
false,
"fhc", potFHC, numu_preds[
i]});
106 for (
int i = 0;
i < nnumu; ++
i) {
107 allpreds.push_back({
false,
"rhc", potRHC, numu_preds[
i]});
124 std::vector <potCombo>
ret;
125 if(potOption ==
"default_short"){
135 if(potOption ==
"nominal_outdated"){
144 {2024, 26.48,26.48}};
146 if(potOption ==
"beampower_updated"){
155 {2024,35.92,35.92} };
158 std::cout <<
"\n POT combination is: " << potOption <<
"\n";
159 for(
auto const & combo:ret){
161 << combo.potFHC<<
" e20 POT FHC, \t" 162 << combo.potRHC<<
" e20 POT RHC" 171 if(potOption==
"nominal_outdated")
172 ret =
"#splitline{DUMMY 2018 ana, stats only }{old nom POT combo } ";
173 if(potOption==
"beampower_updated")
174 ret =
"#splitline{2018 analysis techniques and}{projected beam exposure improvements} ";
180 TLatex * ltx =
new TLatex();
181 ltx->SetTextAlign(13);
182 ltx->SetTextSize(0.04);
183 ltx->DrawLatexNDC(0.12,0.97,label.Data());
190 bool pot_label =
true,
191 bool significance =
false,
193 TString yaxistitle =
"")
196 auto ret =
new TCanvas;
197 gPad->SetTopMargin(0.10);
200 int minX = combos.begin()->year;
201 int maxX = (combos.end()-1)->
year;
202 int nBins = (combos.size() + 1) * 2;
204 auto axes =
new TH2D (
"ax",
";Year;Fraction of #delta_{CP} values (%)",
205 nBins, minX - 0.5, maxX + 0.5, 100, 0,
maxY);
206 if(significance)
axes->GetYaxis()->SetTitle(
"Significance #left(#sigma=#sqrt{#Delta#chi^{2}}#right)");
207 if(yaxistitle !=
"")
axes->GetYaxis()->SetTitle(yaxistitle);
209 axes->GetXaxis()->CenterTitle();
210 axes->GetYaxis()->CenterTitle();
211 axes->GetYaxis()->SetTitleOffset(0.6);
216 TLatex* ltx2 =
new TLatex();
217 ltx2->SetTextSize(1.2*
axes->GetXaxis()->GetLabelSize());
223 TLine *
l1 =
new TLine();
225 if(significance) l1->DrawLine(minX-0.5,3,maxX+0.5,3.);
235 std::vector <double>sigmas;
238 sigmas.push_back(gr->Eval((
double)
i * 2./nsteps));
240 int numAbove = std::count_if(sigmas.begin(),sigmas.end(),
241 [level](
double s){
return s>=level;});
243 return (
double) 100* numAbove / sigmas.size();
264 std::vector < std::pair <TH1D*, double> >
cosmics = {},
265 std::vector <const IExperiment * >
constraints = {},
269 bool hascosmics =
cosmics.size()>0;
270 if(hascosmics &&
cosmics.size()!=allpreds.size()){
271 std::cerr <<
"\n Size of cosmics doesn't match predictions \n";
274 std::vector <const IExperiment * > expts;
277 std::cout <<
"Creating Fake experiment \n";
281 for(
int i = 0;
i < (
int) allpreds.size(); ++
i){
283 auto thisdata =
GetFakeData (allpreds[
i].prediction, calcFake, allpreds[
i].
pot,
285 if(allpreds[
i].pot > 0){
295 auto temp = thisdata->ToTH1(thisdata->POT());
297 << allpreds[
i].pot <<
" POT " 298 << allpreds[
i].flux <<
" " 299 << (allpreds[
i].isNue?
"nue ":
"numu ")
309 std::cout <<
"Returning Multiexperiment from " << expts.size()
310 <<
" SingleSample experiments and " 311 << constraints.size() <<
" external constraints" <<
std::endl;
313 expts.insert(expts.end(), constraints.begin(), constraints.end());
324 std::vector <TString> hierarchies,
325 std::vector <TString> thetas,
326 std::vector <TString> combo_names,
327 std::vector <Int_t >
colors,
329 std::map < TString, TString > ssth23_label = {},
330 std::map < TString, TString> combo_label={})
334 TLegend *
leg =
new TLegend (0.12, 0.6, 0.5, 0.89);
335 leg->SetFillStyle(0);
336 leg->SetMargin(1.3*leg->GetMargin());
337 if( combo_names.size()>1 ) leg->SetNColumns(2);
338 leg->SetTextSize(0.04);
341 if(meas ==
"hie") header +=
"Hierarchy at 95% CL";
342 if(meas ==
"cpv") header +=
"CPV at 95% CL";
344 leg->SetHeader(header);
347 for(
uint i = 0;
i < combo_names.size(); ++
i){
352 for (
auto const & hie: hierarchies){
353 for (
auto const &
theta:thetas){
355 TString
fname = (
"dCPfraction/hist_" + meas+
"_" + hie +
"_" +
356 theta +
"_" + (react ?
"react_" :
"") +
357 combo_names[i] +
".root") ;
359 auto file =
new TFile (fname,
"read");
361 auto gr_frac =
new TGraph();
363 for(
auto & combo:combos){
365 auto gr = (TGraph*)
file->Get(meas +
"_" + hie +
"_" +
theta +
"_" +
366 (react ?
"react_" :
"") +
370 if(!gr) {
std::cerr <<
"Problem w graph \n";
continue;}
372 gr_frac->SetPoint(gr_frac->GetN(), combo.year, thisfrac);
374 gr_frac->SetLineWidth(2);
375 gr_frac->SetLineStyle(i+1);
377 gr_frac->SetLineColor(colors[col]);
379 leg->AddEntry(gr_frac, hie +
" " + ssth23_label[
theta] +
" " +
380 combo_label[combo_names[i]],
"l");
390 std::vector <TString> hierarchies,
391 std::vector <TString> thetas,
392 std::vector <TString> combo_names,
393 std::vector <Int_t > colors,
395 std::map < TString, TString > ssth23_label = {},
396 std::map < TString, TString> combo_label={})
398 gPad->SetBottomMargin(0.12);
402 if(meas ==
"hie") head =
"Hierarchy resolution";
403 if(meas ==
"cpv") { head =
"CP violation"; maxx =3.5;}
404 auto leg2 =
new TLegend(0.6,0.6,0.9,0.9);
405 leg2->SetFillStyle(0);
406 leg2->SetHeader(head);
408 auto ax2 =
new TH2D(
"ax2",
409 ";Significance #left(#sigma=#sqrt{#Delta#chi^{2}}#right);Fraction of #delta_{CP} values (%)",
410 100,0,maxx,100,0,100);
412 ax2->GetXaxis()->CenterTitle();
413 ax2->GetYaxis()->CenterTitle();
414 ax2->GetYaxis()->SetTitleOffset(0.8);
417 for (
auto const & hie: hierarchies){
418 for (
int th = 0; th < 2; ++th){
420 TString
fname =
"dCPfraction/hist_" + meas +
"_" + hie +
"_"+thetas[th] +
"_" +
421 (react?
"react_":
"") + combo_names[0] +
".root";
422 auto file =
new TFile (fname,
"read");
425 for(
int year:{2024}){
426 auto gr = (TGraph*) file->Get(meas +
"_"+ hie +
"_" + thetas[th] +
"_" +
427 (react?
"react_":
"") + combo_names[0] +
429 if(!gr) {
std::cerr <<
"Problem w graph \n";
continue;}
431 auto gr_frac =
new TGraph();
433 for(
double lim = 0; lim < 6; lim += 0.05 ){
435 gr_frac->SetPoint(gr_frac->GetN(), lim,thisfrac);
437 gr_frac->SetLineWidth(2);
438 gr_frac->SetLineStyle(th+1);
440 gr_frac->SetLineColor(colors[col]);
441 leg2->AddEntry (gr_frac, hie +
" " + ssth23_label[thetas[th]],
"l");
455 leg2->SetTextSize(ax2->GetXaxis()->GetLabelSize());
462 std::vector <TString> hierarchies,
463 std::vector <double> deltas,
464 std::vector <TString> thetas,
465 std::vector <TString> combo_names,
466 std::vector <Int_t > colors,
468 std::map < double, TString> delta_label = {}
472 if(meas ==
"hie") head =
"Hierarchy resolution";
473 if(meas ==
"cpv") head =
"CP violation";
474 if(meas ==
"oct") head =
"Octant determination";
475 if(meas ==
"mix") head =
"Max. mixing rejection";
477 auto leg3 =
new TLegend(0.1,0.6,0.5,0.89);
478 leg3->SetHeader(head);
479 leg3->SetTextSize(0.04);
481 for(
uint i = 0;
i < combo_names.size(); ++
i){
485 for (
auto const & hie: hierarchies){
486 for(
double delta:deltas){
488 auto gr_max =
new TGraph();
489 auto gr_min =
new TGraph();
491 for(
auto & combo:combos){
493 double maxchi = -999.;
double minchi = 999.;
495 for (
auto const &
theta:thetas){
496 TString
fname =
"dCPfraction/hist_" + meas +
"_" + hie +
"_" +
theta +
"_" +
497 (react ?
"react_":
"") + combo_names[i] +
".root";
499 TFile
file (fname,
"read");
502 auto gr = (TGraph*) file.Get(meas +
"_" + hie +
"_" +
theta +
"_" +
503 (react ?
"react_":
"") + combo_names[i] +
506 if(!gr) {
std::cerr <<
"Problem w graph \n";
continue;}
511 gr_max->SetPoint(gr_max->GetN(),combo.year,
sqrt(maxchi));
512 gr_min->SetPoint(gr_min->GetN(),combo.year,
sqrt(minchi));
514 auto tempN = gr_min->GetN();
515 for(
int i = 0; i < tempN; ++
i ){
516 gr_max->SetPoint(gr_max->GetN(),
517 gr_min->GetX()[tempN - i - 1],
518 gr_min->GetY()[tempN - i - 1]);
522 gr_max->SetFillColorAlpha(colors[col],.33);
524 gr_max->SetLineColor(gr_max->GetFillColor());
525 if(delta_label.size()==0) {
528 leg3->AddEntry(gr_max, hie +
" #delta_{CP}="+delta_label[
delta],
"f");
533 leg3->SetFillStyle(0);
541 std::vector <TString> hierarchies,
542 std::vector <TString> thetas,
543 std::vector <TString> combo_names,
544 std::vector <Int_t > colors,
546 std::map < TString, TString > ssth23_label = {})
549 if(meas ==
"hie") head =
"Hierarchy resolution";
550 if(meas ==
"cpv") head =
"CP violation";
551 if(meas ==
"oct") head =
"Octant determination";
552 if(meas ==
"mix") head =
"Max. mixing rejection";
554 auto leg3 =
new TLegend(0.1,0.6,0.5,0.88);
555 leg3->SetHeader(head);
556 leg3->SetTextSize(0.04);
558 for(
uint i = 0;
i < combo_names.size(); ++
i){
562 for (
auto const & hie: hierarchies){
563 for (
auto const &
theta:thetas){
565 TString
fname =
"dCPfraction/hist_" + meas +
"_" + hie +
"_" +
theta +
"_" +
566 (react ?
"react_":
"") + combo_names[i] +
".root";
568 TFile
file (fname,
"read");
571 auto gr_max =
new TGraph();
572 auto gr_min =
new TGraph();
574 for(
auto & combo:combos){
576 double maxchi = -999.;
double minchi = 999.;
578 auto gr = (TGraph*) file.Get(meas +
"_" + hie +
"_" +
theta +
"_" +
579 (react ?
"react_":
"") + combo_names[i] +
582 if(!gr) {
std::cerr <<
"Problem w graph \n";
continue;}
584 minchi = TMath::MinElement(gr->GetN(),gr->GetY());
585 maxchi = TMath::MaxElement(gr->GetN(),gr->GetY());
587 gr_max->SetPoint(gr_max->GetN(),combo.year,
sqrt(maxchi));
588 gr_min->SetPoint(gr_min->GetN(),combo.year,
sqrt(minchi));
590 auto tempN = gr_min->GetN();
591 for(
int i = 0; i < tempN; ++
i ){
592 gr_max->SetPoint(gr_max->GetN(),
593 gr_min->GetX()[tempN - i - 1],
594 gr_min->GetY()[tempN - i - 1]);
598 gr_max->SetFillColorAlpha(colors[col],.33);
600 gr_max->SetLineColor(gr_max->GetFillColor());
601 if(ssth23_label.size()==0) {
602 leg3->AddEntry(gr_max, hie +
" " +
theta,
"f");}
604 leg3->AddEntry(gr_max, hie +
" "+ssth23_label[
theta],
"f");
609 leg3->SetFillStyle(0);
618 const TString pot_combo =
"default_short")
621 TString
filename =
"dCPfraction/hist_"+
options +
"_" + pot_combo +
".root";
628 bool isNH =
options.Contains(
"NH");
629 bool isIH =
options.Contains(
"IH");
630 bool isUO =
options.Contains(
"UO");
631 bool isLO =
options.Contains(
"LO");
632 bool isMAX =
options.Contains(
"MAX");
634 assert(isNH || isIH || !createFile);
635 assert(isUO || isLO || isMAX || !createFile);
637 double ssth23 = (isUO ? 0.6 : 0.4);
638 if(isMAX) ssth23 = 0.5;
641 if(!isNH) dmsq32 = -2.55e-3;
645 bool run_hie =
options.Contains(
"hie");
646 bool run_cpv =
options.Contains(
"cpv");
647 bool run_oct =
options.Contains(
"oct");
648 bool run_mix =
options.Contains(
"mix");
650 assert(run_hie || run_cpv || run_oct || run_mix);
652 bool reactor =
options.Contains(
"react");
654 if( (run_mix || run_oct) && isMAX ) {
655 std::cerr <<
"No wrong octant or rejection of maximal mixing if MAX is true" 664 auto file =
new TFile(filename,
"recreate");
669 double dstep = 2./32.;
675 std::vector <const IFitVar *> fitvars_cpv = {
690 std::map <const IFitVar*, std::vector <double> > seeds_hie =
695 std::map <const IFitVar*, std::vector <double> > seeds_cpv =
699 std::map <const IFitVar*, std::vector <double> > seeds_oct =
703 std::map <const IFitVar*, std::vector <double> > seeds_mix =
710 std::vector <const IExperiment* > constraints = {};
712 for (
auto fv:{&fitvars_hie, &fitvars_cpv, &fitvars_oct, &fitvars_mix}){
718 std::cerr <<
"\nWARNING: Not using reactor constraint\n";
721 for (
auto const & combo:combos){
723 std::cout <<
"\n\n Start POT combination " 724 << combo.year <<
": \t" 725 << combo.potFHC<<
" e20 POT FHC, \t" 726 << combo.potRHC<<
" e20 POT RHC \n" 730 for(
auto &
pred:preds){
731 if(
pred.flux==
"fhc")
pred.pot = combo.potFHC * 1E20;
732 if(
pred.flux==
"rhc")
pred.pot = combo.potRHC * 1E20;
736 TString dirYear = (
options +
"_" + pot_combo +
"_" +
739 auto dir =
file->mkdir(dirYear);
740 dir->WriteObject(&combo,
"potCombo");
748 TGraph* gr =
new TGraph();
752 for(
double del = 0; del < 2; del += dstep){
758 std::vector < std::pair <TH1D*, double > >
cosmics = {};
761 bool verb = (del == 0);
763 cosmics, constraints, verb);
768 std::vector <const ISyst* > mySysts = {};
770 double minchi_true = 0;
771 double minchi_wrong = 1e20;
778 calc->SetDmsq32(-1. * calc_fake->GetDmsq32());
779 minchi_wrong = fit_hie.
Fit(
calc,systSeed, seeds_hie, {},
784 for(
int hie:{-1,1}) {
788 calc->SetDmsq32(hie * calc_fake->GetDmsq32());
790 minchi_wrong =
std::min(minchi_wrong,
791 fit_cpv.
Fit(
calc,systSeed, seeds_cpv, {},
800 for(
int hie:{-1,1}) {
803 calc->SetDmsq32(hie * calc_fake->GetDmsq32());
806 minchi_wrong =
std::min(minchi_wrong,
807 fit_oct.
Fit(
calc,systSeed, seeds_oct, {},
815 for(
int hie:{-1,1}) {
818 calc->SetDmsq32(hie * calc_fake->GetDmsq32());
820 minchi_wrong =
std::min(minchi_wrong,
821 fit_mix.
Fit(
calc,systSeed, seeds_mix, {},
831 for(
int hie:{-1,1}) {
834 calc->SetDmsq32(hie * calc_fake->GetDmsq32());
835 minchi_true = fit_best.
Fit(
calc,systSeed, seeds_hie)->EvalMetricVal();
836 std::cout <<
"\nFound true for " << (hie > 0 ?
"NH" :
"IH")
837 <<
" dCP/pi" << del <<
" minchi " << minchi_true
842 gr->SetPoint(gr->GetN(),del,minchi_wrong - minchi_true);
846 gr->Write(
"gr_dchisq");
854 std::vector <TString> thetas = {};
855 if(isUO || 1) thetas.push_back(
"UO");
856 if(isMAX || 1) thetas.push_back(
"MAX");
857 if(isLO || 1) thetas.push_back(
"LO");
859 std::map < TString, TString > ssth23_label = {{
"UO",
"sin^{2}#theta_{23}=0.6"},
860 {
"MAX",
"sin^{2}#theta_{23}=0.5"},
861 {
"LO",
"sin^{2}#theta_{23}=0.4"}
864 std::vector <TString> combo_names = {};
865 if(0) combo_names.push_back(
"nominal_outdated");
866 if(1) combo_names.push_back(
"beampower_updated");
868 std::map < TString, TString > combo_label = {{
"beampower_updated",
""}};
870 std::vector <Int_t > Colors = {
872 TColor::GetColor(
"#6c71c4"), TColor::GetColor(
"#268bd2"),
873 TColor::GetColor(
"#2aa198"), TColor::GetColor(
"#859900"),
874 TColor::GetColor(
"#b58900"), TColor::GetColor(
"#cb4b16"),
875 TColor::GetColor(
"#dc322f"), TColor::GetColor(
"#d33682")
877 std::vector <Int_t > Colors_alt = {
879 TColor::GetColor(
"#2aa198"),
880 TColor::GetColor(
"#6c71c4"),
881 TColor::GetColor(
"#b58900"),
882 TColor::GetColor(
"#d33682"),
883 TColor::GetColor(
"#268bd2"),
884 TColor::GetColor(
"#dc322f"),
885 TColor::GetColor(
"#cb4b16"),
886 TColor::GetColor(
"#859900"),
893 TString labelShort =
TString::Format(
"|#Deltam^{2}_{32}|=2.5#times10^{-3}eV^{2}, sin^{2}2#theta_{13}=0.082");
899 reactor, ssth23_label, combo_label);
900 gPad->Print(
"reach2018_hie_dCPfrac_year_trueNH.pdf");
905 reactor, ssth23_label, combo_label);
906 gPad->Print(
"reach2018_hie_dCPfrac_year_trueIH.pdf");
912 Colors_alt, reactor, ssth23_label, combo_label);
913 gPad->Print(
"reach2018_cpv_dCPfrac_year_trueNH.pdf");
917 Colors_alt, reactor, ssth23_label, combo_label);
918 gPad->Print(
"reach2018_cpv_dCPfrac_year_trueIH.pdf");
923 TString label2024 =
TString::Format(
"#Deltam^{2}_{32}=2.5#times10^{-3}eV^{2}, sin^{2}2#theta_{13}=0.082. #kern[1.5]{ } 36#times10^{20} POT(#nu)+ 36#times10^{20} POT(#bar{#nu})");
925 TLine *
l1 =
new TLine();
931 {Colors[1],Colors[6]},
932 reactor, ssth23_label, combo_label);
935 l1->DrawLine(3,0,3,100);
936 gPad->Print(
"reach2018_hie_frac_sigma.pdf");
941 {Colors[1],Colors[6]},
942 reactor, ssth23_label, combo_label);
945 l1->DrawLine(3,0,3,60);
946 gPad->Print(
"reach2018_cpv_frac_sigma.pdf");
951 std::vector <double> deltas = {1.5,1.,0.,0.5};
952 std::map <double, TString> delta_label = {{1.5,
"3#pi/2"},{0.5,
" #pi/2"},
953 {1.,
"#pi"},{0.,
"0"} };
955 TString toplabel =
TString::Format(
"sin^{2}#theta_{23} #in #left{0.4, 0.5, 0.6#right}, |#Deltam^{2}_{32}|=2.5#times10^{-3}eV^{2}, sin^{2}2#theta_{13}=0.082");
960 Colors_alt, reactor, delta_label);
961 gPad->Print(
"reach2018_hie_sigma_year_trueNH.pdf");
965 Colors_alt, reactor, delta_label);
966 gPad->Print(
"reach2018_hie_sigma_year_trueIH.pdf");
971 Colors_alt, reactor, delta_label);
973 gPad->Print(
"reach2018_cpv_sigma_year_trueNH.pdf");
977 Colors_alt, reactor, delta_label);
979 gPad->Print(
"reach2018_cpv_sigma_year_trueIH.pdf");
982 TString toplabel2 =
TString::Format(
"#delta_{CP} #in #left[0,2#pi#right), |#Deltam^{2}_{32}=2.5#times10^{-3}eV^{2}|, sin^{2}2#theta_{13}=0.082");
987 Colors_alt, reactor, ssth23_label);
989 gPad->Print(
"reach2018_oct_sigma_year.pdf");
994 Colors_alt, reactor, ssth23_label);
996 gPad->Print(
"reach2018_mix_sigma_year.pdf");
std::vector< potCombo > GetPOTCombination(const TString potOption)
T max(const caf::Proxy< T > &a, T b)
void PrintOscParameters(const osc::IOscCalcAdjustable *calc)
Cuts and Vars for the 2020 FD DiF Study.
const IPrediction * prediction
void reach_2018_dCPfractions(const bool createFile=false, const TString options="", const TString pot_combo="default_short")
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
const FitDmSq32 kFitDmSq32
Simple record of shifts applied to systematic parameters.
TLatex * PrintParamLabel(TString label)
const IConstrainedFitVar * kFitSinSqTheta23MaxMix
const FitSinSqTheta23UpperOctant kFitSinSqTheta23UpperOctant
General interface to oscillation calculators.
void PlotDeltaFractionVsYear(TString meas, std::vector< TString > hierarchies, std::vector< TString > thetas, std::vector< TString > combo_names, std::vector< Int_t > colors, bool react=true, std::map< TString, TString > ssth23_label={}, std::map< TString, TString > combo_label={})
TString GetPOTComboTitle(const TString potOption, bool stats=true)
int stats(TString inputFilePath, Int_t firstRun, Int_t lastRun, Float_t thresh, TString myDet)
virtual double LowLimit() const
virtual T GetTh23() const
static SystShifts Nominal()
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)
Eigen::Matrix< T, Eigen::Dynamic, 1 > head(const Eigen::Matrix< T, Eigen::Dynamic, 1 > &v, size_t n)
void PlotSignificanceVsYear_FixTh23(TString meas, std::vector< TString > hierarchies, std::vector< TString > thetas, std::vector< TString > combo_names, std::vector< Int_t > colors, bool react=true, std::map< TString, TString > ssth23_label={})
std::vector< SuperPred > GetAllPredictions(const double potFHC, const double potRHC, const bool stats=false, const bool nueOnly=false, const bool numuOnly=false, const std::string nueXP="combo", const std::string numuXP="prop")
virtual double GetValue(const osc::IOscCalcAdjustable *osc) const
virtual std::unique_ptr< IFitSummary > Fit(osc::IOscCalcAdjustable *seed, SystShifts &bestSysts=junkShifts, const SeedList &seedPts=SeedList(), const std::vector< SystShifts > &systSeedPts={}, Verbosity verb=kVerbose) const
Master fitting method. Depends on FitHelper and FitHelperSeeded.
const ReactorExperiment * WorldReactorConstraint2017()
Reactor constraint from PDG 2017.
void PlotDeltaFractionVsSignificance(TString meas, std::vector< TString > hierarchies, std::vector< TString > thetas, std::vector< TString > combo_names, std::vector< Int_t > colors, bool react=true, std::map< TString, TString > ssth23_label={}, std::map< TString, TString > combo_label={})
const ConstrainedFitVarWithPrior fitDmSq32Scaled_UniformPrior & kFitDmSq32Scaled
virtual std::string LatexName() const
Oscillation probability calculators.
MultiExperiment * MakeFakeExperiment(const std::vector< SuperPred > allpreds, osc::IOscCalcAdjustable *calcFake, std::vector< std::pair< TH1D *, double > > cosmics={}, std::vector< const IExperiment * > constraints={}, bool verbose=false)
virtual std::string ShortName() const
Combine multiple component experiments.
void SetProgress(double frac)
Update the progress fraction between zero and one.
const FitSinSqTheta23LowerOctant kFitSinSqTheta23LowerOctant
const ConstrainedFitVarWithPrior fitSsqTh23_UniformPriorSsqTh23 & kFitSinSqTheta23
virtual void SetTh23(const T &th23)=0
virtual double HighLimit() const
void PlotSignificanceVsYear_FixDelta(TString meas, std::vector< TString > hierarchies, std::vector< double > deltas, std::vector< TString > thetas, std::vector< TString > combo_names, std::vector< Int_t > colors, bool react=true, std::map< double, TString > delta_label={})
assert(nhit_max >=nhit_nbins)
A simple ascii-art progress bar.
Standard interface to all prediction techniques.
void Format(TGraph *gr, int lcol, int lsty, int lwid, int mcol, int msty, double msiz)
const FitSinSq2Theta13 kFitSinSq2Theta13
TCanvas * PaintReachCanvas(TString param_label, TString pot_option, bool pot_label=true, bool significance=false, double maxY=100, TString yaxistitle="")
std::string to_string(ModuleType mt)
T min(const caf::Proxy< T > &a, T b)
const FitVarWithPrior fitDeltaInPiUnits_UniformPriordCP & kFitDeltaInPiUnits
void Done()
Call this when action is completed.
virtual void SetValue(osc::IOscCalcAdjustable *osc, double val) const
double GetFractiondCP(TGraph *gr, const double level)
Compare a single data spectrum to the MC + cosmics expectation.
static constexpr Double_t year
Perform MINUIT fits in one or two dimensions.