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 Far detector isFD --> " << detector
38 <<
"\n================================= \n" 42 std::vector<std::pair<Cut, std::string> > TrueCuts, SelCuts, MyCuts;
43 TrueCuts.clear(); SelCuts.clear(); MyCuts.clear();
55 for (
size_t sel=0; sel<SelCuts.size(); ++sel) {
56 for (
size_t tr=0;
tr<TrueCuts.size(); ++
tr) {
57 Cut kThisCut = SelCuts[sel].first && TrueCuts[
tr].first;
58 std::string kThisName = SelCuts[sel].second + TrueCuts[
tr].second;
62 const size_t NCuts = MyCuts.size();
70 if ( isFHC && !isData) MyDef =
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_genie_nonswap_fhc_nova_v08_full_v1";
71 else if ( isFHC && isData) MyDef =
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_numi_fhc_full_v1_addShortSimpleCVN_goodruns";
72 else if (!isFHC && !isData) MyDef =
"prod_caf_R17-11-14-prod4reco.neutron-respin.b_nd_genie_nonswap_rhc_nova_v08_full_v1";
73 else if (!isFHC && isData) MyDef =
"prod_caf_R17-11-14-prod4reco.neutron-respin.b_nd_numi_rhc_full_v1_goodruns";
89 Cut kThisCut = MyCuts[
cc].first;
95 sCVNScoremuon [
cc] =
new Spectrum(
"CVN Muon Score" , kSimpBins , loader,
kCVNm , kThisCut,
kNoShift, kMyWeight );
102 std::string OutName =
"BasicPIDPlots_2019_"+detector+
"_"+data+
"_"+polarity+
"_"+
period+
".root";
103 TFile *
OutFile = TFile::Open(OutName.c_str(),
"RECREATE");
107 sNuRecoE [
cc] ->
SaveTo( OutFile, TString(
"RecoNuE" )+TString(ThisCutNa) ) ;
108 sReMIdScore [
cc] ->
SaveTo( OutFile, TString(
"ReMIdScore" )+TString(ThisCutNa) ) ;
109 sProngScoremuon[
cc] ->
SaveTo( OutFile, TString(
"ProngCVNMuonScore" )+TString(ThisCutNa) ) ;
110 sCosRejScoreP4 [
cc] ->
SaveTo( OutFile, TString(
"Prod4CosRejScore" )+TString(ThisCutNa) ) ;
111 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
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)
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
void NuMu2019_BasicPIDPlots_ND(bool isFHC, bool isData, 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
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.