25 if(input_file_name ==
"" ) {
26 std::map<TString, SpectrumLoader *>
loaders;
27 loaders[
"kNominal"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_v1");
28 loaders[
"kCalibNeg"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-xyview-neg-offset_v1_good_seventh");
29 loaders[
"kCalibPos"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-xyview-pos-offset_v1_good_seventh");
30 loaders[
"kCalibShape"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_calib-shift-nd-func_v1_good_seventh");
31 loaders[
"kLightUpCalibDown"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightup-calibdown_v1_good_seventh");
32 loaders[
"kLightDownCalibUp"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_lightmodel-lightdown-calibup_v1_good_seventh");
33 loaders[
"kCherenkov"] =
new SpectrumLoader(
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_ckv-proton-shift-down_v1_good_seventh");
61 loaders[
"kLightUpCalibDown"],
62 loaders[
"kLightDownCalibUp"],
73 loaders[
"kCalibShape"],
78 loaders[
"kCherenkov"],
86 std::vector<SystShifts> genie_shifts = genie_multiverse.
GetSystShifts();
112 TFile *
output =
new TFile(
"demo_cut_optimization.root",
"recreate");
113 optimize->
SaveTo(output->mkdir(
"vtx_cut_optimize"));
118 TFile * input = TFile::Open(input_file_name.c_str(),
"read");
124 TFile *
results =
new TFile(
"demo_cut_optimization_results.root",
"recreate");
125 results->mkdir(
"vtx_cut_optimize/results");
126 TDirectory * save_dir = results->GetDirectory(
"vtx_cut_optimize/results");
129 std::string plot_dump =
"demo_cut_optimization_plots";
const NuTruthCut kIsNueCCST([](const caf::SRNeutrinoProxy *truth){return(truth->iscc &&truth->pdg==12);})
const Cut kcNueCCIncContainment([](const caf::SRProxy *sr){if(sr->vtx.elastic[0].fuzzyk.nshwlid< 1) return false;TVector3 start=sr->vtx.elastic[0].fuzzyk.png[0].shwlid.start;TVector3 stop=sr->vtx.elastic[0].fuzzyk.png[0].shwlid.stop;for(uint ix=0;ix< sr->vtx.elastic[0].fuzzyk.nshwlid;ix++){TVector3 start_muoncatcher=sr->vtx.elastic[0].fuzzyk.png[ix].shwlid.start;TVector3 stop_muoncatcher=sr->vtx.elastic[0].fuzzyk.png[ix].shwlid.stop;if(std::max(start_muoncatcher.Z(), stop_muoncatcher.Z()) > 1250.0) return false;}if(sr->sel.nuecosrej.distallpngtop< 50) return false;if(sr->sel.nuecosrej.distallpngbottom< 30) return false;if(sr->sel.nuecosrej.distallpngeast< 50) return false;if(sr->sel.nuecosrej.distallpngwest< 30) return false;if(sr->sel.nuecosrej.distallpngfront< 150) return false;return true;})
_HistAxis< Var > HistAxis
Cuts and Vars for the 2020 FD DiF Study.
std::vector< const ISyst * > getAllXsecSysts_2018()
Get master XSec syst list for 2018 analyses.
const NuTruthCut kTrueDetectorST([](const caf::SRNeutrinoProxy *sr){return(sr->vtx.X()< tvtxmax.X()&& sr->vtx.X() > tvtxmin.X()&& sr->vtx.Y() > tvtxmin.Y()&& sr->vtx.Y()< tvtxmax.Y()&& sr->vtx.Z() > tvtxmin.Z()&& sr->vtx.Z()< tvtxmax.Z());})
static std::unique_ptr< CutOptimization > LoadFrom(TDirectory *dir, const std::string &name)
GenericSystematicDef< caf::SRProxy > SystematicDef
void DefineNominal(SystematicDef *nominal)
_Var< caf::SRProxy > Var
Representation of a variable to be retrieved from a caf::StandardRecord object.
void SaveTo(TDirectory *dir, const std::string &name) const
void DefineMultiverseSystematic(SystematicDef *syst, std::vector< Var > mv_weights)
void demo_cut_optimization(std::string input_file_name="")
_Cut< caf::SRProxy > Cut
Representation of a cut (selection) to be applied to a caf::StandardRecord object.
void SetSpillCuts(const SpillCut &)
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
void DefineSystematic(SystematicDef *syst)
std::vector< SystShifts > GetSystShifts()
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const double kAna2018FHCPOT
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
Cut CutFromNuTruthCut(const NuTruthCut &stc)