6 #include "CAFAna/Core/Binning.h" 44 std::string fname_nueRHC =
"prod_sumdecaf_R17-11-14-prod4reco.e_nd_genie_nonswap_rhc_nova_v08_full_v1_nue2018";
48 std::string fname_numuRHC =
"prod_sumdecaf_R17-11-14-prod4reco.e_nd_genie_nonswap_rhc_nova_v08_full_v1_numu2018";
53 std::string rhcDataNue =
"prod_sumdecaf_R17-09-05-prod4recopreview.f_nd_numi_rhc_full_v1_addShortSimpleCVN_goodruns_nue2018";
57 std::string rhcDataNumu =
"prod_sumdecaf_R17-09-05-prod4recopreview.f_nd_numi_rhc_full_v1_addShortSimpleCVN_goodruns_numu2018";
81 else return float(1.5);
88 int selBin = kNueBDT3Bin(sr);
92 assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 94 int anaBin = 9*selBin + nuEBin; 98 const HistAxis kAxisFSProton("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueFSProtonAnaBinning); 99 const HistAxis kAxisCVNProng("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueCVNProngAnaBinning); 100 const HistAxis kAxisBDT3("NuE
Energy / Analysis Bin
",Binning::Simple(18,0,18),kNueBDT3AnaBinning); 101 // ------------------------------------------------------------------------------------------------- 103 // Predictions for numu RHC 106 TFile::Open(pnfs2xrootd("/pnfs/
nova/persistent/analysis/
numu/Ana2018/provisional/
quantiles/quantiles__rhc_full__numu2018.root
").c_str()); 107 const int NHadEFracQuantiles = 4; // defines how many divisions of hadEFrac are used 108 TH2 *FDSpec2D = (TH2*)numuCutFile->FindObjectAny("FDSpec2D
"); 109 std::vector<Cut> HadEFracQuantCuts = QuantileCutsFromTH2(FDSpec2D, kNumuCCOptimisedAxis, kHadEFracAxis, NHadEFracQuantiles); 112 PredictionNoOsc pQ1NumuFSProtonRS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND0 && HadEFracQuantCuts[0],kNoShift,wei); 113 PredictionNoOsc pQ1NumuFSProtonWS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND0 && HadEFracQuantCuts[0],kNoShift,wei); 114 PredictionNoOsc pQ1NumuCVNProngRS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND1 && HadEFracQuantCuts[0],kNoShift,wei); 115 PredictionNoOsc pQ1NumuCVNProngWS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND1 && HadEFracQuantCuts[0],kNoShift,wei); 116 PredictionNoOsc pQ1NumuBDT3RS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND2 && HadEFracQuantCuts[0],kNoShift,wei); 117 PredictionNoOsc pQ1NumuBDT3WS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND2 && HadEFracQuantCuts[0],kNoShift,wei); 118 // Splitting into NC from nu and antinu using spectra for this analysis 119 Spectrum sQ1NumuFSProtonRSNC(ld_numuRHC,kNumuCCOptimisedAxis, 120 kSelectRSNumuND0 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 121 Spectrum sQ1NumuFSProtonRSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 122 kSelectRSNumuND0 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 123 Spectrum sQ1NumuCVNProngRSNC(ld_numuRHC,kNumuCCOptimisedAxis, 124 kSelectRSNumuND1 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 125 Spectrum sQ1NumuCVNProngRSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 126 kSelectRSNumuND1 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 127 Spectrum sQ1NumuBDT3RSNC(ld_numuRHC,kNumuCCOptimisedAxis, 128 kSelectRSNumuND2 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 129 Spectrum sQ1NumuBDT3RSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 130 kSelectRSNumuND2 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 131 Spectrum sQ1NumuFSProtonWSNC(ld_numuRHC,kNumuCCOptimisedAxis, 132 kSelectWSNumuND0 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 133 Spectrum sQ1NumuFSProtonWSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 134 kSelectWSNumuND0 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 135 Spectrum sQ1NumuCVNProngWSNC(ld_numuRHC,kNumuCCOptimisedAxis, 136 kSelectWSNumuND1 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 137 Spectrum sQ1NumuCVNProngWSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 138 kSelectWSNumuND1 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 139 Spectrum sQ1NumuBDT3WSNC(ld_numuRHC,kNumuCCOptimisedAxis, 140 kSelectWSNumuND2 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 141 Spectrum sQ1NumuBDT3WSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 142 kSelectWSNumuND2 && kIsNC && kIsAntiNu && HadEFracQuantCuts[0],kNoShift,wei); 144 // ------------------------------------------------------------------------------------------------ 146 Spectrum sQ1NumuData_FSProtonRS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND0 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 147 Spectrum sQ1NumuData_FSProtonWS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND0 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 148 Spectrum sQ1NumuData_CVNProngRS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND1 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 149 Spectrum sQ1NumuData_CVNProngWS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND1 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 150 Spectrum sQ1NumuData_BDT3RS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND2 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 151 Spectrum sQ1NumuData_BDT3WS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND2 && HadEFracQuantCuts[0],kNoShift,kUnweighted); 152 // ------------------------------------------------------------------------------------------------ 158 // Save the predictions 159 TFile *outFile = new TFile("./PredictionsAndDataWrongSignNumuQ1.root
","RECREATE
"); 161 pQ1NumuFSProtonRS.SaveTo(outFile, "pQ1NumuFSProtonRS
"); 162 pQ1NumuFSProtonWS.SaveTo(outFile, "pQ1NumuFSProtonWS
"); 163 pQ1NumuCVNProngRS.SaveTo(outFile, "pQ1NumuCVNProngRS
"); 164 pQ1NumuCVNProngWS.SaveTo(outFile, "pQ1NumuCVNProngWS
"); 165 pQ1NumuBDT3RS.SaveTo(outFile, "pQ1NumuBDT3RS
"); 166 pQ1NumuBDT3WS.SaveTo(outFile, "pQ1NumuBDT3WS
"); 167 sQ1NumuFSProtonRSNC.SaveTo(outFile, "sQ1NumuFSProtonRSNC
"); 168 sQ1NumuFSProtonRSNCAnti.SaveTo(outFile, "sQ1NumuFSProtonRSNCAnti
"); 169 sQ1NumuCVNProngRSNC.SaveTo(outFile, "sQ1NumuCVNProngRSNC
"); 170 sQ1NumuCVNProngRSNCAnti.SaveTo(outFile, "sQ1NumuCVNProngRSNCAnti
"); 171 sQ1NumuBDT3RSNC.SaveTo(outFile, "sQ1NumuBDT3RSNC
"); 172 sQ1NumuBDT3RSNCAnti.SaveTo(outFile, "sQ1NumuBDT3RSNCAnti
"); 173 sQ1NumuFSProtonWSNC.SaveTo(outFile, "sQ1NumuFSProtonWSNC
"); 174 sQ1NumuFSProtonWSNCAnti.SaveTo(outFile, "sQ1NumuFSProtonWSNCAnti
"); 175 sQ1NumuCVNProngWSNC.SaveTo(outFile, "sQ1NumuCVNProngWSNC
"); 176 sQ1NumuCVNProngWSNCAnti.SaveTo(outFile, "sQ1NumuCVNProngWSNCAnti
"); 177 sQ1NumuBDT3WSNC.SaveTo(outFile, "sQ1NumuBDT3WSNC
"); 178 sQ1NumuBDT3WSNCAnti.SaveTo(outFile, "sQ1NumuBDT3WSNCAnti
"); 181 sQ1NumuData_FSProtonRS.SaveTo(outFile, "sNumuData_FSProtonRS
"); 182 sQ1NumuData_FSProtonWS.SaveTo(outFile, "sNumuData_FSProtonWS
"); 183 sQ1NumuData_CVNProngRS.SaveTo(outFile, "sNumuData_CVNProngRS
"); 184 sQ1NumuData_CVNProngWS.SaveTo(outFile, "sNumuData_CVNProngWS
"); 185 sQ1NumuData_BDT3RS.SaveTo(outFile, "sNumuData_BDT3RS
"); 186 sQ1NumuData_BDT3WS.SaveTo(outFile, "sNumuData_BDT3WS
");
std::vector< double > quantiles(TH1D *h)
Cuts and Vars for the 2020 FD DiF Study.
Proxy for caf::StandardRecord.
void make_RHC_WrongSign_NumuQ1()
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.
Hold drift constants from current run.
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;})
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.