46 double argNominal, std::vector<double>
const& lowVec, std::vector<double>
const& highVec) :
56 double argNominal, std::vector<double>
const& lowVec, std::vector<double>
const& highVec,
57 std::vector<int>
const& code) :
59 _paramList(
"paramList",
"List of paramficients",this),
60 _nominal(argNominal), _low(lowVec), _high(highVec), _interpCode(code)
62 for (
auto param : paramList) {
64 coutE(InputArguments) <<
"FlexibleInterpVar::ctor(" <<
GetName() <<
") ERROR: paramficient " << param->
GetName()
65 <<
" is not of type RooAbsReal" << std::endl ;
73 coutE(InputArguments) <<
"FlexibleInterpVar::ctor(" <<
GetName() <<
") invalid input std::vectors " << std::endl;
87 _paramList(
"paramList",
"List of coefficients",this)
96 _paramList(
"paramList",this,other._paramList),
97 _nominal(other._nominal), _low(other._low), _high(other._high), _interpCode(other._interpCode), _interpBoundary(other._interpBoundary)
118 coutE(InputArguments) <<
"FlexibleInterpVar::setInterpCode ERROR: " << param.
GetName()
119 <<
" is not in list" << std::endl;
121 coutI(InputArguments) <<
"FlexibleInterpVar::setInterpCode : " << param.
GetName()
122 <<
" is now " << code << std::endl;
142 coutW(InputArguments) <<
"FlexibleInterpVar::setNominal : nominal is now " << newNominal << std::endl ;
153 coutE(InputArguments) <<
"FlexibleInterpVar::setLow ERROR: " << param.
GetName()
154 <<
" is not in list" << std::endl ;
156 coutW(InputArguments) <<
"FlexibleInterpVar::setLow : " << param.
GetName()
157 <<
" is now " << newLow << std::endl ;
169 coutE(InputArguments) <<
"FlexibleInterpVar::setHigh ERROR: " << param.
GetName()
170 <<
" is not in list" << std::endl ;
172 coutW(InputArguments) <<
"FlexibleInterpVar::setHigh : " << param.
GetName()
173 <<
" is now " << newHigh << std::endl ;
201 if (code < 0 || code > 4) {
202 coutE(InputArguments) <<
"FlexibleInterpVar::evaluate ERROR: param " << i
203 <<
" with unknown interpolation code" << std::endl;
226 if (interpCode < 0 || interpCode > 4) {
227 coutE(InputArguments) <<
"FlexibleInterpVar::evaluate ERROR: param " << 0
228 <<
" with unknown interpolation code" << std::endl;
231 if (interpCode == 4) {
235 for (
unsigned int i = 1; i <
n; i++) {
237 coutE(InputArguments) <<
"FlexibleInterpVar::evaluate ERROR: Code Squashing AD does not yet support having "
238 "different interpolation codes for the same class object "
243 std::string
const &resName = ctx.
buildCall(
"RooFit::Detail::MathFuncs::flexibleInterp", interpCode,
254 if (code < 0 || code > 4) {
255 coutE(InputArguments) <<
"FlexibleInterpVar::evaluate ERROR: param " << i
256 <<
" with unknown interpolation code" << std::endl;
277 os <<
indent <<
"--- FlexibleInterpVar ---" << std::endl;
283 for (
int i=0;i<(
int)
_low.size();i++) {
285 os << std::setw(36) << param.
GetName()<<
": "<<std::setw(7) <<
_low[i]<<
" "<<std::setw(7) <<
_high[i]
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
static void indent(ostringstream &buf, int indent_level)
static unsigned int total
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
void setValueDirty()
Mark the element dirty. This forces a re-evaluation when a value is requested.
Int_t index(const RooAbsArg *arg) const
Returns index of given arg, or -1 if arg is not in the collection.
Storage_t::size_type size() const
Abstract base class for objects that represent a real value and implements functionality common to al...
double getVal(const RooArgSet *normalisationSet=nullptr) const
Evaluate object.
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Structure printing.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooAbsArg * at(Int_t idx) const
Return object at given index, or nullptr if index is out of range.
bool add(const RooAbsArg &var, bool valueServer, bool shapeServer, bool silent)
Overloaded RooCollection_t::add() method insert object into set and registers object as server to own...
A class to maintain the context for squashing of RooFit models into code.
std::string buildCall(std::string const &funcname, Args_t const &...args)
Build the code to call the function with name funcname, passing some arguments.
void addResult(RooAbsArg const *key, std::string const &value)
A function to save an expression that includes/depends on the result of the input node.
std::span< const double > at(RooAbsArg const *arg, RooAbsArg const *caller=nullptr)
std::span< double > output()
std::vector< int > _interpCode
void doEval(RooFit::EvalContext &) const override
Base function for computing multiple values of a RooAbsReal.
std::vector< double > _high
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Interface for detailed printing of object.
void setInterpCode(RooAbsReal ¶m, int code)
void printAllInterpCodes()
void setLow(RooAbsReal ¶m, double newLow)
void setHigh(RooAbsReal ¶m, double newHigh)
void translate(RooFit::Detail::CodeSquashContext &ctx) const override
This function defines a translation for each RooAbsReal based object that can be used to express the ...
void setAllInterpCodes(int code)
std::vector< double > _low
double evaluate() const override
Calculate and return value of polynomial.
~FlexibleInterpVar() override
Destructor.
void setNominal(double newNominal)
virtual void printFlexibleInterpVars(std::ostream &os) const
FlexibleInterpVar()
Default constructor.
const char * GetName() const override
Returns name of object.
double flexibleInterpSingle(unsigned int code, double low, double high, double boundary, double nominal, double paramVal, double res)
Namespace for the RooStats classes.
static T Min()
Returns maximum representation for type T.