7 #include "CAFAna/Core/Binning.h" 42 std::string fname_numuRHC =
"prod_sumdecaf_R17-11-14-prod4reco.e_nd_genie_nonswap_rhc_nova_v08_full_v1_numu2018";
66 else return float(1.5);
73 int selBin = kNueBDT3Bin(sr);
77 assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 79 int anaBin = 9*selBin + nuEBin; 83 const HistAxis kAxisFSProton("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueFSProtonAnaBinning); 84 const HistAxis kAxisCVNProng("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueCVNProngAnaBinning); 85 const HistAxis kAxisBDT3("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueBDT3AnaBinning); 86 // ------------------------------------------------------------------------------------------------- 88 // Predictions/Spectra 89 PredictionNoOsc pNumuFSProtonRS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND0,kNoShift,wei); 90 PredictionNoOsc pNumuFSProtonWS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND0,kNoShift,wei); 91 PredictionNoOsc pNumuTot(ld_numuRHC,kNumuCCOptimisedAxis,kNumuCutND2018,kNoShift,wei); 93 //--- Splitting into NC from nu and antinu using spectra for this analysis 94 Spectrum sNumuFSProtonRSNC(ld_numuRHC,kNumuCCOptimisedAxis, 95 kSelectRSNumuND0 && kIsNC && !kIsAntiNu,kNoShift,wei); 96 Spectrum sNumuFSProtonRSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 97 kSelectRSNumuND0 && kIsNC && kIsAntiNu,kNoShift,wei); 98 Spectrum sNumuFSProtonWSNC(ld_numuRHC,kNumuCCOptimisedAxis, 99 kSelectWSNumuND0 && kIsNC && !kIsAntiNu,kNoShift,wei); 100 Spectrum sNumuFSProtonWSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 101 kSelectWSNumuND0 && kIsNC && kIsAntiNu,kNoShift,wei); 103 Spectrum sNumuTotNC(ld_numuRHC,kNumuCCOptimisedAxis, 104 kNumuCutND2018 && kIsNC && !kIsAntiNu,kNoShift,wei); 105 Spectrum sNumuTotNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 106 kNumuCutND2018 && kIsNC && kIsAntiNu,kNoShift,wei); 111 // Save the predictions 112 TFile *outFile = new TFile("./WrongSign-XCheck2019-NumuMC.root
","RECREATE
"); 115 pNumuFSProtonRS.SaveTo(outFile, "pNumuFSProtonRS
"); 116 pNumuFSProtonWS.SaveTo(outFile, "pNumuFSProtonWS
"); 117 pNumuTot.SaveTo(outFile, "pNumuTot
"); 119 sNumuFSProtonRSNC.SaveTo(outFile, "sNumuFSProtonRSNC
"); 120 sNumuFSProtonRSNCAnti.SaveTo(outFile, "sNumuFSProtonRSNCAnti
"); 121 sNumuFSProtonWSNC.SaveTo(outFile, "sNumuFSProtonWSNC
"); 122 sNumuFSProtonWSNCAnti.SaveTo(outFile, "sNumuFSProtonWSNCAnti
"); 123 sNumuTotNC.SaveTo(outFile, "sNumuTotNC
"); 124 sNumuTotNCAnti.SaveTo(outFile, "sNumuTotNCAnti
");
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_Numu_MC()
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.