7 #include "CAFAna/Core/Var.h" 29 std::string polarity =
"fhc";
if (!isFHC ) polarity =
"rhc" ;
33 std::cout <<
"\n================================= \n" 34 <<
"\n\t isFHC --> " << isFHC <<
" --> " << polarity
35 <<
"\n\t isData --> " << isData <<
" --> " << data
36 <<
"\n\t Period --> " <<
period 37 <<
"\n\t isFD --> " << isFD <<
" --> " << detector
38 <<
"\n================================= \n" 42 std::vector<std::pair<Cut, std::string> > TrueCuts, SelCuts, MyCuts;
43 TrueCuts.clear(); SelCuts.clear(); MyCuts.clear();
60 for (
size_t sel=0; sel<SelCuts.size(); ++sel) {
61 for (
size_t tr=0;
tr<TrueCuts.size(); ++
tr) {
62 Cut kThisCut = SelCuts[sel].first && TrueCuts[
tr].first;
63 std::string kThisName = SelCuts[sel].second + TrueCuts[
tr].second;
67 const size_t NCuts = MyCuts.size();
75 if ( isFHC && isFD ) MyDef =
"prod_sumdecaf_R17-11-14-prod4reco.b_fd_cosmic_fhcTune_full_v1_goodruns_numu2018loose";
76 else if ( isFHC && !isFD ) MyDef =
"prod_sumdecaf_R17-11-14-prod4reco.a_fd_cosmic_rhcTune_HighGain_v1_goodruns_snapshot_170116_numu2018loose";
77 else if ( isFHC && !isData) MyDef =
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_v1";
78 else if ( isFHC && isData) MyDef =
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_numi_fhc_full_v1_addShortSimpleCVN_goodruns";
79 else if (!isFHC && !isData) MyDef =
"prod_caf_R17-11-14-prod4reco.neutron-respin.b_nd_genie_nonswap_rhc_nova_v08_full_v1";
80 else if (!isFHC && isData) MyDef =
"prod_caf_R17-11-14-prod4reco.neutron-respin.b_nd_numi_rhc_full_v1_goodruns";
96 Cut kThisCut = MyCuts[
cc].first;
103 sCVNScoremuon [
cc] =
new Spectrum(
"CVN Muon Score" , kSimpBins , loader,
kCVNm , kThisCut,
kNoShift, kMyWeight );
110 std::string OutName =
"BasicPIDPlots_2019_"+detector+
"_"+data+
"_"+polarity+
"_"+
period+
".root";
111 TFile *
OutFile = TFile::Open(OutName.c_str(),
"RECREATE");
115 sNuRecoE [
cc] ->
SaveTo( OutFile, TString(
"RecoNuE" )+TString(ThisCutNa) ) ;
116 sReMIdScore [
cc] ->
SaveTo( OutFile, TString(
"ReMIdScore" )+TString(ThisCutNa) ) ;
117 sProngScoremuon[
cc] ->
SaveTo( OutFile, TString(
"ProngCVNMuonScore" )+TString(ThisCutNa) ) ;
118 sCosRejScoreP4 [
cc] ->
SaveTo( OutFile, TString(
"Prod4CosRejScore" )+TString(ThisCutNa) ) ;
119 sCVNScoremuon [
cc] ->
SaveTo( OutFile, TString(
"CVNMuonScore" )+TString(ThisCutNa) ) ;
const Cut kIsNumuCC(CCFlavSel(14, 14))
Select CC .
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.
const Cut kNumuContainND2017([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return false;for(unsigned int i=0;i< sr->vtx.elastic.fuzzyk.nshwlid;++i){TVector3 start=sr->vtx.elastic.fuzzyk.png[i].shwlid.start;TVector3 stop=sr->vtx.elastic.fuzzyk.png[i].shwlid.stop;if(std::min(start.X(), stop.X())< -180.0) return false;if(std::max(start.X(), stop.X()) > 180.0) return false;if(std::min(start.Y(), stop.Y())< -180.0) return false;if(std::max(start.Y(), stop.Y()) > 180.0) return false;if(std::min(start.Z(), stop.Z())< 20.0) return false;if(std::max(start.Z(), stop.Z()) > 1525.0) return false;}if(sr->trk.kalman.ntracks< 1) return false;for(unsigned int i=0;i< sr->trk.kalman.ntracks;++i){if(i==sr->trk.kalman.idxremid) continue;else if(sr->trk.kalman.tracks[i].start.Z() > 1275||sr->trk.kalman.tracks[i].stop.Z() > 1275) return false;}return(sr->trk.kalman.ntracks > sr->trk.kalman.idxremid &&sr->slc.firstplane > 1
&&sr->slc.lastplane< 212 &&sr->trk.kalman.tracks[0].start.Z()< 1100
&&(sr->trk.kalman.tracks[0].stop.Z()< 1275 ||sr->sel.contain.kalyposattrans< 55) &&sr->sel.contain.kalfwdcellnd > 5 &&sr->sel.contain.kalbakcellnd > 10);})
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?
void SetSpillCut(const SpillCut &cut)
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;})
Representation of a spectrum in any variable, with associated POT.
const XML_Char const XML_Char * data
const Cut kInCosmicTimingWindow
Is the event far from the start and ends of the spill ? For FD cosmic selection.
const Cut kNumuContainFD2017
base_types push_back(int_type())
virtual void Go() override
Load all the registered spectra.
std::vector< float > Spectrum
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_Spectrum(bool isFHC, bool isData, bool isFD, std::string period="full")
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 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
static Binning Simple(int n, double lo, double hi, const std::vector< std::string > &labels={})
const Var kUnweighted
The simplest possible Var, always 1. Used as a default weight.
const Cut kNoCut
The simplest possible cut: pass everything, used as a default.