41#ifdef ROOFIT_LEGACY_EVAL_BACKEND
59 :
RooAbsReal(
name, title), _set(
"!set",
"set of components", this), _cacheMgr(this, 10)
80 :
RooAbsReal(
name, title), _set(
"!set",
"set of components", this), _cacheMgr(this, 10)
82 if (sumSet1.
size() != sumSet2.
size()) {
83 coutE(InputArguments) <<
"RooAddition::ctor(" <<
GetName() <<
") ERROR: input lists should be of equal length" << std::endl;
87 for (
unsigned int i = 0; i < sumSet1.
size(); ++i) {
88 const auto comp1 = &sumSet1[i];
89 const auto comp2 = &sumSet2[i];
92 coutE(InputArguments) <<
"RooAddition::ctor(" <<
GetName() <<
") ERROR: component " << comp1->
GetName()
93 <<
" in first list is not of type RooAbsReal" << std::endl;
98 coutE(InputArguments) <<
"RooAddition::ctor(" <<
GetName() <<
") ERROR: component " << comp2->GetName()
99 <<
" in first list is not of type RooAbsReal" << std::endl;
104 _name.
Append(comp1->GetName());
106 _name.
Append(comp2->GetName());
108 auto prod = std::make_unique<RooProduct>( _name, _name ,
RooArgSet(*comp1, *comp2));
121 , _set(
"!set",this,other._set)
122 , _cacheMgr(other._cacheMgr,this)
135 for (
auto* comp : static_range_cast<RooAbsReal*>(
_set)) {
136 const double tmp = comp->getVal(nset);
147 std::vector<std::span<const double>> pdfs;
148 std::vector<double> coefs;
151 for (
const auto arg :
_set) {
152 pdfs.push_back(ctx.
at(arg));
153 coefs.push_back(1.0);
170 for (
auto *component : static_range_cast<RooAbsReal *>(
_set)) {
175 if (!
dynamic_cast<RooNLLVarNew *
>(component) ||
_set.
size() == 1) {
183 result += funcName +
"(params, obs, xlArr)";
208 if (
dynamic_cast<RooNLLVarNew*
>(arg)) {
211#ifdef ROOFIT_LEGACY_EVAL_BACKEND
221 if (nllArg && !chi2Arg) {
222 coutI(Fitting) <<
"RooAddition::defaultErrorLevel(" <<
GetName()
223 <<
") Summation contains a RooNLLVar, using its error level" << std::endl;
225 }
else if (chi2Arg && !nllArg) {
226 coutI(Fitting) <<
"RooAddition::defaultErrorLevel(" <<
GetName()
227 <<
") Summation contains a RooChi2Var, using its error level" << std::endl;
229 }
else if (!nllArg && !chi2Arg) {
230 coutI(Fitting) <<
"RooAddition::defaultErrorLevel(" <<
GetName() <<
") WARNING: "
231 <<
"Summation contains neither RooNLLVar nor RooChi2Var server, using default level of 1.0" << std::endl;
233 coutI(Fitting) <<
"RooAddition::defaultErrorLevel(" <<
GetName() <<
") WARNING: "
234 <<
"Summation contains BOTH RooNLLVar and RooChi2Var server, using default level of 1.0" << std::endl;
246 for (
const auto arg :
_set) {
268 analVars.
add(allVars);
271 Int_t sterileIndex(-1);
273 if (cache!=
nullptr) {
280 for (
auto *arg : static_range_cast<RooAbsReal const*>(
_set)) {
281 cache->
_I.
addOwned(std::unique_ptr<RooAbsReal>{arg->createIntegral(analVars,rangeName)});
295 if (cache==
nullptr) {
304 assert(cache!=
nullptr);
308 for (
auto I : cache->
_I) {
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Common abstract base class for objects that represent a value and a "shape" in RooFit.
RooFit::OwningPtr< RooArgSet > getParameters(const RooAbsData *data, bool stripDisconnected=true) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
RooFit::OwningPtr< RooArgSet > getComponents() const
Create a RooArgSet with all components (branch nodes) of the expression tree headed by this object.
Abstract base class for objects to be stored in RooAbsCache cache manager objects.
const char * GetName() const override
Returns name of object.
virtual bool add(const RooAbsArg &var, bool silent=false)
Add the specified argument to list.
Storage_t::size_type size() const
bool addTyped(const RooAbsCollection &list, bool silent=false)
Adds elements of a given RooAbsCollection to the container if they match the specified type.
virtual bool addOwned(RooAbsArg &var, bool silent=false)
Add an argument and transfer the ownership to the collection.
Abstract base class for binned and unbinned datasets.
const RooArgSet * nset() const
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
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.
virtual double defaultErrorLevel() const
Calculates the sum of a set of RooAbsReal terms, or when constructed with two sets,...
RooArgList _ownedList
List of owned components.
void doEval(RooFit::EvalContext &) const override
Compute addition of PDFs in batches.
Int_t getAnalyticalIntegral(RooArgSet &allVars, RooArgSet &numVars, const char *rangeName=nullptr) const override
Interface function getAnalyticalIntergral advertises the analytical integrals that are supported.
std::list< double > * binBoundaries(RooAbsRealLValue &, double, double) const override
Retrieve bin boundaries if this distribution is binned in obs.
RooListProxy _set
set of terms to be summed
void printMetaArgs(std::ostream &os) const override
bool setData(RooAbsData &data, bool cloneData=true) override
double analyticalIntegral(Int_t code, const char *rangeName=nullptr) const override
Calculate integral internally from appropriate integral cache.
RooObjCacheManager _cacheMgr
! The cache manager
double defaultErrorLevel() const override
Return the default error level for MINUIT error analysis If the addition contains one or more RooNLLV...
double evaluate() const override
Calculate and return current value of self.
std::list< double > * plotSamplingHint(RooAbsRealLValue &, double, double) const override
Interface for returning an optional hint for initial sampling points when constructing a curve projec...
bool isBinnedDistribution(const RooArgSet &obs) const override
Tests if the distribution is binned. Unless overridden by derived classes, this always returns false.
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 ...
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Int_t setObj(const RooArgSet *nset, T *obj, const TNamed *isetRangeName=nullptr)
Setter function without integration set.
T * getObjByIndex(Int_t index) const
Retrieve payload object by slot index.
RooArgSet selectFromSet2(RooArgSet const &argSet, int index) const
Create RooArgSet containing the objects that are both in the cached set 2 with a given index and an i...
Int_t lastIndex() const
Return index of slot used in last get or set operation.
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=nullptr, const TNamed *isetRangeName=nullptr)
Getter function without integration set.
Simple calculation from a binned dataset and a PDF.
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...
static void softAbort()
Soft abort function that interrupts macro execution but doesn't kill ROOT.
A class to maintain the context for squashing of RooFit models into code.
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::string const & getResult(RooAbsArg const &arg)
Gets the result for the given node using the node name.
Experimental::RooFuncWrapper * _wrapper
std::span< const double > at(RooAbsArg const *arg, RooAbsArg const *caller=nullptr)
std::span< double > output()
RooBatchCompute::Config config(RooAbsArg const *arg) const
std::string declareFunction(std::string const &funcBody)
Implements a -log(likelihood) calculation from a dataset and a PDF.
static const TNamed * ptr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string.
std::list< double > * plotSamplingHint(RooAbsRealLValue &, double, double) const override
Interface for returning an optional hint for initial sampling points when constructing a curve projec...
std::list< double > * binBoundaries(RooAbsRealLValue &, double, double) const override
Retrieve bin boundaries if this distribution is binned in obs.
void printMetaArgs(std::ostream &os) const override
Customized printing of arguments of a RooRealSumPdf to more intuitively reflect the contents of the p...
bool isBinnedDistribution(const RooArgSet &obs) const override
Check if all components that depend on obs are binned.
const char * GetName() const override
Returns name of object.
TString & Append(const char *cs)
void compute(Config cfg, Computer comp, std::span< double > output, VarSpan vars, ArgSpan extraArgs={})
static uint64_t sum(uint64_t i)