62   for (std::size_t i = 0; i < pdfList.
size(); ++i) {
 
   63      auto pdf = 
static_cast<const RooAbsPdf *
>(pdfList.
at(i));
 
   64      auto coef = 
static_cast<const RooAbsReal *
>(coefList.
at(i));
 
   72      if (
auto pdfDeps = std::unique_ptr<RooArgSet>{pdf->getObservables(nset)}) {
 
   77      if (
auto coefDeps = std::unique_ptr<RooArgSet>{coef ? coef->getObservables(nset) : 
nullptr}) {
 
   81      std::unique_ptr<RooAbsReal> 
snorm;
 
   82      auto name = std::string(addPdf.
GetName()) + 
"_" + pdf->GetName() + 
"_SupNorm";
 
   84         snorm = std::make_unique<RooRealIntegral>(
name.c_str(), 
"Supplemental normalization integral",
 
   87                                     << 
" making supplemental normalization set " << 
supNSet << 
" for pdf component " 
   88                                     << pdf->GetName() << std::endl;
 
   91      if (!normRange.empty()) {
 
   92         auto snormTerm = std::unique_ptr<RooAbsReal>(pdf->createIntegral(
nset2, 
nset2, normRange.c_str()));
 
  104   if (verboseEval > 1) {
 
  106                                  << 
") synching supplemental normalization list for norm" 
  107                                  << (nset ? *nset : 
RooArgSet()) << std::endl;
 
  125         std::unique_ptr<RooAbsReal> 
pdfProj;
 
  131                                        << 
") --> pdfProj = " << 
pdfProj->GetName() << std::endl;
 
  133                                        << 
") PP = " << 
pdfProj->GetName() << std::endl;
 
  140         auto deps = std::unique_ptr<RooArgSet>{pdf->getParameters(
RooArgSet())};
 
  143         std::unique_ptr<RooAbsReal> 
snorm;
 
  144         auto name = std::string(addPdf.
GetName()) + 
"_" + pdf->GetName() + 
"_ProjSupNorm";
 
  146            snorm = std::make_unique<RooRealIntegral>(
name.c_str(), 
"Projection Supplemental normalization integral",
 
  149                                        << 
") SN = " << 
snorm->GetName() << std::endl;
 
  158            auto int1 = std::unique_ptr<RooAbsReal>{pdf->createIntegral(tmp, tmp, normRange.c_str())};
 
  159            auto int2 = std::unique_ptr<RooAbsReal>{pdf->createIntegral(tmp, tmp, 
refCoefNormRange.c_str())};
 
  160            rangeProj2 = std::make_unique<RooRatio>(
"rangeProj", 
"rangeProj", *int1, *int2);
 
  161            rangeProj2->addOwnedComponents(std::move(int1), std::move(int2));
 
 
  172      std::cout << 
"+++ " << 
name << 
":" << std::endl;
 
  173      for (
auto const &arg : 
vec) {
 
  178            std::cout << 
"nullptr" << std::endl;
 
 
  232      for (
auto arg : pdfList) {
 
  233         auto pdf = 
static_cast<RooAbsPdf *
>(arg);
 
  241                                << 
") WARNING: total number of expected events is 0" << std::endl;
 
  243         for (std::size_t 
j = 0; 
j < pdfList.
size(); 
j++) {
 
  255                                   << 
") WARNING: sum of coefficients is zero 0" << std::endl;
 
  273            std::stringstream 
msg;
 
  275               msg << 
"RooAddPdf::updateCoefCache(" << addPdf.
GetName()
 
  276                   << 
" WARNING: sum of PDF coefficients not in range [0-1], value=" << 1 - 
lastCoef;
 
  278                  msg << 
" (no more will be printed)";
 
  280               oocoutW(&addPdf, Eval) << 
msg.str() << std::endl;
 
  293   for (std::size_t i = 0; i < pdfList.
size(); i++) {
 
  300      for (std::size_t i = 0; i < pdfList.
size(); ++i) {
 
  301         ooccoutD(&addPdf, Caching) << 
" ALEX:   POST-SYNC coef[" << i << 
"] = " << 
coefCache[i]
 
  303                                    << 
" ) " << std::endl;
 
  309                             << 
") sum of coefficients is zero." << std::endl;
 
  312   for (std::size_t i = 0; i < pdfList.
size(); i++) {
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
double projVal(std::size_t idx) const
 
OwningArgVector _projList
Projection integrals to be multiplied with coefficients.
 
AddCacheElem(RooAbsPdf const &addPdf, RooArgList const &pdfList, RooArgList const &coefList, const RooArgSet *nset, const RooArgSet *iset, RooArgSet const &refCoefNormSet, std::string const &refCoefNormRange, int verboseEval)
Create a RooAddPdf cache element for a given normalization set and projection configuration.
 
double projSuppNormVal(std::size_t idx) const
 
RooArgList containedArgs(Action) override
List all RooAbsArg derived contents in this cache element.
 
OwningArgVector _rangeProjList
Range integrals to be multiplied with coefficients (reference to target range)
 
double rangeProjScaleFactor(std::size_t idx) const
 
OwningArgVector _suppNormList
Supplemental normalization list.
 
bool doProjection() const
 
OwningArgVector _suppProjList
Projection integrals to multiply with coefficients for supplemental normalization.
 
const_iterator begin() const
 
const_iterator end() const
 
RooFit::OwningPtr< RooArgSet > getObservables(const RooArgSet &set, bool valueOnly=true) const
Given a set of possible observables, return the observables that this PDF depends on.
 
OperMode operMode() const
Query the operation mode of this node.
 
Storage_t::size_type size() const
 
Abstract interface for all probability density functions.
 
const char * normRange() const
 
Abstract base class for objects that represent a real value and implements functionality common to al...
 
static void updateCoefficients(RooAbsPdf const &addPdf, std::vector< double > &coefCache, RooArgList const &pdfList, bool haveLastCoef, AddCacheElem &cache, const RooArgSet *nset, RooArgSet const &refCoefNormSet, bool allExtendable, int &coefErrCount)
Update the RooAddPdf coefficients for a given normalization set and projection configuration.
 
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.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
static RooMsgService & instance()
Return reference to singleton instance.
 
static RooConstVar & value(double value)
Return a constant value object with given value.
 
const char * GetName() const override
Returns name of object.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
static double packFloatIntoNaN(float payload)
Pack float into mantissa of a NaN.