52  cxcoutI(Generation) << 
"RooAddGenContext::ctor() setting up event special generator context for sum p.d.f. " << model.
GetName()
 
   53         << 
" for generation of observable(s) " << vars ;
 
   59  _pdfSet = std::make_unique<RooArgSet>();
 
   74  _vars = std::make_unique<RooArgSet>();
 
   77  for (
const auto arg : model.
_pdfList) {
 
   78    auto pdf = 
dynamic_cast<const RooAbsPdf *
>(arg);
 
   80      coutF(Generation) << 
"Cannot generate events from an object that is not a PDF.\n\t" 
   81          << 
"The offending object is a " << arg->
ClassName() << 
" named '" << arg->GetName() << 
"'." << std::endl;
 
   82      throw std::invalid_argument(
"Trying to generate events from on object that is not a PDF.");
 
 
  102  cxcoutI(Generation) << 
"RooAddGenContext::ctor() setting up event special generator context for sum resolution model " << model.
GetName()
 
  103         << 
" for generation of observable(s) " << vars ;
 
  109  _pdfSet = std::make_unique<RooArgSet>();
 
  115  _vars = std::make_unique<RooArgSet>();
 
  118  for (
const auto obj : model.
_pdfList) {
 
 
  193    pdf->updateCoefficients(*cache,
_vars.get()) ;
 
  197      double coef = pdf->_coefCache[i];
 
  200        errMsgStream << 
"RooAddGenContext::updateThresholds(): coefficient number " << i << 
" of the " 
  201                     << pdf->ClassName() << 
" \"" << pdf->GetName() <<  
"\"" << 
" is negative!" 
  202                     << 
" The current RooAddGenContext doesn't support negative coefficients." 
  203                     << 
" Please recreate a new generator context with " << pdf->ClassName() << 
"::genContext()";
 
  206        throw std::runtime_error(
errMsg);
 
 
  224    gc->setProtoDataOrder(
lut) ;
 
 
  236  os << 
indent << 
"--- RooAddGenContext ---" << std::endl;
 
  237  os << 
indent << 
"Using PDF ";
 
  240  os << 
indent << 
"List of component generators" << std::endl;
 
 
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.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void gc
 
bool recursiveRedirectServers(const RooAbsCollection &newServerList, bool mustReplaceAll=false, bool nameChange=false, bool recurseInNewSet=true)
Recursively replace all servers with the new servers in newSet.
 
void setOperMode(OperMode mode, bool recurseADirty=true)
Set the operation mode of this node.
 
Storage_t::size_type size() const
 
Abstract base class for generator contexts of RooAbsPdf objects.
 
RooArgSet _theEvent
Pointer to observable event being generated.
 
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Interface for multi-line printing.
 
virtual void setProtoDataOrder(Int_t *lut)
Set the traversal order of prototype data to that in the lookup tables passed as argument.
 
Abstract interface for all probability density functions.
 
virtual void fixAddCoefNormalization(const RooArgSet &addNormSet=RooArgSet(), bool force=true)
Fix the interpretation of the coefficient of any RooAddPdf component in the expression tree headed by...
 
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.
 
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
 
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.
 
RooListProxy _pdfList
List of component PDFs.
 
Efficient implementation of a sum of PDFs of the form.
 
RooListProxy _pdfList
List of component PDFs.
 
RooArgSet is a container object that can hold multiple RooAbsArg objects.
 
RooArgSet * snapshot(bool deepCopy=true) const
Use RooAbsCollection::snapshot(), but return as RooArgSet.
 
Container class to hold unbinned data.
 
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer,...
 
static double uniform(TRandom *generator=randomGenerator())
Return a number uniformly distributed from (0,1)
 
const char * GetName() const override
Returns name of object.
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.