72 MakeTextListFile(dataset, {
kIsPreSel}, {
"nd_fhc_nc_selection_stride_nominaldataset"+
to_string(
stride)+
"_offset"+
to_string(
offset)+
".txt"},{&
kRun, &
kSubRun, &
kCycle, &
kEvt, &
kSlice, &
kNpCVN1gamma, &
kNpCVN2gamma, &
kNCGapPng1, &
kNCGapPng2, &
kNCCurrent, &
kPdgPi0},0);
74 MakeTextListFile(dataset, {
kIsPreSel}, {
"nd_fhc_nc_selection_stride_2viewdataset"+
to_string(
stride)+
"_offset"+
to_string(
offset)+
".txt"},{&
kRun, &
kSubRun, &
kCycle, &
kEvt, &
kSlice, &
k2ViewCVN1gamma, &
k2ViewCVN2gamma, &
kNCGapPng1, &
kNCGapPng2, &
kNCCurrent, &kPdgPi0},0);
76 MakeTextListFile(dataset, {
kIsPreSel}, {
"nd_fhc_nc_selection_stride_FlatFluxdataset"+
to_string(
stride)+
"_offset"+
to_string(
offset)+
".txt"},{&
kRun, &
kSubRun, &
kCycle, &
kEvt, &
kSlice, &
k2FlatFluxCVN1gamma, &
k2FlatFluxCVN2gamma, &
kNCGapPng1, &
kNCGapPng2, &
kNCCurrent, &kPdgPi0},0);
78 MakeTextListFile(dataset, {
kIsPreSel}, {
"nd_fhc_nc_selection_stride_GenieLikedataset"+
to_string(
stride)+
"_offset"+
to_string(
offset)+
".txt"},{&
kRun, &
kSubRun, &
kCycle, &
kEvt, &
kSlice, &
k2GenieLikeCVN1gamma, &
k2GenieLikeCVN2gamma, &
kNCGapPng1, &
kNCGapPng2, &
kNCCurrent, &kPdgPi0},0);
const Var kNCGapPng2([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 2) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[1].shwlid.gap);})
Cuts and Vars for the 2020 FD DiF Study.
const Var kNCGapPng1([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[0].shwlid.gap);})
void make_training_sample(int stride=5000, int offset=0)
const Var kNCCurrent([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0;if(sr->mc.nnu==0) return 0;assert(sr->mc.nnu==1);if(sr->vtx.elastic[0].fuzzyk.nshwlid==0) return 0;if(sr->vtx.elastic[0].fuzzyk.npng==0) return 0;if(sr->mc.nu[0].iscc==0) return 1;return 0;})
const Var kNpCVN1gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[0].cvnpart.photonid);})
const Var k2GenieLikeCVN1gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[0].cvnpart2GenieLike.photonid);})
const Var k2FlatFluxCVN1gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[0].cvnpart2FlatFlux.photonid);})
void MakeTextListFile(const std::string &wildcard, const std::vector< Cut > &cut, const std::vector< std::string > &output, const std::vector< const Var * > &floatVars, const std::vector< const Var * > &intVars, const SpillCut *spillCut)
Make a file listing all the events passing the specified cut.
const Var kNpCVN2gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 2) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[1].cvnpart.photonid);})
const Var kPdgPi0([](const caf::SRProxy *sr){if(sr->mc.nu.size()==0) return 0;for(auto const &iPrim:sr->mc.nu[0].prim){if(iPrim.pdg==111) return 1;}return 0;})
const Var k2ViewCVN2gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 2) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[1].cvnpart2View.photonid);})
const Var k2ViewCVN1gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 1) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[0].cvnpart2View.photonid);})
#define SIMPLEVAR(CAFNAME)
For Vars where literally all you need is a single CAF variable.
std::string to_string(ModuleType mt)
const Var k2GenieLikeCVN2gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 2) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[1].cvnpart2GenieLike.photonid);})
const Var k2FlatFluxCVN2gamma([](const caf::SRProxy *sr){if(sr->vtx.nelastic==0) return 0.f;if(sr->vtx.elastic[0].fuzzyk.npng< 2) return float(-1);return float(sr->vtx.elastic[0].fuzzyk.png[1].cvnpart2FlatFlux.photonid);})