14 #include "CAFAna/Analysis/SALoaders.h" 18 #include "CAFAna/Core/Binning.h" 19 #include "CAFAna/Core/Cut.h" 20 #include "CAFAna/Core/HistAxis.h" 29 #include "CAFAna/Cuts/NueCutsSecondAna.h" 73 const bool hastau =
false 78 std::string loaderNDData =
"prod_decaf_R17-03-01-prod3reco.d_nd_numi_fhc_full_nue_or_numu_or_nus_contain_v1_goodruns";
79 std::string loaderNDMC =
"prod_decaf_R17-03-01-prod3reco.d_nd_genie_nonswap_fhc_nova_v08_full_nue_or_numu_or_nus_contain_v1";
82 std::string loaderFDnonswapMC =
"prod_decaf_R17-03-01-prod3reco.l_fd_genie_nonswap_fhc_nova_v08_full_nue_or_numu_or_nus_contain_v1";
83 std::string loaderFDfluxswapMC =
"prod_decaf_R17-03-01-prod3reco.l_fd_genie_fluxswap_fhc_nova_v08_full_nue_or_numu_or_nus_contain_v1";
84 std::string loaderFDtauswapMC =
"prod_decaf_R17-03-01-prod3reco.l_fd_genie_tau_fhc_nova_v08_full_nue_or_numu_or_nus_contain_v1";
112 const Cut cutNDNumu = {
144 for(
unsigned int selIdx = 0; selIdx <
kNumSels; ++selIdx){
145 for(
unsigned int varIdx = 0; varIdx <
kNumVars; ++varIdx){
150 axisNue, selND[selIdx],
153 extrapProp[selIdx][varIdx] =
new NueExtrap (loaders,
154 *propDecomp[selIdx][varIdx], *numuDecomp,
156 selFD[selIdx], selND[selIdx], cutNDNumu,
159 predicProp[selIdx][varIdx] =
new PredictionExtrap (&extrapProp[selIdx][varIdx]);
171 TDirectory * dFDshi = file->mkdir(
"prediction");
172 for(
unsigned int selIdx = 0; selIdx <
kNumSels; ++selIdx){
173 for(
unsigned int varIdx = 0; varIdx <
kNumVars; ++varIdx){
174 TString varName = defs[varIdx].
name.c_str();
175 predicProp[selIdx][varIdx]->
SaveTo(dFDshi,
"nue_pred_"+selNames[selIdx]+
"_"+varName) ;
176 predicNoXP[selIdx][varIdx]->
SaveTo(dFDshi,
"nue_pred_noextrap_"+selNames[selIdx]+
"_"+varName) ;
185 if(!gSystem->AccessPathName(outfilename.Data())){
186 std::cout <<
"\n\nThis will overwrite " << outfilename
187 <<
"\n\nAre you sure you want to continue? y/n ";
188 string input =
""; getline(cin,input);
189 if (input!=
"y") abort();
Near Detector underground.
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
Simple record of shifts applied to systematic parameters.
Proxy for caf::StandardRecord.
caf::Proxy< std::vector< caf::SRNeutrino > > nu
void make_nueFDprediction_kinematics(const std::string &outfilename="FDprediction_kinematics.root", const bool hastau=false)
string outfilename
knobs that need extra care
const Var kPtP
Transverse momentum fraction in slice.
Uses MC for NC and CC components, assigns remainder of data to CC.
const Var kNueEnergy2017([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return-1.0;if(sr->vtx.elastic.fuzzyk.npng< 1) return-1.0;return NueRecoE_2017FDFit(kCVNemE(sr), kCVNhadE(sr));})
Simple oscillation probability calculator that has no solar term or mass hierarchy or delta so it's s...
void CheckFileOverwrite(TString)
const HistDef defs[kNumVars]
const SystShifts kNoShift
const Cut kNue2017NDPresel
caf::Proxy< caf::SRTruthBranch > mc
const Var kWOscDumb([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return 0.f;return float(sr->mc.nu[0].woscdumb);})
Splits Data proportionally according to MC.
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const std::string selNames[kNumSels]
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
const Cut kNue2017FDAllSamples
Our FD selection including all samples, for making predictions, etc.