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 pQ3NumuFSProtonRS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND0 && HadEFracQuantCuts[2],kNoShift,wei); 113 PredictionNoOsc pQ3NumuFSProtonWS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND0 && HadEFracQuantCuts[2],kNoShift,wei); 114 PredictionNoOsc pQ3NumuCVNProngRS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND1 && HadEFracQuantCuts[2],kNoShift,wei); 115 PredictionNoOsc pQ3NumuCVNProngWS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND1 && HadEFracQuantCuts[2],kNoShift,wei); 116 PredictionNoOsc pQ3NumuBDT3RS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectRSNumuND2 && HadEFracQuantCuts[2],kNoShift,wei); 117 PredictionNoOsc pQ3NumuBDT3WS(ld_numuRHC,kNumuCCOptimisedAxis,kSelectWSNumuND2 && HadEFracQuantCuts[2],kNoShift,wei); 118 // Splitting into NC from nu and antinu using spectra for this analysis 119 Spectrum sQ3NumuFSProtonRSNC(ld_numuRHC,kNumuCCOptimisedAxis, 120 kSelectRSNumuND0 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 121 Spectrum sQ3NumuFSProtonRSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 122 kSelectRSNumuND0 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 123 Spectrum sQ3NumuCVNProngRSNC(ld_numuRHC,kNumuCCOptimisedAxis, 124 kSelectRSNumuND1 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 125 Spectrum sQ3NumuCVNProngRSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 126 kSelectRSNumuND1 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 127 Spectrum sQ3NumuBDT3RSNC(ld_numuRHC,kNumuCCOptimisedAxis, 128 kSelectRSNumuND2 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 129 Spectrum sQ3NumuBDT3RSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 130 kSelectRSNumuND2 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 131 Spectrum sQ3NumuFSProtonWSNC(ld_numuRHC,kNumuCCOptimisedAxis, 132 kSelectWSNumuND0 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 133 Spectrum sQ3NumuFSProtonWSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 134 kSelectWSNumuND0 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 135 Spectrum sQ3NumuCVNProngWSNC(ld_numuRHC,kNumuCCOptimisedAxis, 136 kSelectWSNumuND1 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 137 Spectrum sQ3NumuCVNProngWSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 138 kSelectWSNumuND1 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 139 Spectrum sQ3NumuBDT3WSNC(ld_numuRHC,kNumuCCOptimisedAxis, 140 kSelectWSNumuND2 && kIsNC && !kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 141 Spectrum sQ3NumuBDT3WSNCAnti(ld_numuRHC,kNumuCCOptimisedAxis, 142 kSelectWSNumuND2 && kIsNC && kIsAntiNu && HadEFracQuantCuts[2],kNoShift,wei); 144 // ------------------------------------------------------------------------------------------------ 146 Spectrum sQ3NumuData_FSProtonRS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND0 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 147 Spectrum sQ3NumuData_FSProtonWS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND0 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 148 Spectrum sQ3NumuData_CVNProngRS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND1 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 149 Spectrum sQ3NumuData_CVNProngWS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND1 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 150 Spectrum sQ3NumuData_BDT3RS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectRSNumuND2 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 151 Spectrum sQ3NumuData_BDT3WS(ld_dataRHCNumu,kNumuCCOptimisedAxis,kSelectWSNumuND2 && HadEFracQuantCuts[2],kNoShift,kUnweighted); 152 // ------------------------------------------------------------------------------------------------ 158 // Save the predictions 159 TFile *outFile = new TFile("./PredictionsAndDataWrongSignNumuQ3.root
","RECREATE
"); 161 pQ3NumuFSProtonRS.SaveTo(outFile, "pQ3NumuFSProtonRS
"); 162 pQ3NumuFSProtonWS.SaveTo(outFile, "pQ3NumuFSProtonWS
"); 163 pQ3NumuCVNProngRS.SaveTo(outFile, "pQ3NumuCVNProngRS
"); 164 pQ3NumuCVNProngWS.SaveTo(outFile, "pQ3NumuCVNProngWS
"); 165 pQ3NumuBDT3RS.SaveTo(outFile, "pQ3NumuBDT3RS
"); 166 pQ3NumuBDT3WS.SaveTo(outFile, "pQ3NumuBDT3WS
"); 167 sQ3NumuFSProtonRSNC.SaveTo(outFile, "sQ3NumuFSProtonRSNC
"); 168 sQ3NumuFSProtonRSNCAnti.SaveTo(outFile, "sQ3NumuFSProtonRSNCAnti
"); 169 sQ3NumuCVNProngRSNC.SaveTo(outFile, "sQ3NumuCVNProngRSNC
"); 170 sQ3NumuCVNProngRSNCAnti.SaveTo(outFile, "sQ3NumuCVNProngRSNCAnti
"); 171 sQ3NumuBDT3RSNC.SaveTo(outFile, "sQ3NumuBDT3RSNC
"); 172 sQ3NumuBDT3RSNCAnti.SaveTo(outFile, "sQ3NumuBDT3RSNCAnti
"); 173 sQ3NumuFSProtonWSNC.SaveTo(outFile, "sQ3NumuFSProtonWSNC
"); 174 sQ3NumuFSProtonWSNCAnti.SaveTo(outFile, "sQ3NumuFSProtonWSNCAnti
"); 175 sQ3NumuCVNProngWSNC.SaveTo(outFile, "sQ3NumuCVNProngWSNC
"); 176 sQ3NumuCVNProngWSNCAnti.SaveTo(outFile, "sQ3NumuCVNProngWSNCAnti
"); 177 sQ3NumuBDT3WSNC.SaveTo(outFile, "sQ3NumuBDT3WSNC
"); 178 sQ3NumuBDT3WSNCAnti.SaveTo(outFile, "sQ3NumuBDT3WSNCAnti
"); 181 sQ3NumuData_FSProtonRS.SaveTo(outFile, "sNumuData_FSProtonRS
"); 182 sQ3NumuData_FSProtonWS.SaveTo(outFile, "sNumuData_FSProtonWS
"); 183 sQ3NumuData_CVNProngRS.SaveTo(outFile, "sNumuData_CVNProngRS
"); 184 sQ3NumuData_CVNProngWS.SaveTo(outFile, "sNumuData_CVNProngWS
"); 185 sQ3NumuData_BDT3RS.SaveTo(outFile, "sNumuData_BDT3RS
"); 186 sQ3NumuData_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 SetSpillCut(const SpillCut &cut)
void make_RHC_WrongSign_NumuQ3()
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.