6 #include "TLegendEntry.h" 11 #include "CAFAna/Core/Cut.h" 12 #include "CAFAna/Cuts/NueCutsFirstAna.h" 22 #include "CAFAna/nue/pi0xcheck/make_pi0_xcheck.h" 32 std::string fData =
isFHC ?
"prod_caf_R17-11-14-prod4reco.remid-hotfix.b_nd_numi_fhc_full_v1_addShortSimpleCVN_goodruns" :
33 "prod_caf_R17-11-14-prod4reco.neutron-respin.b_nd_numi_rhc_full_v1_goodruns" ;
34 std::string fMC =
isFHC ?
"prod_caf_R17-11-14-prod4reco.neutron-respin.c_nd_genie_nonswap_fhc_nova_v08_full_v1" :
35 "prod_caf_R17-11-14-prod4reco.neutron-respin.c_nd_genie_nonswap_rhc_nova_v08_full_v1" ;
81 for(
unsigned int j = 0;
j <
kN2D; ++
j){
96 TFile
fout((
"make_pi0_xcheck_output_"+tag+
".root").c_str(),
"RECREATE");
106 dataSpects[
i][
j]->
SaveTo(&fout, d.c_str());
107 mcSpects[
i][
j]->
SaveTo(&fout, m.c_str());
108 bkgSpects[
i][
j]->
SaveTo(&fout, b.c_str());
113 for(
unsigned int j=0;
j<
kN2D;++
j){
120 dataSpects2[
i][
j]->
SaveTo(&fout, d.c_str());
121 mcSpects2[
i][
j]->
SaveTo(&fout, m.c_str());
122 bkgSpects2[
i][
j]->
SaveTo(&fout, b.c_str());
134 dataSpectsMulti[
i][
j]->
SaveTo(&fout, d.c_str());
135 mcSpectsMulti[
i][
j]->
SaveTo(&fout, m.c_str());
136 bkgSpectsMulti[
i][
j]->
SaveTo(&fout, b.c_str());
std::vector< PlotDef2D > plots2d
Cuts and Vars for the 2020 FD DiF Study.
void make_pi0_xcheck(bool isFHC=1)
std::vector< double > Spectrum
const unsigned int kNSels
void SetSpillCut(const SpillCut &cut)
const unsigned int kNPlots
Representation of a spectrum in any variable, with associated POT.
virtual void Go()=0
Load all the registered spectra.
const std::vector< Plot > plots
const SpillCut kStandardDQCuts([](const caf::SRSpillProxy *spill){if(spill->dcmedgematchfrac==0 &&spill->fracdcm3hits==0 &&spill->nmissingdcmslg==0) return bool(spill->isgoodspill); if(spill->det==caf::kNEARDET && (spill->fracdcm3hits > 0.45|| spill->nmissingdcms > 0)) return false; if(spill->eventincomplete) return false; if(spill->det==caf::kFARDET && spill->nmissingdcmslg > 0) return false; if(spill->det==caf::kFARDET && !spill->ismc && spill->dcmedgematchfrac<=0.2) return false;return true;})
Cut out events with a noisy detector or with parts missing.
const Cut kTruePi0([](const caf::SRProxy *sr){if(sr->vtx.elastic.IsValid==false) return false;if(sr->mc.nnu==0) return false;if(sr->mc.nu.size()< 1) return false;assert(sr->mc.nnu==1);if(sr->mc.nu[0].prim.size()==0) return false;float Pi0Mass=0.134977;float KE=-10.0;float TE=-99.0;int nprim=sr->mc.nu[0].prim.size();int npi0=0;for(int i=0;i< nprim;i++){if(sr->mc.nu[0].prim[i].pdg==111){TE=sr->mc.nu[0].prim[i].p.E;KE=pow(pow(TE, 2.0)-pow(Pi0Mass, 2.0), 0.5);if(KE >=0.0) npi0++;}}if(npi0){return true;}return false;})
void SaveTo(TDirectory *dir, const std::string &name) const
const SystShifts kNoShift
const std::vector< PlotDefMulti > plotsMulti
Base class for the various types of spectrum loader.
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
const unsigned int kNMulti
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.