3 #include "CAFAna/Core/Cut.h"
const Cut kIsNumuCC(CCFlavSel(14, 14))
Select CC .
Cuts and Vars for the 2020 FD DiF Study.
bool operator()(const caf::SRProxy *sr) const
const NuTruthCut kIsCoh_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kCoh);})
const Cut kIsNumu([](const caf::SRProxy *sr){return(sr->mc.nnu==1 &&abs(sr->mc.nu[0].pdg)==14);})
const NuTruthCut kIsRes_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kRes);})
Proxy for caf::StandardRecord.
const Cut kIsAntiNu([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return sr->mc.nu[0].pdg< 0;})
Is this truly an antineutrino?
const Cut kIsBeamNue(CCFlavSel(12, 12))
Select CC .
const Cut kIsNumuApp(CCFlavSel(14, 12))
Select CC .
const Cut kIsNumuFromKaon([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && (abs(sr->mc.nu[0].beam.ptype)==321||sr->mc.nu[0].beam.ptype==310||sr->mc.nu[0].beam.ptype==311||sr->mc.nu[0].beam.ptype==130)&& abs(sr->mc.nu[0].pdg)==14);})
const Cut kIsVtxCont([](const caf::SRProxy *sr){return(sr->mc.nnu==1 &&sr->mc.nu[0].isvtxcont);})
const Cut kIsKaon([](const caf::SRProxy *sr){return(abs(sr->mc.nu[0].beam.ptype)==321||sr->mc.nu[0].beam.ptype==310||sr->mc.nu[0].beam.ptype==311||sr->mc.nu[0].beam.ptype==130);})
const NuTruthCut kIsTau_NT([](const caf::SRNeutrinoProxy *truth){return(abs(truth->pdg)==16);})
const Cut kIsNu([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return sr->mc.nu[0].pdg > 0;})
const NuTruthCut kIsDIS_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kDIS);})
const NuTruthCut kIsAntiNu_NT([](const caf::SRNeutrinoProxy *truth){return truth->pdg< 0;})
const Cut kIsTauFromE(CCFlavSel(16, 12))
Select CC .
const Cut kIsTauFromMu(CCFlavSel(16, 14))
Select CC .
const Cut kIsNC([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return!sr->mc.nu[0].iscc;})
Is this a Neutral Current event?
const Cut kIsMuon([](const caf::SRProxy *sr){return(abs(sr->mc.nu[0].beam.ptype)==13);})
const Cut kIsSig(CCFlavSel(12, 14))
Select CC .
const Cut kIsNue([](const caf::SRProxy *sr){return(sr->mc.nnu==1 &&abs(sr->mc.nu[0].pdg)==12);})
const Cut kIsNueFromPion([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && (abs(sr->mc.nu[0].beam.ptype)==211||sr->mc.nu[0].beam.ptype==111)&& abs(sr->mc.nu[0].pdg)==12);})
Helper for defining true CC event cuts.
CCFlavSel(int pdg, int pdgorig)
const NuTruthCut kIsQE_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kQE);})
Select truly quasielastic events.
const NuTruthCut kIsVtxCont_NT([](const caf::SRNeutrinoProxy *truth){return(truth->isvtxcont);})
const NuTruthCut kIsBeamNue_NT([](const caf::SRNeutrinoProxy *truth){return( truth->iscc && abs(truth->pdg)==12 && abs(truth->pdgorig)==12 );})
const NuTruthCut kIsNumuCC_NT([](const caf::SRNeutrinoProxy *truth){return( truth->iscc && abs(truth->pdg)==14 && abs(truth->pdgorig)==14 );})
const Cut kHasNeutrino([](const caf::SRProxy *sr){return(sr->mc.nnu!=0);})
Check if MC slice has neutrino information (useful for in-and-out tests)
const NuTruthCut kIsNC_NT([](const caf::SRNeutrinoProxy *truth){return!truth->iscc;})
const NuTruthCut kIsDytmanMEC_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kMEC);})
const Cut kIsNueFromMuon([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && abs(sr->mc.nu[0].beam.ptype)==13 && abs(sr->mc.nu[0].pdg)==12);})
const Cut kHasNu([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return true;})
const Cut kIsPion([](const caf::SRProxy *sr){return(abs(sr->mc.nu[0].beam.ptype)==211||sr->mc.nu[0].beam.ptype==111);})
const Cut kIsNumuFromMuon([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && abs(sr->mc.nu[0].beam.ptype)==13 && abs(sr->mc.nu[0].pdg)==14);})
const Cut kIsNueFromKaon([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && (abs(sr->mc.nu[0].beam.ptype)==321||sr->mc.nu[0].beam.ptype==310||sr->mc.nu[0].beam.ptype==311||sr->mc.nu[0].beam.ptype==130)&& abs(sr->mc.nu[0].pdg)==12);})
const NuTruthCut kIsSig_NT([](const caf::SRNeutrinoProxy *truth){return( truth->iscc && abs(truth->pdg)==12 && abs(truth->pdgorig)==14 );})
Template for Cut and SpillCut.
const Cut kIsNumuFromPion([](const caf::SRProxy *sr){return(sr->mc.nnu==1 && sr->mc.nu[0].iscc==1 && (abs(sr->mc.nu[0].beam.ptype)==211||sr->mc.nu[0].beam.ptype==111)&& abs(sr->mc.nu[0].pdg)==14);})