28 const Var kSliceMeanTime =
SIMPLEVAR(hdr.subevtmeantime);
41 Spectrum spec_nus_cvn_outtime(loader, kNusAxisCVN,
45 Spectrum spec_nus_time_outtime(loader, kTimeAxis,
49 Spectrum spec_nus_slctime_outtime(loader, kSliceTimeAxis,
58 Spectrum spec_nus_cvn_intime(loader, kNusAxisCVN,
62 Spectrum spec_nus_time_intime(loader, kTimeAxis,
66 Spectrum spec_nus_slctime_intime(loader, kSliceTimeAxis,
80 TFile
fout(
"fout_nus17_box_opening_restricted.root",
"RECREATE");
82 spec_nus_cvn_intime.
SaveTo(&fout,
"spec_nus_cvn_numi");
83 spec_nus_cvn_outtime.
SaveTo(&fout,
"spec_nus_cvn_cosmic");
85 spec_nus_time_intime.
SaveTo(&fout,
"spec_nus_time_numi");
86 spec_nus_time_outtime.
SaveTo(&fout,
"spec_nus_time_cosmic");
88 spec_nus_slctime_intime.
SaveTo(&fout,
"spec_nus_slctime_numi");
89 spec_nus_slctime_outtime.
SaveTo(&fout,
"spec_nus_slctime_cosmic");
91 spec_nus_vise_intime.
SaveTo(&fout,
"spec_nus_vise_numi");
92 spec_nus_vise_outtime.
SaveTo(&fout,
"spec_nus_vise_cosmic");
106 {
"nus17_selected_numi.txt",
"nus17_selected_cosmic.txt"},
114 std::vector<std::string>
ret;
118 pnfsdir +
"prod_sumrestricteddecaf_R17-03-01-prod3reco.k_fd_numi_fhc_period1_v1_goodruns_nus2017/*.root" 121 pnfsdir +
"prod_sumrestricteddecaf_R17-03-01-prod3reco.k_fd_numi_fhc_period2_v1_goodruns_nus2017/*.root" 124 pnfsdir +
"prod_sumrestricteddecaf_R17-03-01-prod3reco.k_fd_numi_fhc_period3_v1_goodruns_nus2017/*.root" 127 pnfsdir +
"prod_sumrestricteddecaf_R17-03-01-prod3reco.k_fd_numi_fhc_period5_v1_goodruns_nus2017/*.root" 130 for(
const auto&
file : fnumi_period1) {ret.push_back(
file);}
131 for(
const auto&
file : fnumi_period2) {ret.push_back(
file);}
132 for(
const auto&
file : fnumi_period3) {ret.push_back(
file);}
133 for(
const auto&
file : fnumi_period5) {ret.push_back(
file);}
Cuts and Vars for the 2020 FD DiF Study.
std::vector< std::string > fnumi_period3
std::vector< std::string > MakeUnblindList()
const Var kSliceTime([](const caf::SRProxy *sr){return sr->slc.meantime/1000;})
void SetSpillCut(const SpillCut &cut)
std::vector< std::string > fnumi_period1
Representation of a spectrum in any variable, with associated POT.
const Var kNus17Energy([](const caf::SRProxy *sr){double cale=sr->slc.calE;double recoE=0.;if(sr->hdr.det==caf::kFARDET) recoE=FDscaleCalE17 *cale;if(sr->hdr.det==caf::kNEARDET) recoE=NDscaleCalE17 *cale;return recoE;})
const Cut kInTimingSideband([](const caf::SRProxy *sr){if(sr->spill.run > util::kLastBadTimingRun) return(kInTimingSideband_before(sr)|| kInTimingSideband_after(sr));else return(kInTimingSideband_before(sr)|| kInTimingSideband_afterA(sr)|| kInTimingSideband_afterB(sr));}, [](const caf::SRSpillProxy *spill){if(spill->run > util::kLastBadTimingRun) return(kInTimingSideband_before.Livetime(spill)+ kInTimingSideband_after.Livetime(spill));else return(kInTimingSideband_before.Livetime(spill)+ kInTimingSideband_afterA.Livetime(spill)+ kInTimingSideband_afterB.Livetime(spill));}, [](const caf::SRSpillProxy *spill){return 0;})
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.
std::vector< std::string > Wildcard(const std::string &wildcardString)
Find files matching a UNIX glob, plus expand environment variables.
const std::string pnfsdir
virtual void Go() override
Load all the registered spectra.
void SaveTo(TDirectory *dir, const std::string &name) const
const HistAxis kNus17Axis("Visible Energy (GeV)", kNus17EnergyBinning, kNus17Energy)
Axes used in Nus17 analysis by nus group.
std::vector< std::string > fnumi_period2
const SystShifts kNoShift
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
std::vector< std::string > fnumi_period5
#define SIMPLEVAR(CAFNAME)
For Vars where literally all you need is a single CAF variable.
const Cut kInBeamSpill([](const caf::SRProxy *sr){if(sr->spill.run > util::kLastBadTimingRun) return kInBeamSpill_main(sr);else return kInBeamSpill_main(sr)||kInBeamSpill_shifted(sr);}, [](const caf::SRSpillProxy *spill){if(spill->run > util::kLastBadTimingRun) return kInBeamSpill_main.Livetime(spill);else return kInBeamSpill_main.Livetime(spill)+kInBeamSpill_shifted.Livetime(spill);}, [](const caf::SRSpillProxy *spill) -> double{return spill->spillpot;})
Does the event fall inside the window we call the beam spill?
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})