31 SpectrumLoader FHC_Loader(
"prod4_restrictedcaf_fd_numi_fhc_full_goodruns");
32 SpectrumLoader RHC_Loader(
"prod4_restrictedcaf_fd_numi_rhc_full_goodruns" );
37 std::vector<Cut> TieredCuts;
45 size_t NCuts = TieredCuts.size();
72 Cosmics_CDir_FHC[
cut] =
new Spectrum(
"CosRej CDir", RatioBins, FHC_Loader, kCDirScore, Cut_Cosm,
kNoShift, kTimingSidebandWeight );
74 Cosmics_CDir_RHC[
cut] =
new Spectrum(
"CosRej CDir", RatioBins, RHC_Loader, kCDirScore, Cut_Cosm,
kNoShift, kTimingSidebandWeight );
84 TFile *
OutFile =
new TFile(OutName.c_str(),
"RECREATE");
87 Cosmics_FHC[
cut] ->
SaveTo( OutFile, TString(CutNames[
cut])+TString(
"_Cosmics_FHC") ) ;
88 BeamNus_FHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_BeamNus_FHC") ) ;
89 Cosmics_RHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_Cosmics_RHC") ) ;
90 BeamNus_RHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_BeamNus_RHC") ) ;
92 Cosmics_CDir_FHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_Cosmics_CDir_FHC") ) ;
93 BeamNus_CDir_FHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_BeamNus_CDir_FHC") ) ;
94 Cosmics_CDir_RHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_Cosmics_CDir_RHC") ) ;
95 BeamNus_CDir_RHC[
cut] ->
SaveTo( OutFile, TString(CutNames[cut])+TString(
"_BeamNus_CDir_RHC") ) ;
Represent the binning of a Spectrum's x-axis.
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
Proxy for caf::StandardRecord.
caf::Proxy< float > cdirscore
Representation of a spectrum in any variable, with associated POT.
caf::Proxy< caf::SRCosRej > cosrej
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 kNumuCosmicRej2018([](const caf::SRProxy *sr){return(sr->sel.cosrej.anglekal > 0.5 && sr->sel.cosrej.numucontpid2019 > 0.53 && sr->slc.nhit< 400 && sr->sel.nuecosrej.pngptp< 0.9 );})
const Cut kNumu2017Veto([](const caf::SRProxy *sr){return sr->sel.veto.keep;})
cosmic veto cut for FD
const Cut kNumuContainFD2017
std::vector< float > Spectrum
const SystShifts kNoShift
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const Cut kNumuPID2018([](const caf::SRProxy *sr){std::cout<< "ERROR::kNumuPID2018, cutting on both cvnProd3Train and cvn2017."<< " Neither branch exists anymore. Returning False."<< std::endl;abort();return false;})
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.
caf::Proxy< caf::SRIDBranch > sel
const Var kUnweighted
The simplest possible Var, always 1. Used as a default weight.
std::vector< std::string > CutNames