9 #include "CAFAna/Extrap/ExtrapSterile.h" 38 std::map<std::string, std::vector<std::string> > shiftlabels;
39 shiftlabels[
"CalFlat095ND"] = std::vector<std::string>();
40 shiftlabels[
"CalFlat105ND"] = std::vector<std::string>();
41 shiftlabels[
"CalFlat095FD"] = std::vector<std::string>();
42 shiftlabels[
"CalFlat105FD"] = std::vector<std::string>();
43 shiftlabels[
"CalFlat095ND"].push_back(
"prod_caf_R16-03-03-prod2reco.a_nd_genie_nonswap_nogenierw_fhc_nova_v08_full_calib-shift-nd-xyview-neg-offset_v1");
44 shiftlabels[
"CalFlat095FD"].push_back(
"prod_caf_R16-03-03-prod2reco.a_fd_genie_nonswap_fhc_nova_v08_full_calib-shift-fd-xy-neg-offset_v1");
45 shiftlabels[
"CalFlat095FD"].push_back(
"prod_caf_R16-03-03-prod2reco.a_fd_genie_fluxswap_fhc_nova_v08_full_calib-shift-fd-xy-neg-offset_v1");
46 shiftlabels[
"CalFlat105ND"].push_back(
"prod_caf_R16-03-03-prod2reco.a_nd_genie_nonswap_nogenierw_fhc_nova_v08_full_calib-shift-nd-xyview-pos-offset_v1");
47 shiftlabels[
"CalFlat105FD"].push_back(
"prod_caf_R16-03-03-prod2reco.d_fd_genie_nonswap_fhc_nova_v08_full_calib-shift-fd-xy-pos-offset_v1");
48 shiftlabels[
"CalFlat105FD"].push_back(
"prod_caf_R16-03-03-prod2reco.d_fd_genie_fluxswap_fhc_nova_v08_full_calib-shift-fd-xy-pos-offset_v1");
51 std::map<std::string, std::vector<SpectrumLoader*> > systematics;
53 for(
const auto& shiftlabel : shiftlabels) {
54 systematics[shiftlabel.first] = std::vector<SpectrumLoader*>();
55 for(
const auto& samdef : shiftlabel.second){
56 systematics[shiftlabel.first].push_back(
new SpectrumLoader(samdef));
63 std::string labelRecoE =
"Calorimetric Energy (GeV)";
64 std::map<std::string, std::pair<HistAxis*, std::pair<Cut*, Cut*> > > cut_samples;
66 cut_samples[
"Ana01"] = std::pair<HistAxis*, std::pair<Cut*, Cut*> >(
74 std::map<std::string, IDecomp*> decomps_nominal;
75 std::map<std::string, std::map<std::string, std::map<int, IDecomp*> > > decomps_shifted;
76 std::map<std::string, PredictionNoExtrap*> predsNE_nominal;
77 std::map<std::string, std::map<std::string, std::map<int, PredictionNoExtrap*> > > predsNE_shifted;
78 std::map<std::string, PredictionSterile*> predsSt_nominal;
79 std::map<std::string, std::map<std::string, std::map<int, PredictionSterile*> > > predsSt_shifted;
86 for(
const auto& sample : cut_samples) {
91 *sample.second.first, *sample.second.second.first,
95 floadfar, floadswap, floadtau,
96 sample.second.first->label, sample.second.first->bins,
97 sample.second.first->var, *sample.second.second.second,
102 floadnear, floadneardata,
103 *sample.second.first, *sample.second.second.first,
107 floadnear, floadneardata,
112 floadnear, floadswap, floadfar, floadtau, *decompnc_n, *decompnumu_n,
114 *sample.second.second.second, *sample.second.second.first,
kNumuND,
121 for(
const auto& systlabel : systematics) {
125 if(systlabel.first.find(
"ND") != std::string::npos) {
126 decomps_shifted[sample.first][systlabel.first][1] =
new CheatDecomp(
127 *systlabel.second[0],
128 *sample.second.first, *sample.second.second.first,
132 floadfar, floadswap, floadtau,
133 sample.second.first->label, sample.second.first->bins,
134 sample.second.first->var, *sample.second.second.second,
139 *systlabel.second[0], floadneardata,
140 *sample.second.first, *sample.second.second.first,
144 *systlabel.second[0], floadneardata,
149 *systlabel.second[0], floadswap, floadfar,
150 floadtau, *decompnc_s, *decompnumu_s,
152 *sample.second.second.second, *sample.second.second.first,
kNumuND,
160 decomps_shifted[sample.first][systlabel.first][1] =
new CheatDecomp(
162 *sample.second.first, *sample.second.second.first,
166 *systlabel.second[fdpos], *systlabel.second[fspos], floadtau,
167 sample.second.first->label, sample.second.first->bins,
168 sample.second.first->var, *sample.second.second.second,
173 floadnear, floadneardata,
174 *sample.second.first, *sample.second.second.first,
178 floadnear, floadneardata,
183 floadnear, *systlabel.second[fspos], *systlabel.second[fdpos],
184 floadtau, *decompnc_s, *decompnumu_s,
186 *sample.second.second.second, *sample.second.second.first,
kNumuND,
196 for(
const auto& systlabel : systematics) {
197 for(
const auto&
loader : systlabel.second) {
210 std::string fullLocation = folder + filenm +
".root";
211 TFile* rootF =
new TFile(fullLocation.c_str(),
"RECREATE");
214 decomps_nominal, decomps_shifted,
215 predsNE_nominal, predsNE_shifted,
216 predsSt_nominal, predsSt_shifted
_HistAxis< Var > HistAxis
Cuts and Vars for the 2020 FD DiF Study.
const std::string fnametau_concat
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 SpillCut kOnly14DB([](const caf::SRSpillProxy *spill){if(spill->det!=caf::kFARDET) return true;std::bitset< 14 > binary(spill->dibmask);for(int i=0;i< 14;++i){if(!binary[i]) return false;}return true;})
const std::string fnamenear_concat
const std::string fnameneardata_concat
const Var kCaloE
Summed calorimetric energy of all hits in slice, uncorrected.
_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.
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const std::string fnameswap_concat
const std::string fnamefar_concat
Just return the ND truth spectra as the decomposition.
const Binning kNCDisappearanceEnergyBinning
Energy binnings used in Ana01 for nus extrapolation.