33 using std::ostringstream;
38 using std::chrono::high_resolution_clock;
39 using std::chrono::duration_cast;
40 using std::chrono::seconds;
59 throw std::runtime_error(
"No samples found! Exiting.");
63 cout <<
"Setting prediction for sample " << s.GetName() <<
"..." <<
endl;
85 cout <<
"Fitting with Asimov fake data with \"" << cfg.
nullHyp <<
"\" null hypothesis:" <<
endl;
87 for (Sample& sample: cfg.
samples) {
90 if (sample.HasCosmic()) *data += *sample.GetCosmic();
96 cout <<
"Loading fake data, type " << cfg.
fakeDataSet <<
", pseudoexperiment " 100 TFile*
f = TFile::Open(filepath.str().c_str(),
"read");
103 for (Sample& s : cfg.
samples) {
110 CovarianceMatrix* mx =
nullptr;
112 TFile*
f = TFile::Open((
InputPath()+
"/covmx/mx.root").c_str(),
"read");
114 for (
size_t i = 0;
i < cfg.
samples.size(); ++
i) {
115 if (
i > 0) tag <<
"_";
118 mx = LoadFrom<CovarianceMatrix>(
f, tag.str()+
"/"+systConfig).
release();
134 if (!opt.Contains(
"quiet")) ll->
SetVerbose(
true);
142 vector<const IExperiment*> expts = { expt };
143 if (!opt.Contains(
"numusel")) {
144 cout <<
"No numu samples included! Adding Gaussian constraints on atmospheric parameters." <<
endl;
147 cout <<
"Numu samples included! Omitting Gaussian constraints on atmospheric parameters." <<
endl;
150 TH1D hTime(
"hTime",
"", 1, 0, 1);
155 hTime.SetBinContent(1, duration_cast<seconds>(
end-
start).
count());
158 string optstring = opt.Data();
159 TFile*
outFile =
new TFile((optstring+
".root").c_str(),
"recreate");
160 surf.
SaveTo(outFile,
"surface");
161 outFile->WriteTObject(&hTime,
"time");
165 cout <<
endl <<
"Exception occurred! " << e.what() <<
endl;
Cuts and Vars for the 2020 FD DiF Study.
std::vector< covmx::Sample > samples
void SetNus20Params(osc::OscCalcSterile *calc, std::string type="3flav")
void SetPrediction(covmx::Sample &sample, bool systs=true)
Adapt the PMNS_Sterile calculator to standard interface.
unsigned int fakeDataUniverse
::xsd::cxx::tree::exception< char > exception
void PrintOscParams(osc::OscCalcSterile *calc)
FakeDataType fakeDataType
std::map< const IFitVar *, std::vector< double > > fitSeeds
Representation of a spectrum in any variable, with associated POT.
const XML_Char const XML_Char * data
Log-likelihood scan across two parameters.
void SetVerbose(bool opt)
osc::OscCalcSterile * DefaultSterileCalc(int nflavors)
Create a sterile calculator with default assumptions for all parameters.
std::vector< const IExperiment * > GetConstraints()
Gaussian constrains on atmospheric parameters.
static std::unique_ptr< Spectrum > LoadFrom(TDirectory *dir, const std::string &name)
void SetCosmic(covmx::Sample &sample)
Set cosmics in a given sample.
Compare a single data spectrum to the MC + cosmics expectation.
void OverrideLivetime(double newlive)
DO NOT USE UNLESS YOU ARE 110% CERTAIN THERE ISN'T A BETTER WAY!
std::vector< float > Spectrum
bool CheckOption(TString opts, TString opt)
Compare a single data spectrum to the MC + cosmics expectation.
void SaveHists(bool opt=true)
Combine multiple component experiments.
TString GetConfig(int dbcfg)
void SetDm(int i, double dm)
const std::string & ShortName() const
void SaveTo(TDirectory *dir, const std::string &name) const
Base class defining interface for experiments.
void SetResetShifts(bool val=false)
Prevent histograms being added to the current directory.
std::vector< const IFitVar * > fitVars
A class for generating a covariance matrices as a function of oscillation parameters and systematics ...