4 #include "CAFAna/Core/Binning.h" 9 #include "CAFAna/Core/HistAxis.h" 35 const std::string fnamefar =
"$NOVA_PROD/mc/FA14-10-28/genie/fd/caf/*/*/*_nonswap_*_r*00_s??_FA*";
37 const std::string fnametau =
"$NOVA_PROD/mc/FA14-10-28/genie/fd/caf/*/*/*_tau_*_r*00_s??_FA*";
38 const std::string fnamedata =
"$NOVA_PROD/mc/FA14-11-25/genie/nd/caf/*/*/*_s*0_FA*";
76 return (fracmip > 0. && fracmip < 0.5);
86 const Cut kNCPresel = kGoodFracMIP &&
92 const Cut cutND(
kND && kNCPresel);
93 const Cut cutFD(
kFD && kNCPresel);
107 loaders, decompNC, decompNumu, axisNC, axisNumu, cutFD, cutND, cutNDNumu
125 axisNC.label, axisNC.bins, axisNC.var, cutFD
142 TFile* rootOut =
new TFile(
"extrapsterile_demo.root",
"RECREATE");
144 extrap.SaveTo(rootOut,
"NCextrap");
160 calcst->
SetDm(2, 7.53
e-5);
161 calcst->
SetDm(3, 2.40
e-3 + 7.53
e-5);
164 double scale = 18e20;
169 TH1* hncnue = extrap.NCNueProportion().ToTH1();
170 hncnue->SetTitle(
"Proportion of NC events originating from #nu_{e}");
171 hncnue->Draw(
"hist");
173 TH1* hncantinue = extrap.NCAntiNueProportion().ToTH1();
174 hncantinue->SetTitle(
"Proportion of NC events originating from #bar{#nu}_{e}");
175 hncantinue->Draw(
"hist");
177 TH1* hncnumu = extrap.NCNumuProportion().ToTH1();
178 hncnumu->SetTitle(
"Proportion of NC events originating from #nu_{#mu}");
179 hncnumu->Draw(
"hist");
181 TH1* hncantinumu = extrap.NCAntiNumuProportion().ToTH1();
182 hncantinumu->SetTitle(
"Proportion of NC events originating from #bar{#nu}_{#mu}");
183 hncantinumu->Draw(
"hist");
197 extrap.OscNCComponent().ToTH2(scale)->Draw(
"colz");
199 extrap.NueSurvComponent().ToTH2(scale)->Draw(
"colz");
201 extrap.AntiNueSurvComponent().ToTH2(scale)->Draw(
"colz");
203 extrap.NumuSurvComponent().ToTH2(scale)->Draw(
"colz");
205 extrap.AntiNumuSurvComponent().ToTH2(scale)->Draw(
"colz");
207 extrap.NueAppComponent().ToTH2(scale)->Draw(
"colz");
209 extrap.AntiNueAppComponent().ToTH2(scale)->Draw(
"colz");
211 extrap.NumuAppComponent().ToTH2(scale)->Draw(
"colz");
213 extrap.AntiNumuAppComponent().ToTH2(scale)->Draw(
"colz");
280 TH1* hratioNull = predNoOsc.
ToTH1(scale);
281 hratioNull->Divide(baseNoOsc.
ToTH1(scale));
282 hratioNull->SetTitle(
"Ratio of Extrapolation to FD MC (No Oscillations)");
283 hratioNull->Draw(
"hist");
291 TH1* hratioOsc = predOsc.
ToTH1(scale);
292 hratioOsc->Divide(pred3FlavOsc.
ToTH1(scale));
293 hratioOsc->SetTitle(
"Ratio of Sterile to 3 Flavor Prediction (Same Oscillations)");
294 hratioOsc->Draw(
"hist");
caf::Proxy< unsigned int > nshwlid
Near Detector underground.
Pass neutrinos through unchanged.
caf::Proxy< caf::SRFuzzyK > fuzzyk
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
void SetNFlavors(int nflavors)
const std::string fnamefar
TH1D * ToTH1(double exposure, Color_t col=kBlack, Style_t style=kSolid, EExposureType expotype=kPOT, EBinType bintype=kBinContent) const
Histogram made from this Spectrum, scaled to some exposure.
Proxy for caf::StandardRecord.
Collection of SpectrumLoaders for many configurations.
void SetDelta(int i, int j, double delta)
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?
const Cut kIsNumuApp(CCFlavSel(14, 12))
Select CC .
Adapt the PMNS_Sterile calculator to standard interface.
osc::IOscCalcAdjustable * DefaultOscCalc()
Create a new calculator with default assumptions for all parameters.
const XML_Char int const XML_Char int const XML_Char * base
caf::Proxy< unsigned int > ncalhit
Representation of a spectrum in any variable, with associated POT.
void Go()
Call Go() on all the loaders.
const std::string fnamenear
caf::Proxy< caf::SRElastic > elastic
const std::string fnameswap
caf::Proxy< std::vector< caf::SRFuzzyKProng > > png
const Var kCaloE
Summed calorimetric energy of all hits in slice, uncorrected.
caf::Proxy< unsigned int > nmiphit
SpectrumLoaderBase & GetLoader(caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Retrieve a specific loader.
Optimized version of OscCalcPMNS.
const Cut kIsSig(CCFlavSel(12, 14))
Select CC .
osc::NoOscillations noosc
void SetAngle(int i, int j, double th)
caf::Proxy< bool > IsValid
caf::Proxy< caf::SRSlice > slc
void SetDm(int i, double dm)
virtual void SetL(double L) override
const std::string fnametau
virtual void SetRho(double rho) override
virtual Spectrum PredictUnoscillated() const override
caf::Proxy< caf::SRVector3D > vtx
A prediction object compatible with sterile oscillations.
caf::Proxy< caf::SRVertexBranch > vtx
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={})
Just return the ND truth spectra as the decomposition.