40 typedef std::map<TString, std::map<TString, SystShifts>>
Group;
50 const TString
period=
"full")
60 if (!(option.Contains(
"FHC") || option.Contains(
"RHC")))
67 if(option.Contains(
"CalibUp"))
70 else if(option.Contains(
"CalibDown"))
73 else if(option.Contains(
"CalibShape"))
76 else if(option.Contains(
"Cherenkov"))
79 else if(option.Contains(
"LightUp"))
82 else if(option.Contains(
"LightDown"))
85 else if(option.Contains(
"LightNom"))
97 <<
" --> adding loader path for standard ND nominal\n\n";
106 else if(option.Contains(
"RelCalib"))
108 int sign = (option.Contains(
"Up") ? +1:-1);
122 else if(option.Contains(
"Normal"))
127 if (option.Contains(
"NoTau"))
132 if(option.Contains(
"FakeData"))
139 std::cout <<
"\n\nSwapping ND Data for fake data \n\n";
154 TString syst_group_name,
158 syst_group.push_back({
loader, syst_group_name, group_shifts});
166 : fSysts(systs), fShifts(shifts), fDummy(dummy) {}
169 : fSysts(systs), fShifts({+2, +1, -1, -2}), fDummy(
false) {}
174 for(
auto syst: fSysts){
175 std::map<TString, SystShifts> systshifts;
176 for(
auto sigma: fShifts)
177 systshifts.insert({fShiftNames[
sigma],
180 ret.insert({TString(syst->ShortName()), systshifts});
185 std::map<int, TString> fShiftNames =
186 {{+1,
"PlusOne"}, {-1,
"MinusOne"},
188 {+2,
"PlusTwo"}, {-2,
"MinusTwo"}};
209 std::vector<const ISyst*> flux_systs;
210 for(
int i = 0;
i < 5;
i++)
216 std::vector<const ISyst*> geniepca_systs;
217 for(
int i = 0;
i < 5;
i++)
226 int lastsyst = maxsyst;
227 if(maxsyst < 0) lastsyst = geniesysts.size();
228 return std::vector<const ISyst*>(geniesysts.begin() + minsyst, geniesysts.begin() + lastsyst);
266 TFile*
inFile = TFile::Open( f_quantile.c_str() );
268 if (inFile->IsZombie()) {
272 TH2 *FDSpec2D = (TH2*)inFile->FindObjectAny(
"FDSpec2D");
273 const unsigned int nquantiles = 4;
274 std::vector<Cut> HadEFracQuantCuts =
QuantileCutsFromTH2( FDSpec2D, axisNumu, axisHadEFrac, nquantiles );
275 return HadEFracQuantCuts;
285 std::map<TString, IPredictionGenerator*> &
gens)
287 gens.insert({
"Numu_Extrap_Quant0",
291 for(
int i = 1;
i <= (
int)HadEFracQuantCuts.size();
i++)
292 gens.insert({TString(
"Numu_Extrap_Quant"+std::to_string(i)),
293 new NumuExtrapGenerator(axisNumu,
294 cutNumuFD && HadEFracQuantCuts[i-1],
295 cutNumuND && HadEFracQuantCuts[i-1],
305 std::map<TString, IPredictionGenerator*> &
gens)
307 gens.insert({
"Numu_NoExtrap_Quant0",
309 for(
int i = 1;
i <= (
int)HadEFracQuantCuts.size();
i++)
310 gens.insert({TString(
"Numu_NoExtrap_Quant"+std::to_string(i)),
311 new NoExtrapGenerator(axisNumu, cutNumuFD && HadEFracQuantCuts[i-1], kMCWeight) });
321 std::map<TString, IPredictionGenerator*> &
gens)
323 gens.insert({
"Nue_ComboExtrap",
340 std::map<TString, IPredictionGenerator*> &
gens)
342 gens.insert({
"Nue_PropExtrap",
356 std::map<TString, IPredictionGenerator*> &
gens)
358 gens.insert({
"Nue_NoExtrap",
387 std::map<TString, IPredictionGenerator*>
gens;
Near Detector underground.
Far Detector at Ash River.
Cuts and Vars for the 2020 FD DiF Study.
const NueAcceptSystSignalKin2018RHC kNueAcceptSystSignalKin2018RHC
const SummedSyst * getAna2018SummedSmallXsecSysts(const EAnaType2018 ana)
Simple record of shifts applied to systematic parameters.
Collection of SpectrumLoaders for many configurations.
const Cut kNue2018NDCVNSsb
const NuTruthSystComponentScale kTauScaleSyst("NuTauScale","#nu_{#tau} Scale", kIsTau_NT &&!kIsNC_NT, 0.6, NuTruthSystComponentScale::kLinear)
100% uncertainty scale on taus
const HistAxis kHadEFracAxis("E_{had.} / E_{#nu}", Binning::Simple(200, 0, 1), kHadEFrac)
HistAxis that implements Hadronic Energy fraction binning used by L.Vinton to derive Hadronic Energy ...
void DisableLoader(caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Loaders for Cherenkov paths/definitions.
const NeutronVisEScaleSyst2018 kNeutronVisEScalePrimariesSyst2018(false)
const DummyAnaSyst kAnaRelativeCalibSyst("RelativeCalib","RelCalib")
BeamSyst * GetFluxPrincipals2018(int PCIdx)
const MuEScaleSyst2017 kMuEScaleSyst2017(0.0074, 0.0012)
Loaders for calibration shape paths/definitions.
const DummyAnaSyst kAnaLightlevelSyst("Lightlevel","Lightlevel")
std::string GetLoaderPath(caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap) const
Loaders for absolute calibration paths/definitions.
const DummyAnaSyst kAnaCalibrationSyst("Calibration","AbsCalib")
Loaders for light level paths/definitions.
const DummyAnaSyst kAnaCherenkovSyst("Cherenkov","Cherenkov")
std::vector< const ISyst * > fSysts
const RelMuEScaleSyst2017 kRelMuEScaleSyst2017(0.0045, 10.5)
const NueAcceptSystBkg2018RHC kNueAcceptSystBkg2018RHC
RHC.
const NueAcceptSystSignalKin2018FHC kNueAcceptSystSignalKin2018FHC
const DirectHadEScaleSyst2017 kDirectHadEScaleSyst2017(0.05)
const Var kXSecCVWgt2018RPAFix
const NueAcceptSystBkg2018FHC kNueAcceptSystBkg2018FHC
FHC.
SystGroupHelper(std::vector< const ISyst * > systs)
const HistAxis kNumuCCOptimisedAxis("Reconstructed Neutrino Energy (GeV)", kNumuCCEOptimisedBinning, kCCE)
HistAxis that implements optimised numuCCE from L. Vinton. See docdb 16332. This was close to 'custC'...
GeniePCASyst * GetGeniePrincipals2018Small(int PCIdx)
const SystShifts kNoShift
SystGroupHelper(std::vector< const ISyst * > systs, std::vector< int > shifts, bool dummy)
const DirectRelHadEScaleSyst2017 kDirectRelHadEScaleSyst2017(0.05)
std::vector< const ISyst * > getAllXsecSysts_2018_RPAFix()
const MichelTaggingSyst2018 kMichelTaggingSyst2018
const Cut kNue2018FDAllSamples
std::vector< Cut > QuantileCutsFromTH2(TH2 *quantileHist, const HistAxis &independentAxis, const HistAxis &quantileAxis, const unsigned int &numQuantiles, const bool verbose)
: Do the same as the QuantileCuts function but taking in the TH2 instead of making it...
For nominal spectra and reweighting systs (xsec/flux)
void SetLoaderPath(const std::string &path, caf::Det_t det, DataMC datamc, DataSource src=kBeam, SwappingConfig swap=kNonSwap)
Configure loader via wildcard path.
const HistAxis kNue2018Axis("NuE Energy / Analysis Bin", kNue2018Binning, kNue2018AnaBin)
Use this Axis for Ana2018, official Axis.
std::vector< int > fShifts
const DummyAnaSyst kAnaCalibShapeSyst("CalibShape","CalibShape")