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.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
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.