11 if(sr->
mc.
nnu == 0)
return false;
13 return !sr->
mc.
nu[0].iscc;
17 return (sr->
mc.
nnu == 1 &&
abs(sr->
mc.
nu[0].pdg) ==12);});
20 return (sr->
mc.
nnu == 1 &&
abs(sr->
mc.
nu[0].pdg) ==14);});
23 return (
abs(truth->
pdg) == 16);});
34 if(sr->
mc.
nnu == 0)
return false;
36 return (sr->
mc.
nu[0].iscc &&
70 if(sr->
mc.
nnu == 0)
return false;
72 return sr->
mc.
nu[0].pdg < 0;
77 if(sr->
mc.
nnu == 0)
return false;
79 return sr->
mc.
nu[0].pdg > 0;
84 if(sr->
mc.
nnu == 0)
return false;
91 return truth->
pdg < 0;
96 {
return (sr->
mc.
nnu != 0); }
122 return (sr->
mc.
nnu == 1 &&
123 sr->
mc.
nu[0].iscc ==1 &&
124 (
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) &&
136 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);
140 return (sr->
mc.
nnu == 1 &&
141 sr->
mc.
nu[0].iscc ==1 &&
142 (
abs(sr->
mc.
nu[0].beam.ptype) == 211 || sr->
mc.
nu[0].beam.ptype == 111) &&
147 return (
abs(sr->
mc.
nu[0].beam.ptype) == 211 || sr->
mc.
nu[0].beam.ptype == 111);
151 return (sr->
mc.
nnu == 1 &&
152 sr->
mc.
nu[0].iscc ==1 &&
153 abs(sr->
mc.
nu[0].beam.ptype) == 13 &&
158 return (
abs(sr->
mc.
nu[0].beam.ptype) == 13);
162 return (sr->
mc.
nnu == 1 &&
163 sr->
mc.
nu[0].iscc ==1 &&
164 (
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) &&
169 return (sr->
mc.
nnu == 1 &&
170 sr->
mc.
nu[0].iscc ==1 &&
171 (
abs(sr->
mc.
nu[0].beam.ptype) == 211 || sr->
mc.
nu[0].beam.ptype == 111) &&
176 return (sr->
mc.
nnu == 1 &&
177 sr->
mc.
nu[0].iscc ==1 &&
178 abs(sr->
mc.
nu[0].beam.ptype) == 13 &&
191 return(sr->
mc.
nnu==1 && sr->
mc.
nu[0].isvtxcont);
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);})
Proxy for caf::SRNeutrino.
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.
caf::Proxy< std::vector< caf::SRNeutrino > > nu
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 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);})
caf::Proxy< short int > nnu
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;})
_Cut< caf::SRNeutrinoProxy > NuTruthCut
Cut designed to be used over the nuTree, ie all neutrinos, not just those that got slices...
const NuTruthCut kIsDIS_NT([](const caf::SRNeutrinoProxy *truth){return(truth->mode==caf::kDIS);})
caf::Proxy< bool > isvtxcont
const NuTruthCut kIsAntiNu_NT([](const caf::SRNeutrinoProxy *truth){return truth->pdg< 0;})
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);})
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
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);})
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)
caf::Proxy< caf::SRTruthBranch > mc
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);})
caf::Proxy< short int > pdgorig
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);})
assert(nhit_max >=nhit_nbins)
const NuTruthCut kIsSig_NT([](const caf::SRNeutrinoProxy *truth){return( truth->iscc && abs(truth->pdg)==12 && abs(truth->pdgorig)==14 );})
caf::Proxy< short int > pdg
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);})
Cut CutFromNuTruthCut(const NuTruthCut &stc)