PredictionSystNue2017.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "CAFAna/Core/ISyst.h"
4 
6 
7 namespace ana
8 {
9  /// Doesn't actually shift anything. Contains info about what files to load
10  /// shifted predictions from.
11  class DummyNue2017Syst: 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
43 
49 
56 
59 
63 
64 
65  /// These are the systs that \ref PredictionSystNue2017 will be able to
66  /// handle.
67  const std::vector<const DummyNue2017Syst*> kNue2017Systs =
68  {
69 
82 
88 
95 
98 
99  &kNue2017NormSystBoth
100 // &kNue2017NormSystSig,
101 // &kNue2017NormSystBkg
102  };
103 
104  enum class ENue2017ExtrapType{
105  kNoExtrap,
107  kCombo
108  };
109 
110  /// Loads shifted spectra from files
112  {
113  public:
116  const std::vector<const DummyNue2017Syst*>& systs = kNue2017Systs,
117  const std::string fname = "/nova/ana/nu_e_ana/Ana2017/Predictions/provisional/pred_nue_reduced_v9.root");
118 
119  virtual ~PredictionSystNue2017();
120 
121  static std::unique_ptr<PredictionSystNue2017> LoadFrom(TDirectory* dir, const std::string& name);
122  void SaveTo(TDirectory* dir, const std::string& name) const override;
123 
124  protected:
126 
127  void AddNormSysts(const std::vector<const DummyNue2017Syst*>& systs);
128 
129  };
130 }
const DummyNue2017Syst kNue2017NormSystSig("nue2017NueNormSig","Sig. Norm.",{0,+1}, false)
const XML_Char * name
Definition: expat.h:151
const DummyNue2017Syst kNue2017CherenkovSyst("nue2017Cherenkov","Cherenkov",{0,+1}, false)
Implements systematic errors by interpolation between shifted templates.
Cuts and Vars for the 2020 FD DiF Study.
Definition: vars.h:6
const DummyNue2017Syst kNue2017PPFXPC04Syst("nue2017ppfx_pc04","PPFXPC04",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017NormSystBkg("nue2017NueNormBkg","Bkg. Norm.",{0,+1}, false)
std::vector< SystGroupDef > systs
Definition: syst_header.h:385
void SaveTo(const osc::IOscCalc &x, TDirectory *dir, const std::string &name)
const DummyNue2017Syst kNue2017MaNCRESSyst("nue2017MaNCRES","MaNCRES",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017ExtrapSigSyst("nue2017extrap_signalkin","Nue Signal Extrapolation",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017MaCCRESSyst("nue2017MaCCRES","MaCCRES",{-2,-1, 0,+1,+2}, false)
Proxy for caf::StandardRecord.
Definition: SRProxy.h:2126
const DummyNue2017Syst kNue2017ExtrapBkgSyst("nue2017extrap_bkg","Nue Bkg Extrapolation",{-2,-1, 0,+1,+2}, false)
General interface to oscillation calculators.
Definition: StanTypedefs.h:22
DummyNue2017Syst(const std::string &shortName, const std::string &longName, const std::vector< int > &shifts, bool isAltSample)
shortName must match exactly the component in the filename
const DummyNue2017Syst kNue2017BeamTransportSyst("nue2017beamTransportComb","Combined Beam Transport",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017MvCCRESSyst("nue2017MvCCRES","MvCCRES",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017PPFXPC02Syst("nue2017ppfx_pc02","PPFXPC02",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017CalibShapeSyst("nue2017CalibShape","CalibShape",{0,+1}, false)
Encapsulate code to systematically shift a caf::SRProxy.
Definition: ISyst.h:14
const DummyNue2017Syst kNue2017NormSystBoth("nue2017NormBoth","Sig+Bkg Norm.",{0,+1}, false)
std::unique_ptr< T > LoadFrom(TDirectory *dir, const std::string &label)
Definition: LoadFromFile.h:17
const std::vector< const DummyNue2017Syst * > kNue2017Systs
const DummyNue2017Syst kNue2017RPAShapeRESSyst("nue2017RPAShapeRES","RPAShapeRES",{0,+1,+2}, false)
const DummyNue2017Syst kNue2017RadCorrNueBarSyst("nue2017radcorrnuebar","RadCorrNueBar",{-2,-1, 0,+1,+2}, false)
Loads shifted spectra from files.
const DummyNue2017Syst kNue2017LightLevelSyst("nue2017Lightlevel","LightLevel",{-1, 0,+1}, false)
const DummyNue2017Syst kNue2017DISvnCC1piSyst("nue2017DISvnCC1pi","DISvnCC1pi",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017PPFXPC00Syst("nue2017ppfx_pc00","PPFXPC00Sys",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017AbsCalibSyst("nue2017Calibration","AbsCalib",{-1, 0,+1}, false)
const DummyNue2017Syst kNue2017MECq0ShapeSyst("nue2017MECq0Shape","MECq0Shape",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017PPFXPC01Syst("nue2017ppfx_pc01","PPFXPC01",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017RelCalibSyst("nue2017RelativeCalib","RelCalib",{-2, 0,+2}, false)
Oscillation probability calculators.
Definition: Calcs.h:5
const DummyNue2017Syst kNue2017SecondClassCurrSyst("nue20172ndclasscurr","SecondClassCurr",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017RadCorrNueSyst("nue2017radcorrnue","RadCorrNue",{-2,-1, 0,+1,+2}, false)
TDirectory * dir
Definition: macro.C:5
std::vector< int > Shifts() const
std::vector< int > fShifts
const DummyNue2017Syst kNue2017MaCCQE_reducedSyst("nue2017MaCCQE_reduced","MaCCQE_reduced",{-2,-1, 0,+1,+2}, false)
string shortName
THUMBNAIL BLOCK: We need to make a thumbnail for each.
const DummyNue2017Syst kNue2017PPFXPC03Syst("nue2017ppfx_pc03","PPFXPC03",{-2,-1, 0,+1,+2}, false)
virtual void Shift(double, caf::SRProxy *, double &) const
Perform the systematic shift.
const DummyNue2017Syst kNue2017AllSmallXSecSyst("nue2017SumSmallXSecJoint2017","SumSmallXSecJoint2017",{-2,-1, 0,+1,+2}, false)
const DummyNue2017Syst kNue2017RPAShapeEnhSyst("nue2017RPAShapeenh","RPAShapeEnh",{-2,-1, 0,+1,+2}, false)
enum BeamMode string