2 #include "CAFAna/Core/Cut.h" 12 #include "TParticlePDG.h" 19 if( sr->
mc.
nnu == 0)
return false;
20 if (sr->
vtx.nelastic == 0)
return false;
25 return (sr->
vtx.nelastic==1);
31 if(sr->
mc.
nnu==0)
return false;
32 if(sr->
vtx.nelastic==0)
return false;
43 if(sr->
mc.
nnu==0)
return false;
44 if(sr->
vtx.nelastic==0)
return false;
62 if(sr->
mc.
nnu==0)
return false;
63 if(sr->
vtx.nelastic==0)
return false;
101 return(nu->
iscc == 0);
110 return(nu->
iscc == 1);
117 float MassOfPi0=0.135;
121 if(nu->
prim.size() == 0)
return false;
125 int nbofprim=nu->
prim.size();
127 for(
int i = 0;
i < nbofprim;
i++){
128 if(nu->
prim[
i].pdg == 111){
130 kinetic = en - MassOfPi0;
133 if(kinetic > 0.1)
return true;
142 float MassOfPi0=0.135;
146 if(nu->
prim.size() == 0)
return false;
150 int nbofprim=nu->
prim.size();
152 for(
int i = 0;
i < nbofprim;
i++){
153 if(nu->
prim[
i].pdg == 111){
155 kinetic = en - MassOfPi0;
158 if(kinetic > 0.0)
return true;
168 if(sr->
mc.
nnu == 0)
return false;
169 if(sr->
vtx.nelastic == 0)
return false;
178 const TVector3
vtxmin(-130,-150,225);
179 const TVector3
vtxmax(160,120,950);
234 if(sr->
mc.
nnu==0)
return false;
236 if(sr->
vtx.nelastic == 0)
return false;
242 if (
hit>15)
return true;
305 {
"Remid",
kIs1Vtx && kVtxInFiducial && kShwStopContainment && kIs2Prongs &&
kIsReMId},
306 {
"PreSel", kIsPreSel},
311 {
"Sigall",
ktMC && kIsSignalNoEnThrs},
312 {
"Sig",
ktMC && kIsSignal},
313 {
"RESSig",
ktMC && kIsRESSignal},
314 {
"DISSig",
ktMC && kIsDISSignal},
315 {
"OthrSig",
ktMC && kIsOtherSignal},
316 {
"Bkg",
ktMC && kIsBkg},
317 {
"CCBkg",
ktMC && kIsCCBkg },
318 {
"NCBkg",
ktMC && kIsNCBkg },
319 {
"CCRESBkg",
ktMC && kIsCCRESBkg},
320 {
"NCRESBkg",
ktMC && kIsNCRESBkg},
321 {
"CCDISBkg",
ktMC && kIsCCDISBkg},
322 {
"NCDISBkg",
ktMC && kIsNCDISBkg},
323 {
"CCOtherBkg",
ktMC && kIsCCOtherBkg},
324 {
"NCOtherBkg",
ktMC && kIsNCOtherBkg },
325 {
"RESBkg",
ktMC && kIsRESBkg },
326 {
"DISBkg",
ktMC && kIsDISBkg},
327 {
"OthrBkg",
ktMC && kIsOtherBkg},
caf::Proxy< size_t > npng
caf::Proxy< unsigned int > nshwlid
caf::Proxy< caf::SRFuzzyK > fuzzyk
Cuts and Vars for the 2020 FD DiF Study.
const SpillTruthCut kIsNCurrentST([](const caf::SRNeutrinoProxy *nu){return(nu->iscc==0);})
const Cut kIs1Vtx([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;return(sr->vtx.nelastic==1);})
const Cut ktMC([](const caf::SRProxy *sr){if(sr->hdr.ismc) return true;return false;})
const SelDef cut_flow[knumcutflow]
const SpillTruthCut kIsSignalNoEnThrsST
const Cut kcut15hits([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;float hit;hit=sr->slc.nhit;if(hit >15) return true;return false;})
const SelDef chns[knumchns]
const TVector3 vtxmin(-130,-176, 225)
Proxy for caf::SRNeutrino.
caf::Proxy< caf::SRHeader > hdr
Proxy for caf::StandardRecord.
const Cut kIsSignalNoEnThrs
const SpillTruthCut kModeDIS([](const caf::SRNeutrinoProxy *sr){return(sr->mode==caf::kDIS);})
const SpillTruthCut kIsMyNueST([](const caf::SRNeutrinoProxy *nu){return(nu->pdg==12 &&nu->pdgorig==12);})
const SpillTruthCut kIsPi0ST([](const caf::SRNeutrinoProxy *truth){return(!truth->iscc && truth->pdg==111 && truth->pdgorig==111);})
const NuTruthCut kTrueFiducialST([](const caf::SRNeutrinoProxy *sr){return(sr->vtx.X()< vtxmax.X()&& sr->vtx.X() > vtxmin.X()&& sr->vtx.Y() > vtxmin.Y()&& sr->vtx.Y()< vtxmax.Y()&& sr->vtx.Z() > vtxmin.Z()&& sr->vtx.Z()< vtxmax.Z());})
caf::Proxy< short int > nnu
const SpillTruthCut kModeRES([](const caf::SRNeutrinoProxy *sr){return(sr->mode==caf::kRes);})
const SpillTruthCut kIsMyNeutrinoST
const SpillTruthCut kModeQE([](const caf::SRNeutrinoProxy *sr){return(sr->mode==caf::kQE);})
caf::Proxy< caf::SRElastic > elastic
caf::Proxy< caf::SRVector3D > vtx
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
const SpillTruthCut kIsSignalST
caf::Proxy< unsigned int > nhit
const Cut kShwStopContainment([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;for(unsigned int i=0;i< sr->vtx.elastic[0].fuzzyk.nshwlid;i++){if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x)< -180.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x) > 180.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.y)< -180.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.y) > 180.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.z)< 200.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.z) > 1200.0) return false;}return true;})
const SpillTruthCut kIsMyNumuST([](const caf::SRNeutrinoProxy *nu){return(nu->pdg==14 &&nu->pdgorig==14);})
const SpillTruthCut kIsCCurrentST([](const caf::SRNeutrinoProxy *nu){return(nu->iscc==1);})
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
const SpillTruthCut kModeCOH([](const caf::SRNeutrinoProxy *sr){return(sr->mode==caf::kCoh);})
caf::Proxy< caf::SRRemid > remid
const SpillTruthCut kIsAllPi0ST([](const caf::SRNeutrinoProxy *nu){float MassOfPi0=0.135;float kinetic=-10;float en=-99;if(nu->prim.size()==0) return false; int nbofprim=nu->prim.size();for(int i=0;i< nbofprim;i++){if(nu->prim[i].pdg==111){en=nu->prim[i].p.E;kinetic=en-MassOfPi0;}}if(kinetic > 0.0) return true;return false;})
const Cut kIs2Prongs([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;return(sr->vtx.elastic[0].fuzzyk.npng==2);})
caf::Proxy< caf::SRTruthBranch > mc
caf::Proxy< short int > pdgorig
caf::Proxy< caf::SRSlice > slc
const Cut kVtxInFiducial([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;if(sr->vtx.elastic[0].vtx.x< -80) return false;if(sr->vtx.elastic[0].vtx.x > 120) return false;if(sr->vtx.elastic[0].vtx.y< -148) return false;if(sr->vtx.elastic[0].vtx.y > 60) return false;if(sr->vtx.elastic[0].vtx.z< 225) return false;if(sr->vtx.elastic[0].vtx.z > 950) return false;return true;})
const Cut kTrueVtxInFiducial
caf::Proxy< caf::SRVector3D > vtx
assert(nhit_max >=nhit_nbins)
caf::Proxy< short int > pdg
caf::Proxy< caf::SRIDBranch > sel
Template for Cut and SpillCut.
caf::Proxy< caf::SRVertexBranch > vtx
const TVector3 vtxmax(160, 160, 1000)
caf::Proxy< std::vector< caf::SRTrueParticle > > prim
const Cut kIsReMId([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;return(sr->sel.remid.pid< 0.36);})