const SpillCut kIsCosmicSpill([](const caf::SRSpillProxy *sr){return(sr->mc.nnu==0);})
const Cut kSlcCompletenessCut([](const caf::SRSliceProxy *slc){if(slc->truth.index< 0) return false;return(kCompletness(slc) > 0.5);})
const Cut kIsNC([](const caf::SRSliceProxy *slc){return kHasMatchedNu(slc)&&slc->truth.isnc;})
Is this a Neutral Current event?
const Cut kTrueFiducialVolumeFDCryo1([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVol(slc->truth.position, fvfd_cryo1);})
const Cut kTrueFiducialVolumeND([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVolAbsX(slc->truth.position, fvndAbs);})
const Cut kIsCC([](const caf::SRSliceProxy *slc){return kHasMatchedNu(slc)&&slc->truth.iscc;})
const Cut kTrueActiveVolumeFDCryo1([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVol(slc->truth.position, avfd_cryo1);})
const Cut kIsNu([](const caf::SRSliceProxy *slc){if(slc->truth.index< 0) return false;return slc->truth.pdg > 0;})
process_name opflashCryoW ana
const Cut kIsNue([](const caf::SRSliceProxy *slc){return slc->truth.index >=0 &&abs(slc->truth.pdg)==12;})
const Cut kIsNutau([](const caf::SRSliceProxy *slc){return slc->truth.index >=0 &&abs(slc->truth.pdg)==16;})
const Cut kHasNu([](const caf::SRSliceProxy *slc){return slc->truth.index >=0;})
const SpillCut kIsNueSpill([](const caf::SRSpillProxy *sr){if(kIsCosmicSpill(sr)||!kIsSingleNuSpill(sr)) return false;return(std::abs(sr->mc.nu[0].pdg)==12);})
_Cut< caf::SRSliceProxy > Cut
const Cut kIsNumu([](const caf::SRSliceProxy *slc){return slc->truth.index >=0 &&abs(slc->truth.pdg)==14;})
const SpillCut kIsSingleNuSpill([](const caf::SRSpillProxy *sr){return(sr->mc.nnu< 2);})
const SpillCut kIsNCSpill([](const caf::SRSpillProxy *sr){if(kIsCosmicSpill(sr)||!kIsSingleNuSpill(sr)) return false;return((bool) sr->mc.nu[0].isnc);})
const Cut kTrueActiveVolumeND([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVolAbsX(slc->truth.position, avnd);})
const SpillCut kIsCCSpill([](const caf::SRSpillProxy *sr){if(kIsCosmicSpill(sr)||!kIsSingleNuSpill(sr)) return false;return((bool) sr->mc.nu[0].iscc);})
const SpillCut kIsNumuSpill([](const caf::SRSpillProxy *sr){if(kIsCosmicSpill(sr)||!kIsSingleNuSpill(sr)) return false;return(std::abs(sr->mc.nu[0].pdg)==14);})
const Cut kTrueActiveVolumeFDCryo2([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVol(slc->truth.position, avfd_cryo2);})
Template for Cut and SpillCut.
const Cut kIsAntiNu([](const caf::SRSliceProxy *slc){return kHasMatchedNu(slc)&&slc->truth.pdg< 0;})
Is this truly an antineutrino?
const Cut kVtxDistMagCut([](const caf::SRSliceProxy *slc){if(slc->truth.index< 0) return true;return(kTruthVtxDistMag(slc)< 1);})
const SpillCut kIsNutauSpill([](const caf::SRSpillProxy *sr){if(kIsCosmicSpill(sr)||!kIsSingleNuSpill(sr)) return false;return(std::abs(sr->mc.nu[0].pdg)==16);})
const Cut kTrueFiducialVolumeFDCryo2([](const caf::SRSliceProxy *slc){return kHasNu(slc)&&PtInVol(slc->truth.position, fvfd_cryo2);})