8 #include <unordered_map> 26 SystShifts(
const std::map<const ISyst*, double>& shifts);
27 SystShifts(
const std::map<const ISyst*, stan::math::var>& shifts);
41 virtual std::unique_ptr<SystShifts>
Copy()
const;
51 void SetShift(
const ISyst* syst,
double shift,
bool force=
false);
58 template <
typename T=
double>
91 mutable std::unordered_map<const ISyst*, stan::math::var>
fSystsStan;
108 std::unique_ptr<SystShifts>
Copy()
const override;
121 std::unique_ptr<SystShifts>
Copy()
const override;
136 const std::vector <std::pair <const ISyst*, SystMode> >& systConfigs,
137 const int nUniverses,
const int seed = 1001);
static int fgNextID
The next unused ID.
std::string ShortName() const
Brief description of component shifts, for printing to screen.
Cuts and Vars for the 2020 FD DiF Study.
virtual stan::math::var Prior() const
virtual std::unique_ptr< SystShifts > Copy() const
Proxy for caf::SRNeutrino.
virtual ~SystShifts()=default
Simple record of shifts applied to systematic parameters.
Proxy for caf::StandardRecord.
std::unordered_map< const ISyst *, stan::math::var > fSystsStan
Implement a class for bounded Gaussian to prevent large pulls.
static SystShifts Nominal()
Encapsulate code to systematically shift a caf::SRProxy.
static std::unique_ptr< SystShifts > LoadFrom(TDirectory *dir, const std::string &name)
int ID() const
SystShifts with the same set of systs should have the same ID.
std::string LatexName() const
Long description of component shifts, for plot labels.
T GetShift(const ISyst *syst) const
std::vector< SystShifts > GetSystShiftsMultiverse(const std::vector< std::pair< const ISyst *, SystMode > > &systConfigs, const int nUniverses, const int seed)
bool HasStan(const ISyst *s) const
std::unordered_map< const ISyst *, double > fSystsDbl
const SystShifts kNoShift
virtual stan::math::var LogPrior() const
std::vector< const ISyst * > ActiveSysts() const
double Penalty() const
Penalty term for (frequentist) chi-squared fits.
void SaveTo(TDirectory *dir, const std::string &name) const
void RemoveShift(const ISyst *syst)
void SetShift(const ISyst *syst, double shift, bool force=false)
void Shift(caf::SRProxy *sr, double &weight) const