51 _x(
"x",
"Dependent", this,
x),
52 _coefList(
"coefList",
"List of coefficients", this),
57 coutE(InputArguments) <<
"RooPolyVar::ctor(" <<
GetName()
58 <<
") WARNING: lowestOrder must be >=0, setting value to 0" << std::endl;
70 _x(
"x",
"Dependent", this,
x),
71 _coefList(
"coefList",
"List of coefficients", this),
81 _x(
"x", this, other.
_x),
95 wksp.push_back(
c->getVal(nset));
117 std::span<double> output = ctx.
output();
119 for (std::size_t i = 0; i < output.size(); ++i) {
125 std::vector<std::span<const double>> vars;
126 vars.reserve(coefs.
size() + 2);
131 std::array<double, RooBatchCompute::bufferSize> zeros;
132 std::array<double, RooBatchCompute::bufferSize> ones;
133 std::fill_n(zeros.data(), zeros.size(), 0.0);
134 std::fill_n(ones.data(), ones.size(), 1.0);
135 std::span<const double> zerosSpan{zeros.data(), 1};
136 std::span<const double> onesSpan{ones.data(), 1};
138 vars.push_back(i == 0 ? onesSpan : zerosSpan);
142 vars.push_back(ctx.
at(coef));
144 vars.push_back(ctx.
at(&
x));
145 std::array<double, 1> extraArgs{
double(vars.size() - 1)};
170 const double xmin =
_x.min(rangeName);
171 const double xmax =
_x.max(rangeName);
RooCollectionProxy< RooArgList > RooListProxy
int Int_t
Signed integer 4 bytes (int).
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
RooAbsArg()
Default constructor.
Storage_t::size_type size() const
RooAbsReal()
coverity[UNINIT_CTOR] Default constructor
bool matchArgs(const RooArgSet &allDeps, RooArgSet &analDeps, const RooArgProxy &a, const Proxies &... proxies) const
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
std::span< const double > at(RooAbsArg const *arg, RooAbsArg const *caller=nullptr)
std::span< double > output()
RooBatchCompute::Config config(RooAbsArg const *arg) const
static void fillCoeffValues(std::vector< double > &wksp, RooListProxy const &coefList)
void doEval(RooFit::EvalContext &) const override
Compute multiple values of Polynomial.
double evaluate() const override
Calculate and return value of polynomial.
RooArgList const & coefList() const
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &analVars, const char *rangeName=nullptr) const override
Advertise that we can internally integrate over x.
RooAbsReal const & x() const
std::vector< double > _wksp
! do not persist
static void doEvalImpl(RooAbsArg const *caller, RooFit::EvalContext &, RooAbsReal const &x, RooArgList const &coefs, int lowestOrder)
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
Calculate and return analytical integral over x.
const char * GetName() const override
Returns name of object.
void compute(Config cfg, Computer comp, std::span< double > output, VarSpan vars, ArgSpan extraArgs={})
double polynomialIntegral(DoubleArray coeffs, int nCoeffs, int lowestOrder, double xMin, double xMax)
In pdfMode, a coefficient for the constant term of 1.0 is implied if lowestOrder > 0.
double polynomial(DoubleArray coeffs, int nCoeffs, int lowestOrder, double x)
In pdfMode, a coefficient for the constant term of 1.0 is implied if lowestOrder > 0.