38 SpectrumLoader loader(
"prod_restrictedcaf_R17-03-01-prod3reco.k_fd_numi_fhc_full_v1_goodruns" );
43 std::vector<Cut> TieredCuts;
51 size_t NCuts = TieredCuts.size();
71 TFile *
OutFile =
new TFile(OutName.c_str(),
"RECREATE");
74 Cosmics[
cut] ->
SaveTo( OutFile, TString(CutNames[
cut])+TString(
"_Cosmics") ) ;
75 BeamNus[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_BeamNus") ) ;
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
Representation of a spectrum in any variable, with associated POT.
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;})
const Cut kNumu2017Veto([](const caf::SRProxy *sr){return sr->sel.veto.keep;})
cosmic veto cut for FD
====================================================================== ///
const Cut kNumuContainFD2017
const Cut kNumuPID2017([](const caf::SRProxy *sr){return(sr->sel.remid.pid > 0.5 &&sr->sel.cvn.numuid > 0.5);})
std::vector< float > Spectrum
const Cut kNumuCosmicRej2017([](const caf::SRProxy *sr){return(sr->sel.cosrej.anglekal > 0.5 && sr->sel.cosrej.numucontpid2020 > 0.5 && sr->slc.nhit< 400);})
const SystShifts kNoShift
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const Binning kNumuCCEOptimisedBinning
Optimised binning for numuCCE from L. Vinton. See docdb 16332. This was close to 'custC' in that talk...
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.
const Var kUnweighted
The simplest possible Var, always 1. Used as a default weight.
void plot(std::string label, std::map< std::string, std::map< std::string, Spectrum * >> &plots, bool log)
std::vector< std::string > CutNames