102 if (
std::min(start.
X(),stop.
X()) < -150.0)
return false;
103 if (
std::max(start.
X(),stop.
X()) > 170.0)
return false;
104 if (
std::min(start.
Y(),stop.
Y()) < -170.0)
return false;
105 if (
std::max(start.
Y(),stop.
Y()) > 150.0)
return false;
106 if (
std::min(start.
Z(),stop.
Z()) < 100.0)
return false;
107 if (
std::max(start.
Z(),stop.
Z()) > 1225.0)
return false;
128 else return float(-5.0);
137 int nuEBin = nuE/0.5;
139 assert(nuEBin <= 8 && "An event with nuE > 4.5 should never happen
"); 141 int anaBin = 9*selBin + nuEBin; 146 const Binning kNue2020Binning = Binning::Simple(27,0,27); 148 const HistAxis kNue2020Axis("NuE
Energy / Analysis Bin
", 149 kNue2020Binning,kNue2020AnaBin); 151 const Var kNue2020AnaBinMergedPeripheral([](const caf::SRProxy *sr){ 152 int anaBin = kNue2020AnaBin(sr); 153 anaBin = anaBin > 18 ? 20 : anaBin; 157 const Binning kNue2020BinningMergedPeripheral = Binning::Simple(23,0,23); 158 const HistAxis kNue2020AxisMergedPeripheral("NuE
Energy / Analysis Bin
", 159 kNue2020BinningMergedPeripheral, 160 kNue2020AnaBinMergedPeripheral); caf::Proxy< caf::SRCVNResult > cvnloosepreselptp
caf::Proxy< size_t > npng
caf::Proxy< unsigned int > nshwlid
T max(const caf::Proxy< T > &a, T b)
bool kNue2020FDPeripheralFunc(const caf::SRProxy *sr)
Use this cut for the full FD Peripheral sample, the same for RHC and FHC.
caf::Proxy< caf::SRFuzzyK > fuzzyk
Cuts and Vars for the 2020 FD DiF Study.
const Cut kNue2020CVN_VsCosPIDFHC
const Cut kNue2020PeripheralBasicEventCut_MRBrem
fvar< T > fabs(const fvar< T > &x)
const double kNue2020CVNRHCLowEdge
const Cut kNue2020FHCCVNCutLP
const Cut kNue2020PID([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2020PIDRHC(sr);else return kNue2020PIDFHC(sr);})
const Cut kNue2020FD_MRBrem
caf::Proxy< caf::SRContain > contain
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 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 Cut kNue2020CVN_VsCosPID(kNue2020CVN_VsCosPIDFunc)
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
caf::Proxy< float > closestslicetime
caf::Proxy< caf::SRElastic > elastic
caf::Proxy< caf::SRNueCosRej > nuecosrej
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
const double kNue2020CVNFHCHighEdge
const Cut kNue2020RHCCVNCutLP
Proxy for caf::SRVector3D.
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 Cut kNue2020CVNCutLP([](const caf::SRProxy *sr){if(kIsRHC(sr)) return kNue2020RHCCVNCutLP(sr);else return kNue2020FHCCVNCutLP(sr);})
caf::Proxy< int > nplanestofront
caf::Proxy< float > nueid
const Cut kNue2020CVNVsCosPIDRHCLP
caf::Proxy< float > hitsperplane
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
const Cut kNue2020PeripheralBasicEventCut
caf::Proxy< float > closestsliceminfromtop
const Cut kNue2020CVN_VsCosPIDRHC
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 kIsRHC([](const caf::SRProxy *sr){return sr->spill.isRHC;})
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)
caf::Proxy< bool > IsValid
caf::Proxy< caf::SRSlice > slc
caf::Proxy< float > closestslicemindist
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.
caf::Proxy< caf::SRVector3D > vtx
assert(nhit_max >=nhit_nbins)
caf::Proxy< caf::SRIDBranch > sel
T min(const caf::Proxy< T > &a, T b)
Template for Cut and SpillCut.
caf::Proxy< caf::SRVertexBranch > vtx
const Cut kNue2020CosRejFHC
const Cut kNue2020FDPeripheral(kNue2020FDPeripheralFunc)
const Cut kNue2020CVNVsCosPIDFHCLP