6 #include "CAFAna/Core/Binning.h" 43 std::string fname_nueRHC =
"prod_sumdecaf_R17-11-14-prod4reco.e_nd_genie_nonswap_rhc_nova_v08_full_v1_nue2018";
47 std::string fname_numuRHC =
"prod_sumdecaf_R17-11-14-prod4reco.e_nd_genie_nonswap_rhc_nova_v08_full_v1_numu2018";
52 std::string rhcDataNue =
"prod_sumdecaf_R17-09-05-prod4recopreview.f_nd_numi_rhc_full_v1_addShortSimpleCVN_goodruns_nue2018";
56 std::string rhcDataNumu =
"prod_sumdecaf_R17-09-05-prod4recopreview.f_nd_numi_rhc_full_v1_addShortSimpleCVN_goodruns_numu2018";
80 else return float(1.5);
87 int selBin = kNueBDT3Bin(sr);
91 assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 93 int anaBin = 9*selBin + nuEBin; 97 const HistAxis kAxisFSProton("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueFSProtonAnaBinning); 98 const HistAxis kAxisCVNProng("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueCVNProngAnaBinning); 99 const HistAxis kAxisBDT3("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueBDT3AnaBinning); 100 // ------------------------------------------------------------------------------------------------- 102 // Predictions for nue RHC 103 PredictionNoOsc pNueFSProtonHiCVN(ld_nueRHC,kAxisFSProton,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,wei); 104 PredictionNoOsc pNueCVNProngHiCVN(ld_nueRHC,kAxisCVNProng,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,wei); 105 PredictionNoOsc pNueBDT3HiCVN(ld_nueRHC,kAxisBDT3,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,wei); 106 // Splitting into NC from nu and antinu using spectra for this analysis 107 Spectrum sNueFSProtonHiCVNNC(ld_nueRHC, 109 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && !kIsAntiNu, 112 Spectrum sNueFSProtonHiCVNNCAnti(ld_nueRHC, 114 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && kIsAntiNu, 117 Spectrum sNueCVNProngHiCVNNC(ld_nueRHC, 119 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && !kIsAntiNu, 122 Spectrum sNueCVNProngHiCVNNCAnti(ld_nueRHC, 124 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && kIsAntiNu, 127 Spectrum sNueBDT3HiCVNNC(ld_nueRHC, 129 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && !kIsAntiNu, 132 Spectrum sNueBDT3HiCVNNCAnti(ld_nueRHC, 134 kNue2018NDCVNSsb && kCutHighCVNSSe && kIsNC && kIsAntiNu, 138 PredictionNoOsc pNueFSProtonLoCVN(ld_nueRHC,kAxisFSProton,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,wei); 139 PredictionNoOsc pNueCVNProngLoCVN(ld_nueRHC,kAxisCVNProng,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,wei); 140 PredictionNoOsc pNueBDT3LoCVN(ld_nueRHC,kAxisBDT3,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,wei); 141 // Splitting into NC from nu and antinu using spectra for this analysis 142 Spectrum sNueFSProtonLoCVNNC(ld_nueRHC, 144 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && !kIsAntiNu, 147 Spectrum sNueFSProtonLoCVNNCAnti(ld_nueRHC, 149 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && kIsAntiNu, 152 Spectrum sNueCVNProngLoCVNNC(ld_nueRHC, 154 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && !kIsAntiNu, 157 Spectrum sNueCVNProngLoCVNNCAnti(ld_nueRHC, 159 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && kIsAntiNu, 162 Spectrum sNueBDT3LoCVNNC(ld_nueRHC, 164 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && !kIsAntiNu, 167 Spectrum sNueBDT3LoCVNNCAnti(ld_nueRHC, 169 kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe && kIsNC && kIsAntiNu, 173 // ------------------------------------------------------------------------------------------------ 175 Spectrum sNueData_FSProtonHiCVN(ld_dataRHCNue,kAxisFSProton,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,kUnweighted); 176 Spectrum sNueData_CVNProngHiCVN(ld_dataRHCNue,kAxisCVNProng,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,kUnweighted); 177 Spectrum sNueData_BDT3HiCVN(ld_dataRHCNue,kAxisBDT3,kNue2018NDCVNSsb && kCutHighCVNSSe,kNoShift,kUnweighted); 178 Spectrum sNueData_FSProtonLoCVN(ld_dataRHCNue,kAxisFSProton,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,kUnweighted); 179 Spectrum sNueData_CVNProngLoCVN(ld_dataRHCNue,kAxisCVNProng,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,kUnweighted); 180 Spectrum sNueData_BDT3LoCVN(ld_dataRHCNue,kAxisBDT3,kNue2018NDCVNSsb && kCutLowCVNSSe && !kCutHighCVNSSe,kNoShift,kUnweighted); 181 // ------------------------------------------------------------------------------------------------ 187 // Save the predictions 188 TFile *outFile = new TFile("./PredictionsAndDataWrongSignNue.root
","RECREATE
"); 190 pNueFSProtonHiCVN.SaveTo(outFile, "pNueFSProtonHiCVN
"); 191 pNueCVNProngHiCVN.SaveTo(outFile, "pNueCVNProngHiCVN
"); 192 pNueBDT3HiCVN.SaveTo(outFile, "pNueBDT3HiCVN
"); 193 pNueFSProtonLoCVN.SaveTo(outFile, "pNueFSProtonLoCVN
"); 194 pNueCVNProngLoCVN.SaveTo(outFile, "pNueCVNProngLoCVN
"); 195 pNueBDT3LoCVN.SaveTo(outFile, "pNueBDT3LoCVN
"); 197 sNueFSProtonHiCVNNC.SaveTo(outFile, "sNueFSProtonHiCVNNC
"); 198 sNueFSProtonHiCVNNCAnti.SaveTo(outFile, "sNueFSProtonHiCVNNCAnti
"); 199 sNueCVNProngHiCVNNC.SaveTo(outFile, "sNueCVNProngHiCVNNC
"); 200 sNueCVNProngHiCVNNCAnti.SaveTo(outFile, "sNueCVNProngHiCVNNCAnti
"); 201 sNueBDT3HiCVNNC.SaveTo(outFile, "sNueBDT3HiCVNNC
"); 202 sNueBDT3HiCVNNCAnti.SaveTo(outFile, "sNueBDT3HiCVNNCAnti
"); 203 sNueFSProtonLoCVNNC.SaveTo(outFile, "sNueFSProtonLoCVNNC
"); 204 sNueFSProtonLoCVNNCAnti.SaveTo(outFile, "sNueFSProtonLoCVNNCAnti
"); 205 sNueCVNProngLoCVNNC.SaveTo(outFile, "sNueCVNProngLoCVNNC
"); 206 sNueCVNProngLoCVNNCAnti.SaveTo(outFile, "sNueCVNProngLoCVNNCAnti
"); 207 sNueBDT3LoCVNNC.SaveTo(outFile, "sNueBDT3LoCVNNC
"); 208 sNueBDT3LoCVNNCAnti.SaveTo(outFile, "sNueBDT3LoCVNNCAnti
"); 211 sNueData_FSProtonHiCVN.SaveTo(outFile, "sNueData_FSProtonHiCVN
"); 212 sNueData_CVNProngHiCVN.SaveTo(outFile, "sNueData_CVNProngHiCVN
"); 213 sNueData_BDT3HiCVN.SaveTo(outFile, "sNueData_BDT3HiCVN
"); 214 sNueData_FSProtonLoCVN.SaveTo(outFile, "sNueData_FSProtonLoCVN
"); 215 sNueData_CVNProngLoCVN.SaveTo(outFile, "sNueData_CVNProngLoCVN
"); 216 sNueData_BDT3LoCVN.SaveTo(outFile, "sNueData_BDT3LoCVN
");
Cuts and Vars for the 2020 FD DiF Study.
Proxy for caf::StandardRecord.
void SetSpillCut(const SpillCut &cut)
const Var kNueEnergy2018([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return-1.0;if(sr->vtx.elastic.fuzzyk.npng< 1) return-1.0;if(kIsRHC(sr)) return kNueEnergyRHC(sr);else return kNueEnergyFHC(sr);})
const Var kCVNFSProtonScore2018([](const caf::SRProxy *sr){return CVNFinalStateScore2018(sr, 2212);})
Proton score from CVN Final State labels, using Prod3Train CVN.
const Var kCVNSSe([](const caf::SRProxy *sr){throw std::runtime_error("kCVNSSe is no longer available. Fix your macro so you don't use it.");return-5.;})
2018 nue PID
const Cut kCVNProngProtonCtNumu([](const caf::SRProxy *sr){ int count=0;if(sr->vtx.elastic.fuzzyk.npng==1) return false;for(unsigned int i=0;i< sr->vtx.elastic.fuzzyk.npng;++i){if(sr->vtx.elastic.fuzzyk.png[i].cvnpart.pdgmax!=2212) continue;if(util::pythag(sr->vtx.elastic.vtx.X()-sr->vtx.elastic.fuzzyk.png[i].start.X(), sr->vtx.elastic.vtx.Y()-sr->vtx.elastic.fuzzyk.png[i].start.Y(), sr->vtx.elastic.vtx.Z()-sr->vtx.elastic.fuzzyk.png[i].start.Z()) > 20) continue;if(sr->vtx.elastic.fuzzyk.png[i].cvnpart.maxval< 0.72) continue;count++;}return count >0;})
void make_RHC_WrongSign_Nue()
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const Var kAntiNumuBDTCVN
assert(nhit_max >=nhit_nbins)
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.