36 throw std::runtime_error(
"Fake signal number not valid!");
43 Double_t deltm2_41=0.041;
47 calc->
SetDm(4, deltm2_41);
62 size_t nUniverses = 1000;
79 TFile*
f = TFile::Open(
"fhc_fake_data_lltest.root",
"recreate");
88 hND3Flav->GetYaxis()->SetMaxDigits(4);
89 hND3Flav->SetLineWidth(2);
90 hND3Flav->SetLineColor(kAzure-2);
91 hND3Flav->GetXaxis()->CenterTitle();
92 hND3Flav->GetYaxis()->CenterTitle();
95 hFD3Flav->GetYaxis()->SetMaxDigits(4);
96 hFD3Flav->SetLineWidth(2);
97 hFD3Flav->SetLineColor(
kGreen+2);
98 hFD3Flav->GetXaxis()->CenterTitle();
99 hFD3Flav->GetYaxis()->CenterTitle();
100 hFD3Flav->Add(hCosmic);
103 std::vector<std::string>
systs;
105 systs.push_back(syst->ShortName());
108 systs.push_back(dynamic_cast<const NuISyst*>(syst)->BaseName());
113 TFile* mxFile = TFile::Open(
pnfs2xrootd(mxPath).c_str(),
"read");
122 for (
size_t u = 1;
u < 4; ++
u) {
124 TDirectory* uDir = f->mkdir(Form(
"fs%zu",
u));
130 hND4Flav->GetYaxis()->SetMaxDigits(4);
131 hND4Flav->SetLineWidth(2);
132 hND4Flav->SetLineColor(
kRed-3);
133 hND4Flav->GetXaxis()->CenterTitle();
134 hND4Flav->GetYaxis()->CenterTitle();
136 TH1D* hFD4Flav = fd.GetPrediction()->Predict(calc).ToTH1(fd.GetPOT());
137 hFD4Flav->GetYaxis()->SetMaxDigits(4);
138 hFD4Flav->SetLineWidth(2);
139 hFD4Flav->SetLineColor(
kRed-3);
140 hFD4Flav->GetXaxis()->CenterTitle();
141 hFD4Flav->GetYaxis()->CenterTitle();
142 hFD4Flav->Add(hCosmic);
147 for (
size_t i = 1;
i <= nUniverses; ++
i) {
149 TCanvas* c3vs4 =
new TCanvas(Form(
"c%zu",
i),
"", 1600, 1200);
154 TLegend
l1(0.4,0.5,0.8,0.79);
155 l1.AddEntry(hND3Flav,
"#splitline{ND Fake Data}{#splitline{3 Flavor }{NO Fluctuations}}",
"l");
156 hND3Flav->Draw(
"hist");
161 TLegend l2(0.4,0.13,0.8,0.42);
162 l2.AddEntry(hFD3Flav,
"#splitline{FD Fake Data}{#splitline{3 Flavor }{NO Fluctuations}}",
"l");
163 hFD3Flav->Draw(
"hist");
166 TDirectory*
dir = uDir->mkdir(Form(
"universe_%zu",
i));
169 TH1D* hsND = specs[0].ToTH1(nd.
GetPOT());
170 TH1D* hsFD = specs[1].ToTH1(fd.GetPOT());
175 TLegend l3(0.4,0.5,0.8,0.79);
176 l3.AddEntry(hsND,
"#splitline{ND Fake Data}{#splitline{4 Flavor }{Fluctuations}}",
"l");
177 hsND->GetYaxis()->SetMaxDigits(4);
178 hsND->SetLineWidth(2);
179 hsND->SetLineColor(kAzure-2);
181 hsND->GetXaxis()->CenterTitle();
182 hsND->GetYaxis()->CenterTitle();
183 if (hND4Flav->GetMaximum() > hsND->GetMaximum())
184 hsND->SetMaximum(hND4Flav->GetMaximum());
185 l3.AddEntry(hND4Flav,
"#splitline{4 Flavor}{No fluctuations}",
"l");
186 hND4Flav->Draw(
"hist same");
191 TLegend l4(0.4,0.13,0.8,0.42);
192 l4.AddEntry(hsFD,
"#splitline{FD Fake Data}{#splitline{4 Flavor }{Fluctuations}}",
"l");
193 hsFD->SetLineWidth(2);
194 hsFD->SetLineColor(
kGreen+2);
196 hsFD->GetXaxis()->CenterTitle();
197 hsFD->GetYaxis()->CenterTitle();
198 if (hFD4Flav->GetMaximum() > hsFD->GetMaximum())
199 hsFD->SetMaximum(hFD4Flav->GetMaximum());
200 l4.AddEntry(hFD4Flav,
"#splitline{4 Flavor}{No fluctuations}",
"l");
201 hFD4Flav->Draw(
"hist same");
206 TH1D* hratioND = (TH1D*)hND3Flav->Clone(
"hratioND");
207 hratioND->Divide(hsND);
208 hratioND->GetYaxis()->SetRangeUser(0,2);
209 hratioND->GetYaxis()->SetTitle(
"ND 3 Flavor/4 Flavor");
210 hratioND->SetLineColor(kBlack);
211 hratioND->Draw(
"hist");
214 TH1D* hratioFD = (TH1D*)hFD3Flav->Clone(
"hratioFD");
215 hratioFD->Divide(hsFD);
216 hratioFD->GetYaxis()->SetRangeUser(0,2.5);
217 hratioFD->GetYaxis()->SetTitle(
"FD 3 Flavor/4 Flavor");
218 hratioFD->SetLineColor(kBlack);
219 hratioFD->Draw(
"hist");
227 gSystem->Exec(Form(
"mkdir -p plots/FakeDataPlots/fs%zu",
u));
228 c3vs4->SaveAs(Form(
"plots/FakeDataPlots/fs%zu/universe_%zu.png",
u,
i));
const FitSinSqTheta24Sterile kFitSinSqTheta24Sterile
std::unique_ptr< covmx::CovarianceMatrix > GetCovarianceMatrix(std::vector< covmx::Sample > samples, std::vector< const ISyst * > systs)
Cuts and Vars for the 2020 FD DiF Study.
void SetNus20Params(osc::OscCalcSterile *calc, std::string type="3flav")
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.
void MiniBooNEParameters(osc::OscCalcSterile *calc)
virtual Spectrum Predict(osc::IOscCalc *calc) const =0
void SetPrediction(covmx::Sample &sample, bool systs=true)
void SetLivetime(double l)
Adapt the PMNS_Sterile calculator to standard interface.
int stats(TString inputFilePath, Int_t firstRun, Int_t lastRun, Float_t thresh, TString myDet)
::xsd::cxx::tree::exception< char > exception
std::string GetTag() const
const double kAna2018SensitivityFHCNDPOT
void FakeSignal(osc::OscCalcSterile *calc, size_t n)
std::string pnfs2xrootd(std::string loc, bool unauth)
const FitSinSqTheta34Sterile kFitSinSqTheta34Sterile
Encapsulate code to systematically shift a caf::SRProxy.
void MakeFakeData(bool rhc=false, bool stats=true)
Representation of a spectrum in any variable, with associated POT.
osc::OscCalcSterile * DefaultSterileCalc(int nflavors)
Create a sterile calculator with default assumptions for all parameters.
Sum up livetimes from individual cosmic triggers.
const std::string kNus20Path
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
const covmx::Sample kNusFHCFarDet(covmx::Analysis::kNC, covmx::Polarity::kFHC, covmx::Detector::kFarDet)
void SetAngle(int i, int j, double th)
std::vector< const ISyst * > getAllXsecSysts_2018_RPAFix()
const Binning kNCNDBinning
NC custom binning.
void SetProgress(double frac)
Update the progress fraction between zero and one.
void SetDm(int i, double dm)
Var Sqrt(const Var &v)
Use to take sqrt of a var.
static std::unique_ptr< CovMxManager > LoadFrom(TDirectory *dir)
Standard implementation.
const Binning kNCFDBinning
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
std::unique_ptr< Spectrum > LoadCosmic(covmx::Sample sample, bool cvmfs=true)
Get cosmics for a given sample.
A simple ascii-art progress bar.
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
const double kAna2018FHCPOT
double GetLivetime() const
Eigen::MatrixXd Predict(std::vector< Sample > samples, osc::IOscCalcAdjustable *calc, const SystShifts &systs=SystShifts::Nominal())
Prevent histograms being added to the current directory.
void Done()
Call this when action is completed.
IPrediction * GetPrediction() const
const covmx::Sample kNusFHCNearDet(covmx::Analysis::kNC, covmx::Polarity::kFHC, covmx::Detector::kNearDet)
const FitDmSq41Sterile kFitDmSq41Sterile
const double kAna2018FHCLivetime
std::vector< Spectrum > GetUniverse(osc::OscCalcSterile *calc, std::vector< covmx::Sample > samples)
A class for generating a covariance matrices as a function of oscillation parameters and systematics ...