PredictionSystNumu2017.h
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include "CAFAna/Core/ISyst.h"
6 
7 namespace ana
8 {
9  /// Doesn't actually shift anything. Contains info about what files to load
10  /// shifted predictions from.
11  class DummyNumu2017Syst: public ISyst
12  {
13  public:
14  /// \a shortName must match exactly the component in the filename
16  const std::string& longName,
17  const std::vector<int>& shifts, bool isAltSample)
18  : ISyst(shortName, longName), fShifts(shifts),
19  fIsAltSample(isAltSample) {}
20  virtual void Shift(double, caf::SRProxy*, double&) const {}
21 
22  std::vector<int> Shifts() const {return fShifts;}
23  bool IsAltSample() const {return fIsAltSample;}
24 
25  protected:
26  std::vector<int> fShifts;
28  };
29 
30  // TODO: sort out what systs we'll need
41 
43 
48 
54 
60 
61  //extern const DummyNumu2017Syst kNumu2017AbsCalibSyst2Sig;
62 
66 
67 
68  /// These are the systs that \ref PredictionSystNumu2017 will be able to
69  /// handle.
70  const std::vector<const DummyNumu2017Syst*> kNumu2017Systs =
71  {
82 
84 
89 
95 
101 
102 // &kNumu2017AbsCalibSyst2Sig,
103 
104  &kNumu2017NormSystBoth
105 // &kNumu2017NormSystSig,
106 // &kNumu2017NormSystBkg
107  };
108 
111  kNuMu
112  };
113 
114  /// Loads shifted spectra from files
116  {
117  public:
120  int WhichQuant = 1,
121  const std::vector<const DummyNumu2017Syst*>& systs = kNumu2017Systs,
122  const std::string fname = "/nova/ana/nu_mu_ana/Ana2017/Predictions/provisional/pred_numu_reduced_v5.root");
123 
124  virtual ~PredictionSystNumu2017();
125 
126  static std::unique_ptr<PredictionSystNumu2017> LoadFrom(TDirectory* dir, const std::string& name);
127  void SaveTo(TDirectory* dir, const std::string& name) const override;
128 
129  protected:
131 
132  void AddNormSysts(const std::vector<const DummyNumu2017Syst*>& systs);
133 
134  };
135 }
const XML_Char * name
Definition: expat.h:151
const DummyNumu2017Syst kNumu2017NormSystSig("numu2017normSig","Sig. Norm.",{0,+1}, false)
const DummyNumu2017Syst kNumu2017NormSystBoth("numu2017NormBoth","Sig+Bkg Norm.",{0,+1}, false)
Implements systematic errors by interpolation between shifted templates.
virtual void Shift(double, caf::SRProxy *, double &) const
Perform the systematic shift.
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
std::vector< SystGroupDef > systs
Definition: syst_header.h:385
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
const DummyNumu2017Syst kNumu2017RelMuEScale("numu2017RelMuEScale2017","RelMuEScale",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017MaCCQE_reducedSyst("numu2017MaCCQE_reduced","MaCCQE_reduced",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017LightLevelSyst("numu2017Lightlevel","LightLevel",{-1, 0,+1}, false)
const DummyNumu2017Syst kNumu2017AbsMuEScale("numu2017AbsMuEScale2017","AbsMuEScale",{-2,-1, 0,+1,+2}, false)
DummyNumu2017Syst(const std::string &shortName, const std::string &longName, const std::vector< int > &shifts, bool isAltSample)
shortName must match exactly the component in the filename
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2126
General interface to oscillation calculators.
Definition: StanTypedefs.h:23
const DummyNumu2017Syst kNumu2017PPFXPC03Syst("numu2017ppfx_pc03","PPFXPC03",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017RPAShapeRESSyst("numu2017RPAShapeRES","RPAShapeRES",{0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017MaCCRESSyst("numu2017MaCCRES","MaCCRES",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017MaNCRESSyst("numu2017MaNCRES","MaNCRES",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017MvCCRESSyst("numu2017MvCCRES","MvCCRES",{-2,-1, 0,+1,+2}, false)
Encapsulate code to systematically shift a caf::SRProxy.
Definition: ISyst.h:14
std::unique_ptr< T > LoadFrom(TDirectory *dir, const std::string &label)
Definition: LoadFromFile.h:17
const DummyNumu2017Syst kNumu2017CalibShapeSyst("numu2017CalibShape","CalibShape",{0,+1}, false)
std::vector< int > Shifts() const
const DummyNumu2017Syst kNumu2017PPFXPC04Syst("numu2017ppfx_pc04","PPFXPC04",{-2,-1, 0,+1,+2}, false)
const std::vector< const DummyNumu2017Syst * > kNumu2017Systs
const DummyNumu2017Syst kNumu2017AbsHadEScale("numu2017AbsHadEScale2017","AbsHadEScale",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017RelCalibSyst("numu2017RelativeCalib","RelativeCalib",{-2, 0,+2}, false)
const DummyNumu2017Syst kNumu2017PPFXPC00Syst("numu2017ppfx_pc00","PPFXPC00Sys",{-2,-1, 0,+1,+2}, false)
Loads shifted spectra from files.
const DummyNumu2017Syst kNumu2017CherenkovSyst("numu2017Cherenkov","Cherenkov",{0,+1}, false)
Oscillation probability calculators.
Definition: Calcs.h:5
const DummyNumu2017Syst kNumu2017PPFXPC01Syst("numu2017ppfx_pc01","PPFXPC01",{-2,-1, 0,+1,+2}, false)
TDirectory * dir
Definition: macro.C:5
const DummyNumu2017Syst kNumu2017NormSystBkg("numu2017normBkg","Bkg. Norm.",{0,+1}, false)
const DummyNumu2017Syst kNumu2017AllSmallSysts("numu2017SumSmallXSecJoint2017","SumSmallXSecJoint2017",{-2,-1, 0,+1,+2}, false)
string shortName
THUMBNAIL BLOCK: We need to make a thumbnail for each.
const DummyNumu2017Syst kNumu2017RPAShapeEnhSyst("numu2017RPAShapeenh","RPAShapeEnh",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017AbsCalibSyst("numu2017Calibration","AbsCalib",{-1, 0,+1}, false)
const DummyNumu2017Syst kNumu2017RelHadEScale("numu2017RelHadEScale2017","RelHadEScale",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017AllBeamSysts("numu2017beamTransportComb","beamTransportComb",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017NumuSmallSysts("numu2017SumSmallXSecNumu2017","SumSmallXSecNumu2017",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017DISvnCC1piSyst("numu2017DISvnCC1pi","DISvnCC1pi",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017PPFXPC02Syst("numu2017ppfx_pc02","PPFXPC02",{-2,-1, 0,+1,+2}, false)
const DummyNumu2017Syst kNumu2017MECq0ShapeSyst("numu2017MECq0Shape","MECq0Shape",{-2,-1, 0,+1,+2}, false)
enum BeamMode string