15#ifndef RooFit_RooEvaluatorWrapper_h
16#define RooFit_RooEvaluatorWrapper_h
36class RooEvaluatorWrapper final :
public RooAbsReal {
38 RooEvaluatorWrapper(RooAbsReal &topNode, RooAbsData *data,
bool useGPU, std::string
const &rangeName,
39 RooAbsPdf
const *simPdf,
bool takeGlobalObservablesFromData);
41 RooEvaluatorWrapper(
const RooEvaluatorWrapper &other,
const char *
name =
nullptr);
43 ~RooEvaluatorWrapper();
45 TObject *clone(
const char *newname)
const override {
return new RooEvaluatorWrapper(*
this, newname); }
47 double defaultErrorLevel()
const override {
return _topNode->defaultErrorLevel(); }
49 bool getParameters(
const RooArgSet *observables, RooArgSet &outputSet,
bool stripDisconnected =
true)
const override;
51 bool setData(RooAbsData &data,
bool cloneData)
override;
55 void applyWeightSquared(
bool flag)
override { _topNode->applyWeightSquared(flag); }
58 void constOptimizeTestStatistic(ConstOpCode ,
bool )
override {}
60 bool hasGradient()
const override;
61 bool hasHessian()
const override;
63 void gradient(
double *out)
const override;
64 void hessian(
double *out)
const override;
66 void generateGradient();
67 void generateHessian();
69 void setUseGeneratedFunctionCode(
bool);
70 void writeDebugMacro(std::string
const &)
const;
74 RooFit::Evaluator &evaluator()
const {
return *_evaluator; }
80 void createFuncWrapper();
82 std::shared_ptr<RooFit::Evaluator> _evaluator;
83 std::shared_ptr<RooFuncWrapper> _funcWrapper;
85 RooAbsData *_data =
nullptr;
87 std::string _rangeName;
88 RooAbsPdf
const *_pdf =
nullptr;
89 const bool _takeGlobalObservablesFromData;
90 bool _useGeneratedFunctionCode =
false;
91 std::stack<std::vector<double>> _vectorBuffers;
92 std::map<RooFit::Detail::DataKey, std::span<const double>> _dataSpans;
RooCollectionProxy< RooArgSet > RooSetProxy
double evaluate() const override
double getValV(const RooArgSet *set=nullptr) const override
RooTemplateProxy< RooAbsReal > RooRealProxy
Compatibility typedef replacing the old RooRealProxy class.
Scope guard that temporarily changes the operation mode of one or more RooAbsArg instances.
Common abstract base class for objects that represent a value and a "shape" in RooFit.
A space to attach TBranches.
Abstract interface for all probability density functions.