18 const double topcut = (
kCVNSSe(sr) >= hibin) ? 50 : 400;
67 std::cout <<
"ERROR::kNue2018SelectionBin. Looking for cvnProd3Train. Branch no longer exists." <<
std::endl;
86 assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 88 int anaBin = 9*selBin + nuEBin; 93 const Binning kNue2018Binning = Binning::Simple(27,0,27); 95 const Var kNue2018AnaBinMergedPeripheral([](const caf::SRProxy *sr){ 96 int anaBin = kNue2018AnaBin(sr); 97 anaBin = anaBin > 18 ? 20 : anaBin; 101 const Binning kNue2018BinningMergedPeripheral = Binning::Simple(23,0,23); 103 const HistAxis kNue2018AxisMergedPeripheral("NuE
Energy / Analysis Bin
", 104 kNue2018BinningMergedPeripheral, 105 kNue2018AnaBinMergedPeripheral); 107 const Var kNue2018AnaResBin([](const caf::SRProxy *sr){ 108 int selBin = kNue2018SelectionBin(sr); 109 float nuERes = (kNueEnergy2018(sr) - kTrueE(sr))/kTrueE(sr); 110 int nuEBin = (nuERes + 1)*9 ;//double binning for resolution 111 int anaBin = 18*selBin + nuEBin; 115 const HistAxis kNue2018ResAxis("NuE
Energy Resolution / Analysis Bin
", 116 Binning::Simple(54, 0, 54), kNue2018AnaResBin); 119 const Var kNue2018AnaSuperBin([](const caf::SRProxy *sr){ 121 if(kNue2018FDPeripheral(sr)) isPeri = 1 ; 125 //double cvn = sr->sel.cvnProd3Train.nueid; 128 const double cvnlow = kIsRHC(sr) ? kNue2018CVNRHCLowEdge : kNue2018CVNFHCLowEdge; 129 const double cvnhigh = kIsRHC(sr) ? kNue2018CVNRHCHighEdge : kNue2018CVNFHCHighEdge; 131 assert(cvn >= cvnlow && cvn<=1 && "Wrong
cvn value"); 133 float nuE = kNueEnergy2018(sr); 134 int nuEBin = nuE/0.5; 136 // assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 138 int cvnbin =(int)(cvn/cvnhigh);// cvn binning always do [) same for energy bin 140 cvnbin += isPeri;//peripheral shifted from highest to the last bin 142 int anaBin = 9*cvnbin + nuEBin; 146 const Binning kNue2018SuperBinning = Binning::Simple(27,0,27); 148 const HistAxis kNue2018SuperAxis("NuE
Energy / Analysis Bin
", 149 kNue2018SuperBinning,kNue2018AnaSuperBin); 151 const Var kNue2018AnaSuperBinMergedPeripheral([](const caf::SRProxy *sr){ 152 int anaBin = kNue2018AnaSuperBin(sr); 153 anaBin = anaBin > 18 ? 20: anaBin; 157 const Binning kNue2018SuperBinningMergedPeripheral = Binning::Simple(23,0,23); 159 const HistAxis kNue2018SuperAxisMergedPeripheral("NuE
Energy / Analysis Bin
", 160 kNue2018SuperBinningMergedPeripheral, 161 kNue2018AnaSuperBinMergedPeripheral); const Cut kNue2018CVNVsCosPIDFHCLP
const Cut kNue2018RHCCVNCutLP
Cuts and Vars for the 2020 FD DiF Study.
const Cut kNue2018RHCCVNCut
fvar< T > fabs(const fvar< T > &x)
const double kNue2018CVNFHCHighEdge
const Cut kNue2018CVNVsCosPIDRHC
const Cut kNue2018PeripheralPresel(kNue2018PeripheralPreselFunc)
Proxy for caf::StandardRecord.
const Cut kNue2017BasicPart(kNue2017BasicPartFunc)
const Cut kNue2018CVNVsCosPIDRHCLP
const Cut kIsFarDet([](const caf::SRProxy *sr){return sr->hdr.det==caf::kFARDET;})
Defines an enumeration for prong classification.
const Cut kNue2018CVNCut([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2018RHCCVNCut(sr);else return kNue2018FHCCVNCut(sr);})
const Cut kNue2018FHCCVNCutLP
const Var kNue2018AnaBin([](const caf::SRProxy *sr){int selBin=kNue2018SelectionBin(sr);float nuE=kNueEnergy2018(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;return anaBin;})
Use this Analysis Binning for Ana2018, official Binning.
caf::Proxy< float > closestslicetime
const Cut kNue2018CVNVsCosPIDLP([](const caf::SRProxy *sr){if(kNue2018CVNVsCosPID(sr)) return false;if(kIsRHC(sr)) return kNue2018CVNVsCosPIDRHCLP(sr);else return kNue2018CVNVsCosPIDFHCLP(sr);})
const XML_Char int const XML_Char * value
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 kNue2018SelectionBin([](const caf::SRProxy *sr){bool isPeri=kNue2018FDPeripheral(sr);double cvn=sr->sel.cvnProd3Train.nueid;if(isPeri) return float(3.5);if(cvn > 0.75 &&cvn< 0.87) return float(0.5);if(cvn > 0.87 &&cvn< 0.95) return float(1.5);if(cvn > 0.95) return float(2.5);return float(-0.5);})
const Cut kNue2018CVNVsCosPIDFHC
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
const Var kNue2018SelectionBin([](const caf::SRProxy *sr){bool isPeri=kNue2018FDPeripheral(sr);if(isPeri) return float(2.5);std::cout<< "ERROR::kNue2018SelectionBin. Looking for cvnProd3Train. Branch no longer exists."<< std::endl;abort();return float(-5.0);})
caf::Proxy< float > closestsliceminfromtop
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 kNue2018FDPeripheral(kNue2018FDPeripheralFunc)
const Cut kNue2018CVNCutLP([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2018RHCCVNCutLP(sr);else return kNue2018FHCCVNCutLP(sr);})
const Cut kNue2018CVNVsCosPID(kNue2018CVNVsCosPIDFunc)
const Cut kIsRHC([](const caf::SRProxy *sr){return sr->spill.isRHC;})
bool kNue2018CVNVsCosPIDFunc(const caf::SRProxy *sr)
bool kNue2018PeripheralPreselFunc(const caf::SRProxy *sr)
caf::Proxy< caf::SRSlice > slc
caf::Proxy< float > closestslicemindist
assert(nhit_max >=nhit_nbins)
const double kNue2018CVNRHCHighEdge
const Cut kNearestSliceCosRej2018([](const caf::SRProxy *sr){const double hibin=kIsRHC(sr)?kNue2018CVNRHCHighEdge:kNue2018CVNFHCHighEdge;const double topcut=(kCVNSSe(sr) >=hibin)?50:400;return(fabs(sr->slc.closestslicetime) >=100|| sr->slc.closestsliceminfromtop >=topcut|| sr->slc.closestslicemindist >=500);})
const Cut kNue2018CorePart
Template for Cut and SpillCut.
bool kNue2018FDPeripheralFunc(const caf::SRProxy *sr)
Use this cut for the full FD Peripheral sample, the same for RHC and FHC.
const Cut kNue2018FHCCVNCut