29 std::string polarity =
"fhc";
if (!isFHC) polarity =
"rhc";
33 std::cout <<
"\n================================= \n" 34 <<
"\n\t isFHC --> " << isFHC <<
" --> " << polarity
35 <<
"\n\t Period --> " <<
period 36 <<
"\n\t Far detector isFD --> " << detector
37 <<
"\n================================= \n" 41 std::vector<std::pair<Cut, std::string> > TrueCuts, SelCuts, MyCuts;
42 TrueCuts.clear(); SelCuts.clear(); MyCuts.clear();
52 for (
size_t sel=0; sel<SelCuts.size(); ++sel) {
53 for (
size_t tr=0;
tr<TrueCuts.size(); ++
tr) {
54 Cut kThisCut = SelCuts[sel].first && TrueCuts[
tr].first;
55 std::string kThisName = SelCuts[sel].second + TrueCuts[
tr].second;
59 const size_t NCuts = MyCuts.size();
66 if (!isFHC) sTag =
".e";
67 std::string MyNonSwapDef =
"prod_caf_R17-11-14-prod4reco"+sTag+
"_fd_genie_nonswap_" +polarity+
"_nova_v08_full_v1";
68 std::string MyFluxSwapDef =
"prod_caf_R17-11-14-prod4reco"+sTag+
"_fd_genie_fluxswap_"+polarity+
"_nova_v08_full_v1";
69 std::string MyTauSwapDef =
"prod_caf_R17-11-14-prod4reco"+sTag+
"_fd_genie_tau_" +polarity+
"_nova_v08_full_v1";
88 Cut kThisCut = MyCuts[
cc].first;
101 std::string OutName =
"BasicPIDPlots_2019_"+detector+
"_"+data+
"_"+polarity+
"_"+
period+
".root";
102 TFile *
OutFile = TFile::Open(OutName.c_str(),
"RECREATE");
106 sNuRecoE [
cc] ->
SaveTo( OutFile, TString(
"RecoNuE" )+TString(ThisCutNa) ) ;
107 sReMIdScore [
cc] ->
SaveTo( OutFile, TString(
"ReMIdScore" )+TString(ThisCutNa) ) ;
108 sProngScoremuon[
cc] ->
SaveTo( OutFile, TString(
"ProngCVNMuonScore" )+TString(ThisCutNa) ) ;
109 sCosRejScoreP4 [
cc] ->
SaveTo( OutFile, TString(
"Prod4CosRejScore" )+TString(ThisCutNa) ) ;
110 sCVNScoremuon [
cc] ->
SaveTo( OutFile, TString(
"CVNMuonScore" )+TString(ThisCutNa) ) ;
const Cut kIsNumuCC(CCFlavSel(14, 14))
Select CC .
Far Detector at Ash River.
Represent the binning of a Spectrum's x-axis.
Cuts and Vars for the 2020 FD DiF Study.
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
const Binning kRemidBinning
Binning for plotting remid attractively.
Collection of SpectrumLoaders for many configurations.
const Cut kIsAntiNu([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return sr->mc.nu[0].pdg< 0;})
Is this truly an antineutrino?
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
const Cut kIsNu([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return sr->mc.nu[0].pdg > 0;})
void Go()
Call Go() on all the loaders.
const XML_Char const XML_Char * data
void SetSpillCut(const SpillCut &cut)
const Cut kNumuContainFD2017
const SystShifts kNoShift
const Cut kHasNeutrino([](const caf::SRProxy *sr){return(sr->mc.nnu!=0);})
Check if MC slice has neutrino information (useful for in-and-out tests)
void NuMu2019_BasicPIDPlots_FD(bool isFHC, std::string period="full")
const Binning kNumuCCEOptimisedBinning
Optimised binning for numuCCE from L. Vinton. See docdb 16332. This was close to 'custC' in that talk...
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const Var kCVNBestMuonScore([](const caf::SRProxy *sr){float muonScore=-5.0;if(kCVNMuonIdx(sr)< 0.0) return muonScore;if(!sr->vtx.elastic.IsValid) return muonScore;muonScore=sr->vtx.elastic.fuzzyk.png[(unsigned int) kCVNMuonIdx(sr)].cvnpart.muonid;if(sr->vtx.elastic.fuzzyk.png[(unsigned int) kCVNMuonIdx(sr)].len > 500.0) muonScore=1.0;return muonScore;})
: Muon score for best muon prong by CVN score & length
void SetLoaderPath(const std::string &path, caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Configure loader via wildcard path.
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
const Cut kNoCut
The simplest possible cut: pass everything, used as a default.