21 #include "Utilities/func/MathUtil.h" 31 std::vector<SpectrumLoader>
loaders;
32 loaders.push_back(
SpectrumLoader(
"prod_caf_R17-09-05-prod4recopreview.f_fd_genie_nonswap_fhc_nova_v08_full_v1_addShortSimpleCVN"));
33 loaders.push_back(
SpectrumLoader(
"prod_caf_R17-09-05-prod4recopreview.f_fd_genie_nonswap_rhc_nova_v08_full_v1_addShortSimpleCVN"));
34 std::vector<SpectrumLoader> loadersSwap;
35 loadersSwap.push_back(
SpectrumLoader(
"prod_caf_R17-09-05-prod4recopreview.f_fd_genie_fluxswap_fhc_nova_v08_full_v1_addShortSimpleCVN"));
36 loadersSwap.push_back(
SpectrumLoader(
"prod_caf_R17-09-05-prod4recopreview.f_fd_genie_fluxswap_rhc_nova_v08_full_v1_addShortSimpleCVN"));
44 std::vector<std::vector<PIDCutDef> > pidCuts =
GetPIDCuts(opt);
47 std::vector<PredDef> preds;
50 for(
auto rhc = 0; rhc < 2; ++rhc)
55 TString fhcName =
"fhc";
65 for(
const auto var:vars)
75 cut.name.Data(),
"noPIDCut",
var.name.Data(), fhcName});
77 <<
var.name.Data() <<
" " 79 <<
cut.name.Data() <<
" " 84 for(
auto pidCut:pidCuts[rhc])
87 if(
var.type.Contains(
"pid", TString::kIgnoreCase))
90 if(!((pidCut.name.Contains(
var.name.Data())) ||
91 (pidCut.name.Contains(
"allPIDs"))))
99 cut.name.Data(), pidCut.name.Data(),
var.name.Data(), fhcName});
101 <<
var.name.Data() <<
" " 102 << pidCut.name.Data() <<
" " 103 <<
cut.name.Data() <<
" " 111 for(
auto rhc = 0; rhc < 1; ++rhc)
115 loadersSwap[rhc].Go();
119 auto outFile =
new TFile(filename,
"recreate");
124 <<
pred.cutName <<
"_" 125 <<
pred.pidCutName <<
"_" 126 <<
pred.varName <<
"_" 129 "pred_nxp_" +
pred.cutName +
"_" +
130 pred.pidCutName +
"_" +
pred.varName +
"_" +
pred.fhcName));
Cuts and Vars for the 2020 FD DiF Study.
std::vector< CutDef > GetCuts(TString opt, bool pastCuts=false, bool noCut=true)
std::vector< std::vector< PIDCutDef > > GetPIDCuts(TString opt, bool noCut=true)
const SystShifts kNoShift
const std::vector< VarDef > GetVars(TString opt, TString type="all")
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
void nuCrystalBall(const TString filename, const TString opt)