70 kNue2020FDBasicQuality &&
97 kNue2020FDBasicQuality &&
120 kLongestProng > 100 && kLongestProng < 500;
148 kNue2020FDBasicQuality_MRBrem &&
170 kNue2020NDFiducial &&
bool kNue2020FDPeripheralFunc(const caf::SRProxy *sr)
Use this cut for the full FD Peripheral sample, the same for RHC and FHC.
Represent the binning of a Spectrum's x-axis.
Cuts and Vars for the 2020 FD DiF Study.
const Cut kNue2020CVN_VsCosPIDFHC
const Cut kNue2020PeripheralBasicEventCut_MRBrem
const Var kDistAllBottom([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngbottom)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngbottom);})
Distance of all showers in slice from the bottom edge of detector.
const double kNue2020CVNRHCLowEdge
const Cut kNue2020ProngContain
const Cut kApplySecondAnalysisMask([](const caf::SRProxy *sr){if(sr->hdr.det!=caf::kFARDET) return true; std::bitset< 14 > binary(sr->hdr.dibmask);std::pair< int, int > planesA=calcFirstLastLivePlane(sr->slc.firstplane, binary);std::pair< int, int > planesB=calcFirstLastLivePlane(sr->slc.lastplane, binary);if((planesA.first!=planesB.first)||(planesA.second!=planesB.second)) return false;return((planesA.second-planesA.first+1)/64 >=4);})
const Cut kNue2020FHCCVNCutLP
const Var kDistAllWest([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngwest)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngwest);})
Distance of all showers in slice from the west edge of detector.
const Cut kNue2020PID([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2020PIDRHC(sr);else return kNue2020PIDFHC(sr);})
const Cut kNue2020FD_MRBrem
const Var kDistAllTop([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngtop)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngtop);})
Distance of all showers in slice from the top edge of detector.
const Cut kNue2020NDNHits
const Cut k3flavor2020FDVeto
const Var kNue2020AnaBinMergedPeripheral([](const caf::SRProxy *sr){int anaBin=kNue2020AnaBin(sr);anaBin=anaBin > 18?20:anaBin;return anaBin;})
const Cut kNue2020CorePresel_MRBrem
const Var kDistAllBack([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngback)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngback);})
Distance of all showers in slice from the back edge of detector.
Proxy for caf::StandardRecord.
const Var kNue2020SelectionBin([](const caf::SRProxy *sr){bool isPeri=kNue2020FDPeripheral(sr);if(isPeri) return float(2.5);const double lowedge=kIsRHC(sr)?kNue2020CVNRHCLowEdge:kNue2020CVNFHCLowEdge;const double highedge=kIsRHC(sr)?kNue2020CVNRHCHighEdge:kNue2020CVNFHCHighEdge;if(sr->sel.cvnloosepreselptp.nueid >=lowedge &&sr->sel.cvnloosepreselptp.nueid< highedge) return float(0.5);else if(sr->sel.cvnloosepreselptp.nueid >=highedge) return float(1.5);else return float(-5.0);return float(-5.0);})
const double kNue2020CVNRHCHighEdge
const double kNue2020CosRejFHCEdge
const Cut kNue2020FDAllSamplesHE
const Cut kNue2020FDNearestSlice([](const caf::SRProxy *sr){const double hibin=kIsRHC(sr)?kNue2020CVNRHCHighEdge:kNue2020CVNFHCHighEdge;const double topcut=(kCVNe_looseptp(sr) >=hibin)?50:400;return(fabs(sr->slc.closestslicetime) >=100|| sr->slc.closestsliceminfromtop >=topcut|| sr->slc.closestslicemindist >=500);})
bool kNue2020CVN_VsCosPIDFunc(const caf::SRProxy *sr)
const double kNue2020CosRejRHCEdge
const Cut kNue2020CVN_VsCosPID(kNue2020CVN_VsCosPIDFunc)
const Cut kIsFarDet([](const caf::SRProxy *sr){return sr->hdr.det==caf::kFARDET;})
const Cut kNue2020FDBasicQuality
const Cut kNue2020CorePresel
const double kNue2020CVNFHCLowEdge
bool kNue2020FDPeripheralFunc_MRBrem(const caf::SRProxy *sr)
const Cut kNue2020CosRej([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2020CosRejRHC(sr);else return kNue2020CosRejFHC(sr);})
const Cut kNue2020CosRejRHC
const Var kDistAllEast([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngeast)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngeast);})
Distance of all showers in slice from the east edge of detector.
const double kNue2020CVNFHCHighEdge
const Cut kNue2020FDAllSamplesLP
const Cut kNue2020CoreBasicEventCutHE
const Binning kNue2020Binning
const Cut kNue2020RHCCVNCutLP
const Cut kNue2020CoreBasicEventCut
const Cut kNue2020FDBasicQuality_MRBrem
const Var kLongestProng([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return 0.f;if(sr->vtx.elastic.fuzzyk.npng==0) return 0.f;auto idx=sr->vtx.elastic.fuzzyk.longestidx;return float(sr->vtx.elastic.fuzzyk.png[idx].len);})
const Cut kNue2020NDContain([](const caf::SRProxy *sr){for(unsigned int ix=0;ix< sr->vtx.elastic.fuzzyk.nshwlid;++ix){const caf::SRVector3DProxy &start=sr->vtx.elastic.fuzzyk.png[ix].shwlid.start;const caf::SRVector3DProxy &stop=sr->vtx.elastic.fuzzyk.png[ix].shwlid.stop;if(std::min(start.X(), stop.X())< -150.0) return false;if(std::max(start.X(), stop.X()) > 170.0) return false;if(std::min(start.Y(), stop.Y())< -170.0) return false;if(std::max(start.Y(), stop.Y()) > 150.0) return false;if(std::min(start.Z(), stop.Z())< 100.0) return false;if(std::max(start.Z(), stop.Z()) > 1225.0) return false;}if(sr->sel.contain.nplanestofront< 10) return false;return true;})
const HistAxis kNue2020AxisMergedPeripheral("NuE Energy / Analysis Bin", kNue2020BinningMergedPeripheral, kNue2020AnaBinMergedPeripheral)
const Cut kNue2020CVNCutLP([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2020RHCCVNCutLP(sr);else return kNue2020FHCCVNCutLP(sr);})
const Cut kNue2020NDDecafCut
const Cut kNue2020NDPresel
const Cut kNue2020NDProngLength
const HistAxis kNue2020Axis("NuE Energy / Analysis Bin", kNue2020Binning, kNue2020AnaBin)
Use this Axis for Ana2020, official Axis.
const Cut kNue2020CVNVsCosPIDRHCLP
const Cut kNue2020PeripheralBasicEventCut
const Cut kNue2020FDPeripheralHE
Use this cut for the sideband FD Peripheral samples, the same for RHC and FHC.
const Cut kNue2020FDDecafCut
const Cut kNue2020FDPeripheral_MRBrem(kNue2020FDPeripheralFunc_MRBrem)
const Cut kNue2020CVN_VsCosPIDRHC
const Cut kNue2020NDEnergy
const Cut kNue2020CVNVsCosPIDLP([](const caf::SRProxy *sr){if(kNue2020CVN_VsCosPID(sr)) return false;if(kIsRHC(sr)) return kNue2020CVNVsCosPIDRHCLP(sr);else return kNue2020CVNVsCosPIDFHCLP(sr);})
const Cut kNue2020RecoQuality([](const caf::SRProxy *sr){if(sr->sel.nuecosrej.hitsperplane >=8) return false;if(!sr->vtx.elastic.IsValid) return false;if(sr->vtx.elastic.fuzzyk.npng==0) return false;return true;})
const Var kNueEnergy2020([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return-1.0;if(sr->vtx.elastic.fuzzyk.npng< 1) return-1.0;if(kIsRHC(sr)) return kNueEnergyRHC2020(sr);else return kNueEnergyFHC2020(sr);})
Nue energy with 3d prong info. only (old version of vars)
const Var kDistAllFront([](const caf::SRProxy *sr){if(std::isnan(1.*sr->sel.nuecosrej.distallpngfront)) return-1000.0f;return float(sr->sel.nuecosrej.distallpngfront);})
Distance of all showers in slice from the front edge of detector.
const Cut kNue2020FDPeripheralLP
const Cut kNue2020CorePart
Collect information describing the x-axis of an analysis histogram.
const Cut kNue2020PeripheralBasicEventCutHE
const Cut kNue2020NDFiducial([](const caf::SRProxy *sr){assert(sr->vtx.elastic.IsValid &&"Must apply DQ cuts");if(sr->vtx.elastic.vtx.X()< -100.0) return false;if(sr->vtx.elastic.vtx.X() > 160.0) return false;if(sr->vtx.elastic.vtx.Y()< -160.0) return false;if(sr->vtx.elastic.vtx.Y() > 100.0) return false;if(sr->vtx.elastic.vtx.Z()< 150.0) return false;if(sr->vtx.elastic.vtx.Z() > 900.0) return false;return true;})
const Var kNue2020AnaBin([](const caf::SRProxy *sr){int selBin=kNue2020SelectionBin(sr);float nuE=kNueEnergy2020(sr);int nuEBin=nuE/0.5;assert(nuEBin<=8 &&"An event with nuE > 4.5 should never happen");int anaBin=9 *selBin+nuEBin;return anaBin;})
Use this Analysis Binning for Ana2020, official Binning.
const Cut kNue2020CorePartHE
const Cut kNue2020FDAllSamples
Template for Cut and SpillCut.
const Cut kNue2020CosRejFHC
const Cut kNue2020FDPeripheral(kNue2020FDPeripheralFunc)
const Cut kNue2020CorePreselHE
const Var kCosPIDCoreBDT
2020 nue cosmic rejection BDT variable - core
const Var kCosPIDPeriBDT
2020 nue cosmic rejection BDT variable - peripheral
const Cut kNue2020FDHE
Use this cut for the sideband FD Core selections, apply for both RHC and FHC.
const Cut kNue2020NDFrontPlanes
const Binning kNue2020BinningMergedPeripheral
const Cut kNue2020CVNVsCosPIDFHCLP