1 #include "CAFAna/Core/Binning.h" 48 std::vector<std::pair<Cut, std::string> > TrueCuts, SelCuts, MyCuts;
49 TrueCuts.clear(); SelCuts.clear(); MyCuts.clear();
79 for (
size_t sel=0; sel<SelCuts.size(); ++sel) {
80 for (
size_t tr=0;
tr<TrueCuts.size(); ++
tr) {
81 Cut kThisCut = SelCuts[sel].first && TrueCuts[
tr].first;
82 std::string kThisName = SelCuts[sel].second + TrueCuts[
tr].second;
97 std::vector<std::pair<Cut, std::string> > TrueCuts, SelCuts, MyCuts;
98 TrueCuts.clear(); SelCuts.clear(); MyCuts.clear();
111 for (
size_t sel=0; sel<SelCuts.size(); ++sel) {
112 for (
size_t tr=0;
tr<TrueCuts.size(); ++
tr) {
113 Cut kThisCut = SelCuts[sel].first && TrueCuts[
tr].first;
114 std::string kThisName = SelCuts[sel].second + TrueCuts[
tr].second;
caf::Proxy< caf::SRCVNResult > cvnloosepreselptp
const Cut kIsNumuCC(CCFlavSel(14, 14))
Select CC .
const Cut kTestRelax_Old([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.6 &&sr->sel.cvnoldpresel .numuid > 0.6 &&sr->sel.cosrej.numucontpid2020 > 0.45);})
Represent the binning of a Spectrum's x-axis.
Cuts and Vars for the 2020 FD DiF Study.
const Cut kNumuContainND2017([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return false;for(unsigned int i=0;i< sr->vtx.elastic.fuzzyk.nshwlid;++i){TVector3 start=sr->vtx.elastic.fuzzyk.png[i].shwlid.start;TVector3 stop=sr->vtx.elastic.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(unsigned int i=0;i< sr->trk.kalman.ntracks;++i){if(i==sr->trk.kalman.idxremid) continue;else if(sr->trk.kalman.tracks[i].start.Z() > 1275||sr->trk.kalman.tracks[i].stop.Z() > 1275) return false;}return(sr->trk.kalman.ntracks > sr->trk.kalman.idxremid &&sr->slc.firstplane > 1
&&sr->slc.lastplane< 212 &&sr->trk.kalman.tracks[0].start.Z()< 1100
&&(sr->trk.kalman.tracks[0].stop.Z()< 1275 ||sr->sel.contain.kalyposattrans< 55) &&sr->sel.contain.kalfwdcellnd > 5 &&sr->sel.contain.kalbakcellnd > 10);})
Proxy for caf::StandardRecord.
std::vector< std::pair< Cut, std::string > > BasicPIDPlots_Cuts(bool isFHC, bool isFD, bool isData)
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 kNumu2020LoosePTP([](const caf::SRProxy *sr){return(sr->sel.remid.pid > 0.4 &&sr->sel.cvnloosepreselptp.numuid > 0.80);})
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
const Cut kTestSuperLoose_PTP([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.2 &&sr->sel.cvnloosepreselptp.numuid > 0.2);})
const Cut kTestLoose_Old([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.4 &&sr->sel.cvnoldpresel .numuid > 0.4);})
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;})
caf::Proxy< caf::SRCosRej > cosrej
const Cut kNumuContainFD2017
caf::Proxy< caf::SRCVNResult > cvnoldpresel
const Cut kTestLoose_PTP([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.4 &&sr->sel.cvnloosepreselptp.numuid > 0.4);})
const Cut kTestRelax_PTP([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.6 &&sr->sel.cvnloosepreselptp.numuid > 0.6 &&sr->sel.cosrej.numucontpid2020 > 0.45);})
base_types push_back(int_type())
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
caf::Proxy< caf::SRRemid > remid
const Cut kNumu2020CosRej([](const caf::SRProxy *sr){return(sr->sel.cosrej.numucontpid2020 > 0.45);})
caf::Proxy< float > numucontpid2020
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)
const Binning kNumuCCEOptimisedBinning
Optimised binning for numuCCE from L. Vinton. See docdb 16332. This was close to 'custC' in that talk...
const Cut kTestSuperLoose_Old([](const caf::SRProxy *sr){return(kNumuQuality(sr)&&kNumuContainFD2017(sr)&&sr->sel.remid.pid > 0.2 &&sr->sel.cvnoldpresel .numuid > 0.2);})
caf::Proxy< caf::SRIDBranch > sel
const Cut kNumu2020OldPresel([](const caf::SRProxy *sr){return(sr->sel.remid.pid > 0.4 &&sr->sel.cvnoldpresel.numuid > 0.84);})
Template for Cut and SpillCut.
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
caf::Proxy< float > numuid
const Cut kNoCut
The simplest possible cut: pass everything, used as a default.
std::vector< std::pair< Cut, std::string > > BasicPIDPlots2019_Cuts(bool isFHC, bool isFD, bool isData)