12 bool systematics =
false,
25 if(polarity ==
"fhc"){
28 if(polarity ==
"rhc"){
67 std::cout <<
"systematics: " << systName <<
" , calculator: " << calcName <<
", hierarchy: " << hierarchy <<
std::endl;
71 std::string InDirQuant =
"/pnfs/nova/persistent/analysis/numu/Ana2018/provisional/quantiles";
72 std::string InFileQuant = InDirQuant +
"/quantiles__" + polarity +
"_full__numu2018.root";
75 TH2* FDSpec2D = (TH2*)inFile->FindObjectAny(
"FDSpec2D");
90 std::vector<NoExtrapGenerator*> NoExtrapVec;
91 std::vector<PredictionInterp*> predictionVec;
94 for(
auto thisCut : HadEFracQuantCuts){
96 predictionVec.push_back(
new PredictionInterp(systs, calc, *(NoExtrapVec.back()), loaders));
104 for(
size_t quant=1; quant <= predictionVec.size();quant++){
105 auto prediction = predictionVec[quant-1];
106 std::string OutFileName = Form(
"prediction_quant%d__", quant) + extrapName +
"_" + systName +
"__" + polarity +
"_" + calcName +
"_" + hierarchy +
"__" +
period +
"__numu2018.root";
107 std::cerr <<
"Saving Quantile " << quant <<
" to Prediction file: " << OutFileName <<
std::endl;
108 TFile *
f = TFile::Open(OutFileName.c_str(),
"RECREATE");
109 prediction ->
SaveTo(f,
"prediction");
Implements systematic errors by interpolation between shifted templates.
Cuts and Vars for the 2020 FD DiF Study.
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
Collection of SpectrumLoaders for many configurations.
void set_loaders_ana2018(Loaders &loaders, std::string polarity, std::string period, std::string production)
const HistAxis kHadEFracAxis("E_{had.} / E_{#nu}", Binning::Simple(200, 0, 1), kHadEFrac)
HistAxis that implements Hadronic Energy fraction binning used by L.Vinton to derive Hadronic Energy ...
std::string pnfs2xrootd(std::string loc, bool unauth)
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
virtual void SetDmsq32(const T &dmsq32)=0
void Go()
Call Go() on all the loaders.
void SetSpillCut(const SpillCut &cut)
std::vector< const ISyst * > getAllAna2018Systs(const EAnaType2018 ana, const bool smallgenie, const BeamType2018 beam, bool isFit)
const HistAxis kNumuCCOptimisedAxis("Reconstructed Neutrino Energy (GeV)", kNumuCCEOptimisedBinning, kCCE)
HistAxis that implements optimised numuCCE from L. Vinton. See docdb 16332. This was close to 'custC'...
virtual void SetTh23(const T &th23)=0
std::vector< Cut > QuantileCutsFromTH2(TH2 *quantileHist, const HistAxis &independentAxis, const HistAxis &quantileAxis, const unsigned int &numQuantiles, const bool verbose)
: Do the same as the QuantileCuts function but taking in the TH2 instead of making it...
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.