16#ifndef ROO_ADD_GEN_CONTEXT
17#define ROO_ADD_GEN_CONTEXT
58 std::unique_ptr<RooArgSet>
_vars ;
61 std::vector<std::unique_ptr<RooAbsGenContext>>
_gcList ;
87 if(coef->getVal() < 0)
return true;
95 oocxcoutI(&pdf, Generation) << pdf.ClassName() <<
"::genContext():"
96 <<
" using a generic generator context instead of the RooAddGenContext for the "
97 << pdf.ClassName() <<
" \"" << pdf.GetName() <<
"\", because the pdf has negative coefficients." << std::endl;
101 return std::make_unique<RooAddGenContext>(pdf, vars,
prototype,
auxProto,verbose) ;
#define ClassDefOverride(name, id)
static void indent(ostringstream &buf, int indent_level)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Abstract base class for generator contexts of RooAbsPdf objects.
bool _verbose
Verbose messaging?
Abstract interface for all probability density functions.
Efficient implementation of the generator context specific for RooAddPdf PDFs.
void setProtoDataOrder(Int_t *lut) override
Forward the setProtoDataOrder call to the component generator contexts.
std::vector< double > _coefThresh
[_nComp] Array of coefficient thresholds
std::unique_ptr< RooArgSet > _pdfSet
Set owned all nodes of internal clone of p.d.f.
std::unique_ptr< RooArgSet > _vars
bool _isModel
Are we generating from a RooAddPdf or a RooAddModel.
void initGenerator(const RooArgSet &theEvent) override
One-time initialization of generator context.
std::vector< std::unique_ptr< RooAbsGenContext > > _gcList
List of component generator contexts.
static std::unique_ptr< RooAbsGenContext > create(const Pdf_t &pdf, const RooArgSet &vars, const RooDataSet *prototype, const RooArgSet *auxProto, bool verbose)
Returns a RooAddGenContext if possible, or, if the RooAddGenContext doesn't support this particular R...
void updateThresholds()
Update the cumulative threshold table from the current coefficient values.
void printMultiline(std::ostream &os, Int_t content, bool verbose=false, TString indent="") const override
Print the details of the context.
AddCacheElem * _pcache
! RooAddPdf cache element
RooAddGenContext(const RooAddGenContext &other)
void attach(const RooArgSet ¶ms) override
Attach given set of variables to internal p.d.f. clone.
Int_t _nComp
Number of PDF components.
RooAddGenContext(const RooAddPdf &model, const RooArgSet &vars, const RooDataSet *prototype=nullptr, const RooArgSet *auxProto=nullptr, bool _verbose=false)
Constructor.
RooAbsPdf * _pdf
Pointer to cloned p.d.f.
void generateEvent(RooArgSet &theEvent, Int_t remaining) override
Randomly choose one of the component contexts to generate this event, with a probability proportional...
RooAddModel is an efficient implementation of a sum of PDFs of the form.
Efficient implementation of a sum of PDFs of the form.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Container class to hold unbinned data.