5 #include "CAFAna/Core/Cut.h" 16 #include "TParticlePDG.h" 33 float MassOfPi0=0.135;
38 if(sr->
vtx.nelastic == 0)
47 if(sr->
mc.
nu[0].prim.size() == 0)
51 int nbofprim=sr->
mc.
nu[0].prim.size();
54 for(
int i = 0;
i < nbofprim;
i++)
56 if(sr->
mc.
nu[0].prim[
i].pdg == 111)
58 en= sr->
mc.
nu[0].prim[
i].p.E;
62 if(en > 0.3){ countpi0++;
68 if(countpi0 > 0)
return true;
78 return (!truth->
iscc &&
85 float MassOfPi0=0.135;
90 if(sr->
vtx.nelastic == 0)
99 if(sr->
mc.
nu[0].prim.size() == 0)
103 int nbofprim=sr->
mc.
nu[0].prim.size();
107 for(
int i = 0;
i < nbofprim;
i++)
109 if(sr->
mc.
nu[0].prim[
i].pdg == 111)
111 en= sr->
mc.
nu[0].prim[
i].p.E;
116 if(en <= 0.3 && en > 0){ countpi0L++;
122 if(countpi0 > 0 && (countpi0L == countpi0))
return true;
135 float MassOfPi0=0.135;
140 if(sr->
vtx.nelastic == 0 && sr->
mc.
nnu==0)
return false;
142 reco= (totEn-MassOfPi0);
143 if (reco > 0.5)
return true;
150 if(sr->
mc.
nnu == 0)
return false;
151 if(sr->
vtx.nelastic == 0)
return false;
156 float MassOfPi0=0.135;
166 totEn=(Png1En+Png2En+Png3En);
170 if ( totEn==0)
return false;
172 if ( totEn > 0.5 && totEn< 0.3)
return true;
190 TVector3
vtxmax(180,180,1000);
191 TVector3
vtxmin(-180,-180,50);
194 bool isFiducial = (
trk.start.X() <
vtxmax.X() &&
207 if(sr->
mc.
nnu==0)
return false;
209 if(sr->
vtx.nelastic == 0)
return false;
213 if (sr->
mc.
nu[0].vtx.x < -130)
return false;
214 if (sr->
mc.
nu[0].vtx.x > 160)
return false;
215 if (sr->
mc.
nu[0].vtx.y < -176)
return false;
216 if (sr->
mc.
nu[0].vtx.y > 160)
return false;
217 if (sr->
mc.
nu[0].vtx.z < 225)
return false;
218 if (sr->
mc.
nu[0].vtx.z > 1000)
return false;
223 const TVector3
vtxmin(-130,-176,225);
224 const TVector3
vtxmax(160,160,1000);
242 if(sr->
vtx.nelastic == 0)
return false;
243 if(sr->
mc.
nnu == 0)
return false;
245 return(sr->
mc.
nu[0].pdg == 14);
287 if(sr->
mc.
nnu==0)
return false;
288 if(sr->
vtx.nelastic==0)
return false;
306 if(sr->
mc.
nnu==0)
return false;
307 if(sr->
vtx.nelastic==0)
return false;
335 int nCVNPhotonsH = 0;
337 if(sr->
vtx.nelastic == 0)
return false;
342 for(
int pngid = 0; pngid < nbofprongs && (nbofprongs == 1); pngid++){
345 double prPID = sr->vtx.elastic[0].fuzzyk.png[pngid].cvnpart.photonid;
349 if(prPID >=0.7 && prPID > 0)
353 if (nCVNPhotons > 0 && (nCVNPhotonsH==nCVNPhotons))
return true;
359 if(sr->
vtx.nelastic == 0)
return false;
365 if(prPID >=0.7)
return true;
371 if(sr->
vtx.nelastic == 0)
return false;
377 if(prPID >=0.9)
return true;
382 if(sr->
vtx.nelastic == 0)
return false;
388 if(prPID <=0.2)
return true;
399 if(sr->
vtx.nelastic == 0)
return false;
405 if(
abs(GammaPID) == 22 &&
abs(Pi0PID) == 111 )
return true;
412 if(sr->
vtx.nelastic == 0)
return false;
418 if(
abs(GammaPID) == 22 &&
abs(Pi0PID) == 111 )
return true;
435 if(sr->
mc.
nnu == 0)
return false;
436 if(sr->
vtx.nelastic == 0)
return false;
450 if(sr->
vtx.nelastic == 0)
return false;
451 if(sr->
mc.
nnu==0)
return false;
457 return (sr->
mc.
nu[0].iscc == 0);
463 if(sr->
vtx.nelastic == 0)
return false;
464 if(sr->
mc.
nnu==0)
return false;
470 return (sr->
mc.
nu[0].iscc == 1);
477 if(sr->
mc.
nnu == 0)
return false;
478 if(sr->
vtx.nelastic == 0)
return false;
479 if(sr->
mc.
nu[0].prim.size() == 0)
return false;
480 int nbofprim=sr->
mc.
nu[0].prim.size();
483 for(
int i=0;
i<nbofprim;
i++)
485 if(sr->
mc.
nu[0].prim[
i].pdg==111) countpi++;
487 if (countpi > 0 && sr->
mc.
nu[0].iscc)
return true;
494 if(sr->
mc.
nnu == 0)
return false;
495 if(sr->
vtx.nelastic == 0)
return false;
496 if(sr->
mc.
nu[0].prim.size() == 0)
return false;
497 int nbofprim=sr->
mc.
nu[0].prim.size();
500 for(
int i=0;
i<nbofprim;
i++)
502 if(sr->
mc.
nu[0].prim[
i].pdg==111) countpi++;
504 if (countpi > 0 && sr->
mc.
nu[0].iscc==0)
return true;
513 if(sr->
mc.
nnu == 0)
return false;
514 if(sr->
vtx.nelastic == 0)
return false;
515 if(sr->
mc.
nu[0].prim.size() == 0)
return false;
516 int nbofprim=sr->
mc.
nu[0].prim.size();
519 for(
int i=0;
i<nbofprim;
i++)
521 if(sr->
mc.
nu[0].prim[
i].pdg==111) countpi++;
523 if (countpi == 0 && sr->
mc.
nu[0].iscc)
return true;
530 if(sr->
mc.
nnu == 0)
return false;
531 if(sr->
vtx.nelastic == 0)
return false;
532 if(sr->
mc.
nu[0].prim.size() == 0)
return false;
533 int nbofprim=sr->
mc.
nu[0].prim.size();
536 for(
int i=0;
i<nbofprim;
i++)
538 if(sr->
mc.
nu[0].prim[
i].pdg==111) countpi++;
540 if (countpi == 0 && sr->
mc.
nu[0].iscc==0)
return true;
547 float MassOfPi0=0.135;
550 if(sr->
mc.
nnu == 0)
return false;
551 if(sr->
vtx.nelastic == 0)
return false;
552 if(sr->
mc.
nu[0].prim.size() == 0)
return false;
553 int nbofprim=sr->
mc.
nu[0].prim.size();
555 for(
int i = 0;
i < nbofprim;
i++)
557 if(sr->
mc.
nu[0].prim[
i].pdg == 111)
559 en= sr->
mc.
nu[0].prim[
i].p.E;
560 kinetic = en - MassOfPi0;
561 if(kinetic > 0.5) countpi++;
564 if (countpi == 0 && !sr->
mc.
nu[0].iscc)
return true;
594 if(sr->
vtx.nelastic == 0 && sr->
mc.
nnu == 0)
return false;
595 return (sr->
vtx.nelastic==0);
606 if(sr->
mc.
nnu==0)
return false;
607 if(sr->
vtx.nelastic==0)
return false;
622 if(sr->
mc.
nnu==0)
return false;
623 if(sr->
vtx.nelastic==0)
return false;
634 if(sr->
mc.
nnu==0)
return false;
635 if(sr->
vtx.nelastic==0)
return false;
668 float MassOfPi0=0.135;
673 if(sr->
vtx.nelastic == 0)
682 if(sr->
mc.
nu[0].prim.size() == 0)
686 int nbofprim=sr->
mc.
nu[0].prim.size();
689 for(
int i = 0;
i < nbofprim;
i++)
691 if(sr->
mc.
nu[0].prim[
i].pdg == 111)
693 en= sr->
mc.
nu[0].prim[
i].p.E;
696 if(en >
fPi0) countpi0++;
700 if(countpi0 > 0)
return true;
724 float MassOfPi0=0.135;
729 if(sr->
vtx.nelastic == 0)
738 if(sr->
mc.
nu[0].prim.size() == 0)
742 int nbofprim=sr->
mc.
nu[0].prim.size();
746 for(
int i = 0;
i < nbofprim;
i++)
748 if(sr->
mc.
nu[0].prim[
i].pdg == 111)
750 en= sr->
mc.
nu[0].prim[
i].p.E;
754 if(en <= fPi0L && en > 0) countpi0L++;
758 if(countpi0 > 0 && (countpi0L == countpi0))
return true;
773 if(sr->
mc.
nnu==0)
return false;
775 if(sr->
vtx.nelastic == 0)
return false;
781 if (
hit>15)
return true;
970 TVector3
vtxmax(fFid,fFid,1000);
971 TVector3
vtxmin(-fFid,-fFid,50);
973 bool isFiducial = (trk.
start.
X() < vtxmax.X() &&
974 trk.
start.
X() > vtxmin.X() &&
975 trk.
start.
Y() > vtxmin.Y() &&
976 trk.
start.
Y() < vtxmax.Y() &&
977 trk.
start.
Z() > vtxmin.Z() &&
978 trk.
start.
Z() < vtxmax.Z());
1211 if(sr->
vtx.nelastic==0)
return false;
1228 if(sr->
vtx.nelastic==0)
return false;
1248 if(sr->
vtx.nelastic==0)
return false;
const Cut OptiCutFid3Pi01
caf::Proxy< size_t > npng
const Cut OptiCutFid7Pi01Png2
const Cut k3ProngNCCalEPi0
const Cut NoCutopti6Pi01Png2
caf::Proxy< unsigned int > nshwlid
const Cut kPi0L1(fIsPi0Variable(0.635))
const Cut kPi02(fIsPi0Variable(0.3))
const Cut OptiCutFid10Pi01
const Cut OptiCutFid10TPPng2
const Cut OptiCutFid11TPPng2
const Cut NoCutopti11Pi01
const Cut OptiCutFid2Pi02Png2
const Cut NoCutopti10Pi02
const Cut OptiCutFid8Pi01
const Cut NoCutopti9Pi02Png2
const Cut NoCutopti5Pi02Png2
const Cut OptiCutFid8Pi02Png2Bkg
const Cut kCCurrent([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->mc.nnu==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->mc.nu[0].iscc==1);})
const Cut OptiCutFid1Pi02LPng2Bkg
caf::Proxy< caf::SRFuzzyK > fuzzyk
const Cut kPi0L2(fIsPi0Variable(0.3))
const Cut OptiCutFid1Pi01LPng2Bkg
const Cut OptiCutFid3Pi02Png2Bkg
Cuts and Vars for the 2020 FD DiF Study.
const Cut kIsFid6(fIsFiducialVariable(130))
const Cut k2ProngPreSel3CVN
caf::Proxy< float > stoptop
const Cut kIsFid9(fIsFiducialVariable(160))
const Cut kIsFid11(fIsFiducialVariable(180))
const Cut OptiCutFid4Pi02Png2Bkg
const Cut OptiCutFid6TPPng2
caf::Proxy< int > kalfwdcellnd
const Cut kNumuTightContainND([](const caf::SRProxy *sr){if(sr->vtx.nelastic< 1) return false;int ibesttrk=kBestTrack(sr);for(unsigned int i=0;i< sr->vtx.elastic[0].fuzzyk.nshwlid;++i){TVector3 start=sr->vtx.elastic[0].fuzzyk.png[i].shwlid.start;TVector3 stop=sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop;if(std::min(start.X(), stop.X())< -180.0) return false;if(std::max(start.X(), stop.X()) > 180.0) return false;if(std::min(start.Y(), stop.Y())< -180.0) return false;if(std::max(start.Y(), stop.Y()) > 180.0) return false;if(std::min(start.Z(), stop.Z())< 20.0) return false;if(std::max(start.Z(), stop.Z()) > 1525.0) return false;}if(sr->trk.kalman.ntracks< 1) return false;for(int i=0;i< int(sr->trk.kalman.ntracks);++i){if(i==ibesttrk) continue;else if(sr->trk.kalman.tracks[i].start.Z() > 1275|| sr->trk.kalman.tracks[i].stop.Z() > 1275) return false;}if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;return((sr->trk.kalman.tracks[ibesttrk].stop.Z()< 1275 ||sr->trk.kalman.tracks[ibesttrk].trkyposattrans< 55) &&sr->trk.kalman.tracks[ibesttrk].trkfwdcellnd > 5 &&sr->trk.kalman.tracks[ibesttrk].trkbakcellnd > 10);})
caf::Proxy< float > ndhadcaltranE
caf::Proxy< float > stopfront
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 Cut kreco([](const caf::SRProxy *sr){float MassOfPi0=0.135;float kinetic=-10;float en=-99;float totEn;float reco;if(sr->vtx.nelastic==0 &&sr->mc.nnu==0) return false;totEn=(sr->vtx.elastic[0].fuzzyk.png[0].shwlid.calE);reco=(totEn-MassOfPi0);if(reco > 0.5) return true;return false;})
caf::Proxy< unsigned int > idxremid
const TVector3 vtxmin(-130,-176, 225)
const Cut OptiCutFid11Pi01
caf::Proxy< size_t > ntracks
Proxy for caf::SRNeutrino.
const Cut OptiCutFid7Pi02Png2Bkg
const Cut NoCutopti2Pi01Png2
const Cut NoCutopti3Pi01Png2
const Cut kPreSelectTightCalE
const Cut k2ProngsData([](const caf::SRProxy *sr){ if(sr->vtx.nelastic==0) return false; 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);})
const Cut k3ProngPreSelPDG
caf::Proxy< caf::SRContain > contain
caf::Proxy< caf::SRNumuEnergy > numu
Proxy for caf::StandardRecord.
const Cut NoCutopti11Pi02Png2
const Cut kIsFid4(fIsFiducialVariable(110))
caf::Proxy< std::vector< caf::SRNeutrino > > nu
caf::Proxy< float > startbottom
const Cut NoCutopti1Pi01Png2
FIDUCIAL OPTIMIZATION ANALYSYS 2 PRONG NO CUTS 0.635 GeV THRESHOLD///.
const Cut kIsRecoKinEn([](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;float MassOfPi0=0.135;float totEn;float RecoKE;float Png1En=-99;float Png2En=-99;float Png3En=-99;Png1En=sr->vtx.elastic[0].fuzzyk.png[0].shwlid.calE;Png2En=sr->vtx.elastic[0].fuzzyk.png[1].shwlid.calE;totEn=(Png1En+Png2En+Png3En);if(totEn==0) return false;if(totEn > 0.5 &&totEn< 0.3) return true;return false;})
const Cut NoCutopti1Pi01
FIDUCIAL OPTIMIZATION ANALYSYS 3 PRONG NO CUTS 0.635 GeV THRESHOLD///.
const Cut TrueSignalVtxFid
FIDUCIAL OPTIMIZATION ANALYSYS 2 PRONG NO CUTS 0.3 GeV THRESHOLD///.
const Cut NoCutopti4Pi01Png2
const Cut OptiCutFid7Pi02Png2
const Cut kNCurrent([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->mc.nnu==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->mc.nu[0].iscc==0);})
CC and NC current cuts///.
const Cut OptiCutFid5Pi02Png2
const Cut NoCutopti8Pi02Png2
const Cut OptiCutFid11Pi02Png2
const Cut k2ProngPreSel2CVNData
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());})
const Cut kPreSelectTightCalERemID
caf::Proxy< short int > nnu
const Cut OptiCutFid10Pi02Png2Bkg
const Cut k3ProngPreSel2CVN
const Cut kNumu([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->mc.nnu==0) return false;return(sr->mc.nu[0].pdg==14);})
const Cut kNpCVN3gammaID([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;double prPID=sr->vtx.elastic[0].fuzzyk.png[1].cvnpart.photonid;if(prPID<=0.2) return true;return false;})
caf::Proxy< caf::SREnergyBranch > energy
const Cut kIsSignal01L
FIDUCIAL OPTIMIZATION ANALYSIS 2 PRONG TOTAL PRESELECTION CUTS///.
caf::Proxy< float > starttop
const Cut kIsCCNonPi02PRem
const Cut OptiCutFid9Pi02
const Cut OptiCutFid10Pi01Png2
const Cut OptiCutFid8Pi01Png2
const Cut kIsNCNonPi02PRem
caf::Proxy< float > stopback
const Cut kIsNCPi02PNoCut
const Cut OptiCutFid5Pi02
const Cut NoCutopti11Pi02
const Cut OptiCutFid5Pi02Png2Bkg
const Cut OptiCutFid2Pi01Png2
const Cut kIsFid7(fIsFiducialVariable(140))
const Cut kIsFid8(fIsFiducialVariable(150))
const Cut OptiCutFid7Pi01
caf::Proxy< caf::SRElastic > elastic
caf::Proxy< caf::SRVector3D > vtx
caf::Proxy< float > startback
caf::Proxy< caf::SRNueCosRej > nuecosrej
const Cut NoCutopti9Pi01Png2
Track finder for cosmic rays.
caf::Proxy< int > kalbakcellnd
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
const Cut OptiCutFid10Pi02Png2
const Cut OptiCutFid6Pi01Png2
const Cut k2Prongs([](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);})
const Cut kIsFid10(fIsFiducialVariable(170))
caf::Proxy< unsigned int > nhit
caf::Proxy< float > stopeast
const Cut k2ProngPreSelCVN
const Cut kNpCVN2gammaID([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;double prPID=sr->vtx.elastic[0].fuzzyk.png[1].cvnpart.photonid;if(prPID >=0.9) return true;return false;})
const Cut OptiCutFid8TPPng2
const Cut NoCut3prong
3 prong events preselection //////
const Cut k3ProngCCCalEPi0
caf::Proxy< float > stopbottom
bool operator()(const caf::SRProxy *sr) const
const Cut kIsCCPi02PNoCut
caf::Proxy< caf::SRTrackBranch > trk
const Cut kNueNDCont([](const caf::SRProxy *sr){bool cut=false;if(!sr->vtx.elastic.IsValid) return cut;if(sr->vtx.elastic.fuzzyk.npng==0) return cut;if(sr->vtx.elastic.fuzzyk.nshwlid==0) return cut;if(sr->slc.nhit< 20) return cut;if(std::min(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.X(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.X())< -180.0) return cut;if(std::max(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.X(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.X()) > 180.0) return cut;if(std::min(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.Y(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.Y())< -180.0) return cut;if(std::max(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.Y(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.Y()) > 180.0) return cut;if(std::min(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.Z(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.Z())< 25.0) return cut;if(std::max(sr->vtx.elastic.fuzzyk.png[0].shwlid.start.Z(), sr->vtx.elastic.fuzzyk.png[0].shwlid.stop.Z()) > 1225.0) return cut;if(sr->vtx.elastic.vtx.X()< -140.0) return cut;if(sr->vtx.elastic.vtx.X() > 140.0) return cut;if(sr->vtx.elastic.vtx.Y()< -140.0) return cut;if(sr->vtx.elastic.vtx.Y() > 140.0) return cut;if(sr->vtx.elastic.vtx.Z()< 100.0) return cut;if(sr->vtx.elastic.vtx.Z() > 550.0) return cut;if(sr->vtx.elastic.fuzzyk.png[sr->vtx.elastic.fuzzyk.longestidx].len > 600.0) return cut;if(sr->slc.calE > 5.0) return cut;if(sr->vtx.elastic.fuzzyk.png[sr->vtx.elastic.fuzzyk.longestidx].shwlid.gap > 150.0) return cut;cut=true;return cut;})
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 Cut kIsNCPi0L2P1Cut
const Cut kIsNCNonPi02PNoCut
const Cut NoCutopti11Pi01Png2
const Cut NoCutopti5Pi01Png2
const SpillTruthCut TrueSignalVtxFidS
caf::Proxy< float > startfront
const Cut OptiCutFid1Pi01Png2Bkg
const Cut kNCBkg([](const caf::SRProxy *sr){float MassOfPi0=0.135;float kinetic=-10;float en=-99;if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111){en=sr->mc.nu[0].prim[i].p.E;kinetic=en-MassOfPi0;if(kinetic > 0.5) countpi++;}}if(countpi==0 &&!sr->mc.nu[0].iscc) return true;return false;})
const Cut NoCutopti4Pi02Png2
const Cut OptiCutFid1Pi02
FIDUCIAL OPTIMIZATION ANALYSIS 3 PRONG CUTS 0.3 GeV THRESHOLD///.
const Cut kIsCCNonPi03PRem
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
const Cut OptiCutFid1TP
FIDUCIAL OPTIMIZATION ANALYSIS 3 PRONG TOTAL PRESELECTION CUTS///.
caf::Proxy< unsigned int > ncellsfromedge
const Cut OptiCutFid11Pi02Png2Bkg
const Cut k3ProngPreSelCVN
const Cut OptiCutFid3TPPng2
const Cut OptiCutFid4TPPng2
caf::Proxy< unsigned int > lastplane
const Cut kIsCCNonPi0NoCut
caf::Proxy< float > stopwest
const Cut kIsNCNonPi03PRem
caf::Proxy< caf::SRRemid > remid
const Cut NoCutopti6Pi02Png2
const Cut OptiCutFid6Pi01
const Cut kIsNCNonPi0NoCut
const Cut OptiCutFid4Pi02Png2
const Cut kNpCVN1gammaID([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;double prPID=sr->vtx.elastic[0].fuzzyk.png[0].cvnpart.photonid;if(prPID >=0.7) return true;return false;})
const Cut kContainment([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;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;for(unsigned int i=0;i< sr->vtx.elastic[0].fuzzyk.nshwlid;i++){if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x)< -160.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x) > 120.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) > 155.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 Cut OptiCutFid8Pi02
const Cut OptiCutFid5Pi01Png2
const Cut OptiCutFid8Pi02Png2
const Cut NoCutopti1Pi02
FIDUCIAL OPTIMIZATION ANALYSYS 3 PRONG NO CUTS 0.3 GeV THRESHOLD///.
const Cut NoCutopti10Pi01
const Cut OptiCutFid3Pi02
const Cut NoCutopti10Pi01Png2
const Cut kIsFiducial([](const caf::SRProxy *sr){int ibesttrk=kBestTrack(sr);if(sr->trk.kalman.ntracks< 1) return false;if(ibesttrk< 0||ibesttrk >=int(sr->trk.kalman.ntracks)) return false;bool isfid=(sr->trk.kalman.tracks[ibesttrk].start.X()< vtxmax.X()&&sr->trk.kalman.tracks[ibesttrk].start.X() > vtxmin.X()&&sr->trk.kalman.tracks[ibesttrk].start.Y() > vtxmin.Y()&&sr->trk.kalman.tracks[ibesttrk].start.Y()< vtxmax.Y()&&sr->trk.kalman.tracks[ibesttrk].start.Z() > vtxmin.Z()&&sr->trk.kalman.tracks[ibesttrk].start.Z()< vtxmax.Z());return isfid;})
const Cut kPreSelectData2
const Cut kIsFid3(fIsFiducialVariable(100))
const Cut OptiCutFid1Pi01
FIDUCIAL OPTIMIZATION ANALYSIS 3 PRONG CUTS 0.635 GeV THRESHOLD///.
caf::Proxy< float > starteast
const Cut OptiCutFid6Pi02
const Cut kNpCVNgammaID([](const caf::SRProxy *sr){int nbofprongs=sr->vtx.elastic[0].fuzzyk.npng;int nCVNPhotons=0;int nCVNPhotonsH=0;if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;for(int pngid=0;pngid< nbofprongs &&(nbofprongs==1);pngid++){double prPID=sr->vtx.elastic[0].fuzzyk.png[pngid].cvnpart.photonid;nCVNPhotons++;if(prPID >=0.7 &&prPID > 0) nCVNPhotonsH++;}if(nCVNPhotons > 0 &&(nCVNPhotonsH==nCVNPhotons)) return true;return false;})
const Cut OptiCutFid5Pi01
caf::Proxy< caf::SRVector3D > start
const Cut kCCNonPi0Bkg([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111) countpi++;}if(countpi==0 &&sr->mc.nu[0].iscc) return true;return false;})
const Cut k2ProngPreSel2CVN
const Cut NoCutopti8Pi01Png2
caf::Proxy< caf::SRTruthBranch > mc
const Cut kPreSelectData3
const Cut OptiCutFid9Pi02Png2Bkg
const Cut kNpPDG1gammaID([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;double GammaPID=sr->vtx.elastic[0].fuzzyk.png[0].truth.pdg;double Pi0PID=sr->vtx.elastic[0].fuzzyk.png[0].truth.motherpdg;if(abs(GammaPID)==22 &&abs(Pi0PID)==111) return true;return false;})
const Cut OptiCutFid4Pi01Png2
caf::Proxy< float > ndhadcalcatE
caf::Proxy< caf::SRKalman > kalman
const Cut OptiCutFid2Pi02
const Cut OptiCutFid1Pi01Png2
FIDUCIAL OPTIMIZATION ANALYSIS 2 PRONG CUTS 0.635 GeV THRESHOLD///.
const Cut kContainNC3P([](const caf::SRProxy *sr){const caf::SRNueCosRejProxy &cr=sr->sel.nuecosrej;if(std::min(cr.starteast, cr.stopeast)< 25){return false;}if(std::min(cr.startwest, cr.stopwest)< 25){return false;}if(std::min(cr.starttop, cr.stoptop) < 25){return false;}if(std::min(cr.startbottom, cr.stopbottom)< 25){return false;}if(std::min(cr.startfront, cr.stopfront)< 25){return false;}if(std::min(cr.startback, cr.stopback)< 25){return false;}return true;})
const Cut kNpPDG2gammaID([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return false;if(sr->vtx.elastic[0].fuzzyk.npng==0) return false;double GammaPID=sr->vtx.elastic[0].fuzzyk.png[1].truth.pdg;double Pi0PID=sr->vtx.elastic[0].fuzzyk.png[1].truth.motherpdg;if(abs(GammaPID)==22 &&abs(Pi0PID)==111) return true;return false;})
const Cut kPreSelect
3 prong analysis cuts////
const Cut OptiCutFid11Pi01Png2
const Cut NoCutopti3Pi02Png2
bool operator()(const caf::SRProxy *sr) const
caf::Proxy< short int > pdgorig
const Cut kPreSelectCalERemId
const Cut OptiCutFid9TPPng2
const Cut kIsFid2(fIsFiducialVariable(90))
const Cut OptiCutFid9Pi01
const Cut NoCutopti2Pi02Png2
const Cut NoCutopti10Pi02Png2
caf::Proxy< caf::SRSlice > slc
const Cut OptiCutFid3Pi02Png2
const Cut kIsCCNonPi02PNoCut
const Cut kPi0RemIDND([](const caf::SRProxy *sr){return(sr->sel.remid.pid< 0.36);})
const Cut k3Prongs([](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==3);})
const Cut OptiCutFid2Pi01
const Cut kPreSelectDataNoCuts
const Cut kNCNonPi0Bkg([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111) countpi++;}if(countpi==0 &&sr->mc.nu[0].iscc==0) return true;return false;})
const Cut kVtxInFiducialData([](const caf::SRProxy *sr){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;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 OptiCutFid4Pi02
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;})
Proxy for caf::SRNueCosRej.
const Cut OptiCutFid11Pi02
const Cut kTrueVtxInFiducial
const Cut kIsFid1(fIsFiducialVariable(80))
const Cut OptiCutFid2Pi02Png2Bkg
const Cut OptiCutFid3Pi01Png2
const Cut kPi0L([](const caf::SRProxy *sr){float MassOfPi0=0.135;float kinetic=-10;float en=-99;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;if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi0=0;int countpi0L=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111){en=sr->mc.nu[0].prim[i].p.E;std::cout<< "Energy L before energy cuts is: "<< en<< std::endl;countpi0++;if(en<=0.3 &&en > 0){countpi0L++;std::cout<< "Energy L is: "<< en<< std::endl;}}}if(countpi0 > 0 &&(countpi0L==countpi0)) return true;return false;})
const Cut OptiCutFid9Pi01Png2
const Cut kIsNCPi02PLNoCut
caf::Proxy< caf::SRVector3D > vtx
const Cut OptiCutFid9Pi02Png2
const Cut NoCutopti7Pi01Png2
const Cut kVtx([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0 &&sr->mc.nnu==0) return false;return(sr->vtx.nelastic==0);})
const Cut OptiCutFid1Pi02Png2Bkg
assert(nhit_max >=nhit_nbins)
const Cut OptiCutFid2TPPng2
const Cut NoCutopti7Pi02Png2
const Cut OptiCutFid7Pi02
caf::Proxy< unsigned int > firstplane
const Cut kIsNCPi0L2PNoCut
caf::Proxy< float > kalyposattrans
caf::Proxy< short int > pdg
const Cut OptiCutFid7TPPng2
caf::Proxy< std::vector< caf::SRKalmanTrack > > tracks
const Cut OptiCutFid5TPPng2
caf::Proxy< caf::SRIDBranch > sel
T min(const caf::Proxy< T > &a, T b)
caf::Proxy< caf::SRVertexBranch > vtx
bool operator()(const caf::SRProxy *sr) const
const TVector3 vtxmax(160, 160, 1000)
const Cut kIsFid5(fIsFiducialVariable(120))
const Cut OptiCutFid6Pi02Png2
caf::Proxy< float > startwest
const Cut NoCut2prong
2 prong analysis cuts ///
const Cut kNCPi0Bkg([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111) countpi++;}if(countpi > 0 &&sr->mc.nu[0].iscc==0) return true;return false;})
const Cut kPi01(fIsPi0Variable(0.635))
const Cut OptiCutFid6Pi02Png2Bkg
const Cut OptiCutFid10Pi02
fIsFiducialVariable(int a)
const Cut kPi0([](const caf::SRProxy *sr){float MassOfPi0=0.135;float kinetic=-10;float en=-99;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;if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi0=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111){en=sr->mc.nu[0].prim[i].p.E; if(en > 0.3){countpi0++;}}}if(countpi0 > 0) return true;return false;})
const Cut OptiCutFid4Pi01
const Cut OptiCutFid1Pi02Png2
FIDUCIAL OPTIMIZATION ANALYSIS 2 PRONG CUTS 0.3 GeV THRESHOLD///.
const Cut kContainmentData([](const caf::SRProxy *sr){ 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;for(unsigned int i=0;i< sr->vtx.elastic[0].fuzzyk.nshwlid;i++){if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x)< -160.0) return false;if((sr->vtx.elastic[0].fuzzyk.png[i].shwlid.stop.x) > 120.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) > 155.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 Cut kCCPi0Bkg([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;if(sr->vtx.nelastic==0) return false;if(sr->mc.nu[0].prim.size()==0) return false;int nbofprim=sr->mc.nu[0].prim.size();int countpi=0;for(int i=0;i< nbofprim;i++){if(sr->mc.nu[0].prim[i].pdg==111) countpi++;}if(countpi > 0 &&sr->mc.nu[0].iscc) return true;return false;})
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);})