9 #include "CAFAna/Extrap/ExtrapSterile.h" 104 double pot1yr = 6e20;
105 double pot3yr = 18e20;
119 TFile* rootF =
new TFile(outfile.c_str(),
"RECREATE");
121 TDirectory*
tmp = gDirectory;
122 TDirectory* saveDir = gDirectory;
125 saveDir = rootF->mkdir(
"decompNC");
126 decompNC .
SaveTo(saveDir);
127 saveDir = rootF->mkdir(
"prediction");
129 saveDir = rootF->mkdir(
"sData1Yr");
130 sFDData1y .
SaveTo(saveDir);
131 saveDir = rootF->mkdir(
"sData3Yr");
132 sFDData3y .
SaveTo(saveDir);
133 saveDir = rootF->mkdir(
"sCos1Yr");
134 sCosmic1y .
SaveTo(saveDir);
135 saveDir = rootF->mkdir(
"sCos3Yr");
136 sCosmic3y .
SaveTo(saveDir);
137 saveDir = rootF->mkdir(
"pFDPENum");
138 pFDPurEffNum.
SaveTo(saveDir);
139 saveDir = rootF->mkdir(
"pFDPDen");
140 pFDPurityDen.
SaveTo(saveDir);
141 saveDir = rootF->mkdir(
"pFDEDen");
142 pFDEfcncyDen.
SaveTo(saveDir);
143 saveDir = rootF->mkdir(
"sNDPENum");
144 sNDPurEffNum.SaveTo(saveDir);
145 saveDir = rootF->mkdir(
"sNDPDen");
146 sNDPurityDen.SaveTo(saveDir);
147 saveDir = rootF->mkdir(
"sNDEDen");
148 sNDEfcncyDen.SaveTo(saveDir);
Near Detector underground.
const Cut kNusFDFiducial([](const caf::SRProxy *sr){ if(!sr->vtx.elastic.IsValid) return false;const TVector3 vtx=sr->vtx.elastic.vtx;if(vtx.X()< -680.0) return false;if(vtx.X() > 650.0) return false;if(vtx.Y()< -720.0) return false;if(vtx.Y() > 500.0) return false;if(vtx.Z()< 50.0) return false;if(vtx.Z() > 5450.0) return false;return true;})
FD Fiducial volume from docdb 15285.
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
const std::string fnametau_concat
const Cut kNusEventQuality([](const caf::SRProxy *sr){if(!sr->vtx.elastic.IsValid) return false;if(sr->sel.nuecosrej.hitsperplane >=8) return false;if(sr->vtx.elastic.fuzzyk.nshwlid==0) return false;if(sr->vtx.elastic.fuzzyk.png[0].shwlid.gap >=100.) return false;if(sr->slc.ncontplanes<=2) return false;return true;})
Data Quality cuts from docdb 14241.
std::unique_ptr< IPrediction > Generate(Loaders &loaders, const SystShifts &shiftMC=kNoShift) const override
void OverridePOT(double newpot)
DO NOT USE UNLESS YOU ARE 110% CERTAIN THERE ISN'T A BETTER WAY!
const std::string fnamecos_concat
Collection of SpectrumLoaders for many configurations.
const Cut kNusNDFiducial([](const caf::SRProxy *sr){assert(sr->vtx.elastic.IsValid &&"Must apply DQ cuts");if(sr->vtx.elastic.vtx.X()< -100.0) return false;if(sr->vtx.elastic.vtx.X() > 100.0) return false;if(sr->vtx.elastic.vtx.Y()< -100.0) return false;if(sr->vtx.elastic.vtx.Y() > 100.0) return false;if(sr->vtx.elastic.vtx.Z()< 200.0) return false;if(sr->vtx.elastic.vtx.Z() > 1000.0) return false;return true;})
ND Fiducial volume from docdb 15242.
Adapt the PMNS_Sterile calculator to standard interface.
virtual void SaveTo(TDirectory *dir, const std::string &name) const override
void SetSpillCut(const SpillCut &cut)
Generates extrapolated NC predictions using ProportionalDecomp.
Representation of a spectrum in any variable, with associated POT.
void Go()
Call Go() on all the loaders.
const Cut kInCosmicTimingWindow
Is the event far from the start and ends of the spill ? For FD cosmic selection.
const SpillCut kOnly14DB([](const caf::SRSpillProxy *spill){if(spill->det!=caf::kFARDET) return true;std::bitset< 14 > binary(spill->dibmask);for(int i=0;i< 14;++i){if(!binary[i]) return false;}return true;})
const std::string fnamenear_concat
void SetSpillCut(const SpillCut &cut)
osc::OscCalcSterile * DefaultSterileCalc(int nflavors)
Create a sterile calculator with default assumptions for all parameters.
const std::string fnameneardata_concat
const Cut kIsNC([](const caf::SRProxy *sr){if(sr->mc.nnu==0) return false;assert(sr->mc.nnu==1);return!sr->mc.nu[0].iscc;})
Is this a Neutral Current event?
Spectrum FakeData(double pot) const
Synonymous with AsimovData(). Retained for compatibility.
SpectrumLoaderBase & GetLoader(caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Retrieve a specific loader.
virtual void Go() override
Load all the registered spectra.
void SaveTo(TDirectory *dir, const std::string &name) const
const HistAxis kNCAxis("Calorimetric Energy (GeV)", kNCDisappearanceEnergyBinning, kCaloE)
Axes used in Ana01 analysis by nus group.
void BlessedPlotsLoad(std::string outfile)
const SystShifts kNoShift
void SaveTo(TDirectory *dir, const std::string &name) const override
const HistAxis kNCBinsNumuCCAxis("Reconstructed Neutrino Energy (GeV)", kNCDisappearanceEnergyBinning, kCCE)
Splits Data proportionally according to MC.
Collaborates with Spectrum and OscillatableSpectrum to fill spectra from CAF files.
A prediction object compatible with sterile oscillations.
const SpillCut kStandardSpillCuts
Apply this unless you're doing something special.
const std::string fnameswap_concat
const std::string fnamefar_concat
void SetLoaderPath(const std::string &path, caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Configure loader via wildcard path.
double Livetime() const
Seconds. For informational purposes only. No calculations use this.