10 #include "CAFAna/Extrap/ExtrapSterile.h" 30 const std::string fnameneardata_conc=
"prod_caf_R17-03-01-prod3reco.d_nd_numi_fhc_full_v1_goodruns";
34 std::string fnear_ns=
"defname: prod_caf_R17-03-01-prod3reco.l_nd_genie_nonswap_fhc_nova_v08_full_no-shift_v1";
35 std::string ffar_ns=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_nonswap_fhc_nova_v08_full_lightmodel-noshift_v2";
36 std::string fswap_ns=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_fluxswap_fhc_nova_v08_full_lightmodel-noshift_v2";
37 std::string ftau_ns=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_tau_fhc_nova_v08_full_lightmodel-noshift_v2";
52 std::string Llevelu=
"defname: prod_caf_R17-03-01-prod3reco.l_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightup-calibdown_v1";
53 std::string Lleveld=
"defname: prod_caf_R17-03-01-prod3reco.l_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightdown-calibup_v1";
54 std::string cherenkov=
"defname: prod_caf_R17-03-01-prod3reco.l_nd_genie_nonswap_fhc_nova_v08_full_ckv-proton-shift-down_v1";
58 std::string Llevelu_fd=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightup-calibdown_v2";
59 std::string Llevelu_swp=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_fluxswap_fhc_nova_v08_full_lightmodel-lightup-calibdown_v2";
60 std::string Llevelu_tau=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_tau_fhc_nova_v08_full_lightmodel-lightup-calibdown_v2";
62 std::string Lleveld_fd=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightdown-calibup_v2";
63 std::string Lleveld_swp=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_fluxswap_fhc_nova_v08_full_lightmodel-lightdown-calibup_v2";
64 std::string Lleveld_tau=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_tau_fhc_nova_v08_full_lightmodel-lightdown-calibup_v2";
67 std::string cherenkovfd=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_nonswap_fhc_nova_v08_full_ckv-proton-shift-down_v2";
68 std::string cherenkovswp=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_fluxswap_fhc_nova_v08_full_ckv-proton-shift-down_v2";
69 std::string cherenkovtau=
"defname: prod_caf_R17-03-01-prod3reco.l_fd_genie_tau_fhc_nova_v08_full_ckv-proton-shift-down_v2";
73 std::map<std::string, std::vector<std::string> > shiftlabels;
74 shiftlabels[
"ULLevel"] = std::vector<std::string>();
75 shiftlabels[
"DLLevel"] = std::vector<std::string>();
76 shiftlabels[
"Cherenkov"] = std::vector<std::string>();
80 shiftlabels[
"ULLevel"].push_back(Llevelu);
81 shiftlabels[
"ULLevel"].push_back(Llevelu_fd);
82 shiftlabels[
"ULLevel"].push_back(Llevelu_swp);
83 shiftlabels[
"ULLevel"].push_back(Llevelu_tau);
85 shiftlabels[
"DLLevel"].push_back(Lleveld);
86 shiftlabels[
"DLLevel"].push_back(Lleveld_fd);
87 shiftlabels[
"DLLevel"].push_back(Lleveld_swp);
88 shiftlabels[
"DLLevel"].push_back(Lleveld_tau);
90 shiftlabels[
"Cherenkov"].push_back(cherenkov);
91 shiftlabels[
"Cherenkov"].push_back(cherenkovfd);
92 shiftlabels[
"Cherenkov"].push_back(cherenkovswp);
93 shiftlabels[
"Cherenkov"].push_back(cherenkovtau);
102 std::map<std::string, std::vector<SpectrumLoader*> > systematics;
104 for(
const auto& shiftlabel : shiftlabels) {
105 systematics[shiftlabel.first] = std::vector<SpectrumLoader*>();
106 for(
const auto& samdef : shiftlabel.second){
107 systematics[shiftlabel.first].push_back(
new SpectrumLoader(samdef));
115 std::map<std::string, std::pair<HistAxis*, std::pair<Cut*, Cut*> > > cut_samples;
117 cut_samples[
"Ana01"] = std::pair<HistAxis*, std::pair<Cut*, Cut*> >(
125 std::map<std::string, IDecomp*> decomps_nominal;
126 std::map<std::string, std::map<std::string, std::map<int, IDecomp*> > > decomps_shifted;
127 std::map<std::string, PredictionNoExtrap*> predsNE_nominal;
128 std::map<std::string, std::map<std::string, std::map<int, PredictionNoExtrap*> > > predsNE_shifted;
129 std::map<std::string, PredictionSterile*> predsSt_nominal;
130 std::map<std::string, std::map<std::string, std::map<int, PredictionSterile*> > > predsSt_shifted;
139 for(
const auto& sample : cut_samples) {
141 floadnear_ns, floadneardata,
142 *sample.second.first, *sample.second.second.first,
147 floadfar_ns, floadswap_ns, floadtau_ns,
155 floadnear_ns, floadneardata,
156 *sample.second.first, *sample.second.second.first,
160 floadnear_ns, floadneardata,
165 floadnear_ns, floadswap_ns, floadfar_ns, floadtau_ns, *decompnc_n, *decompnumu_n,
167 *sample.second.second.second, *sample.second.second.first,
kNumuND,
172 for(
const auto& systlabel : systematics) {
178 *systlabel.second[ndpos],floadneardata,
179 *sample.second.first, *sample.second.second.first,
183 *systlabel.second[fdpos], *systlabel.second[fspos], *systlabel.second[ftpos],
185 kNusNDEnergy17, *sample.second.second.second,
190 *systlabel.second[ndpos], floadneardata,
191 *sample.second.first, *sample.second.second.first,
195 *systlabel.second[ndpos], floadneardata,
200 *systlabel.second[ndpos], *systlabel.second[fspos], *systlabel.second[fdpos],
201 *systlabel.second[ftpos], *decompnc_s, *decompnumu_s,
203 *sample.second.second.second, *sample.second.second.first,
kNumuND,
212 for(
const auto& systlabel : systematics) {
213 for(
const auto&
loader : systlabel.second) {
226 std::string fullLocation = folder + filenm +
".root";
227 TFile* rootF =
new TFile(fullLocation.c_str(),
"RECREATE");
230 decomps_nominal, decomps_shifted,
231 predsNE_nominal, predsNE_shifted,
232 predsSt_nominal, predsSt_shifted
_HistAxis< Var > HistAxis
Cuts and Vars for the 2020 FD DiF Study.
void SaveMaps(TDirectory *out, std::map< std::string, IDecomp * > decomps_nominal, std::map< std::string, std::map< std::string, std::map< int, IDecomp * > > > decomps_shifted, std::map< std::string, PredictionNoExtrap * > predsNE_nominal, std::map< std::string, std::map< std::string, std::map< int, PredictionNoExtrap * > > > predsNE_shifted, std::map< std::string, PredictionSterile * > predsSt_nominal, std::map< std::string, std::map< std::string, std::map< int, PredictionSterile * > > > predsSt_shifted)
Save all of the objects in the input maps to the out directory/file.
void SetSpillCut(const SpillCut &cut)
const Cut kNus17ND
Full Nus17 ND analysis selection.
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
virtual void Go() override
Load all the registered spectra.
const SystShifts kNoShift
const HistAxis kNCBinsNumuCCAxis("Reconstructed Neutrino Energy (GeV)", kNCDisappearanceEnergyBinning, kCCE)
Splits Data proportionally according to MC.
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
A prediction object compatible with sterile oscillations.
void SystsCalibAbsLoad17()
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const Binning kNCDisappearanceEnergyBinning
Energy binnings used in Ana01 for nus extrapolation.