7 #include "TDirectory.h" 60 std::string loadLocation =
"/nova/ana/steriles/Nus17/predInterpSysts_nus17_v1.root";
61 std::string saveLocation =
"plot_" + filenm +
"_shape_2D_lower.root";
62 std::string textLocation =
"count_" + filenm +
"_shape_2D_lower.txt";
65 Spectrum*
intime = LoadFromFile<Spectrum>(
"/nova/ana/steriles/Nus17/fout_nus17_box_opening_restricted.root",
"spec_nus_vise_numi").
release();
67 TH1 *hSpectrum = intime->
ToTH1(intime->
POT());
69 std::cout <<
"Data spectrum: " << data_spec.POT()
71 << data_spec.ToTH1(intime->
POT())->GetSumOfWeights()
75 TFile *
cos =
new TFile(
"/nova/ana/steriles/Nus17/nus17_cosmic_background.root",
"read");
76 TH1 *hcosmic = (TH1*)cos->Get(
"cosall");
80 << cosmic.
ToTH1(cosmic.
POT())->GetSumOfWeights()
88 TFile* rootL =
new TFile(loadLocation.c_str(),
"read");
89 TDirectory* tmpL = gDirectory;
90 TDirectory* loadDir = gDirectory;
92 loadDir->cd((loadLocation +
":/nus17_predI").c_str());
107 double widthX = (maxX-minX)/(NX-1);
113 double widthY = (maxY-
minY)/(NY-1);
115 assert(
bin < NX*NY &&
"Invalid bin number");
117 int binX =
bin - NX*binY;
118 double centerX = minX + binX*widthX;
119 double centerY = minY + binY*widthY;
122 std::vector<const IFitVar*> fitvars;
132 for(
int iTrial = 0; iTrial < nTrials; ++iTrial){
141 while (trueX < minX || trueX > maxX)
142 trueX = rnd.Uniform(centerX-widthX/2,centerX+widthX/2);
144 while (trueY < minY || trueY > maxY)
145 trueY = rnd.Uniform(centerY-widthY/2,centerY+widthY/2);
152 std::vector<const ISyst*> systlist = getAllNusFDSysts();
157 Spectrum obs = pred.get()->Predict(calc4f);
160 TH1 *hMockSpectrum = mock.
ToTH1(pot);
162 delete hMockSpectrum;
165 Double_t meanSinSqTheta23Sterile = 0;
166 Double_t sigmaSinSqTheta23Sterile = 0;
169 meanSinSqTheta23Sterile = 0.404;
170 sigmaSinSqTheta23Sterile = 0.030;
172 meanSinSqTheta23Sterile = 0.603;
173 sigmaSinSqTheta23Sterile = 0.030;
210 if (trueChi < bestChi) {
215 FCPoint pt(trueX, trueY, trueChi,bestX, bestY, bestChi,0);
216 if (100*iTrial % nTrials == 0){
217 std::cout <<
"Trial: " << iTrial <<
", TrueX: " << trueX <<
", Y: " << trueY <<
", trueChi: " << trueChi <<
", bestX: " << bestX <<
", Y: " << bestY <<
", bestChi: " << bestChi <<
", true-best: " << trueChi-bestChi <<
std::endl;
227 octant =
"_upperOctant";
230 fccol.
SaveToFile(
"FC_nus17_Col_"+binname+
"_"+number+octant+
".root");
240 calc->
SetDm(3, 7.53
e-5 + 2.67
e-3);
TCut intime("tave>=217.0 && tave<=227.8")
Cuts and Vars for the 2020 FD DiF Study.
void SetNFlavors(int nflavors)
void ResetAngles(osc::OscCalcSterile *calc)
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.
A simple Gaussian constraint on an arbitrary IFitVar.
void make_nus17_fc_surfs(int nTrials=100, int bin=0, int Idx=0, bool lowerOctant=true)
void SetDelta(int i, int j, double delta)
void AddPoint(const FCPoint &p)
Adapt the PMNS_Sterile calculator to standard interface.
const FitTheta23InDegreesSterile kFitTheta23InDegreesSterile
const FitDmSq32Sterile kFitDmSq32Sterile
const FitTheta24InDegreesSterile kFitTheta24InDegreesSterile
Spectrum MockData(double pot, int seed=0) const
Mock data is FakeData with Poisson fluctuations applied.
Representation of a spectrum in any variable, with associated POT.
Represents the results of a single Feldman-Cousins pseudo-experiment.
const FitDelta24InPiUnitsSterile kFitDelta24InPiUnitsSterile
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
osc::OscCalcSterile * DefaultSterileCalc(int nflavors)
Create a sterile calculator with default assumptions for all parameters.
const double kAna2017Livetime
Sum up livetimes from individual cosmic triggers.
double GetValue(const osc::IOscCalcAdjustable *osc) const override
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.
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
void ResetSterileCalcToDefault(osc::OscCalcSterile *calc)
Reset calculator to default assumptions for all parameters.
Combine multiple component experiments.
void SetAngle(int i, int j, double th)
double GetValue(const osc::IOscCalcAdjustable *osc) const override
static std::unique_ptr< PredictionInterp > LoadFrom(TDirectory *dir, const std::string &name)
void SetDm(int i, double dm)
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
const FitSinSqTheta23Sterile kFitSinSqTheta23Sterile
assert(nhit_max >=nhit_nbins)
const FitTheta34InDegreesSterile kFitTheta34InDegreesSterile
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
void SetValue(osc::IOscCalcAdjustable *osc, double val) const override
std::string to_string(ModuleType mt)
void SaveToFile(const std::string &fname) const
double Livetime() const
Seconds. For informational purposes only. No calculations use this.
Compare a single data spectrum to the MC + cosmics expectation.
Collection of FCPoint. Serializable to/from a file.
Perform MINUIT fits in one or two dimensions.