69   _funcIter  = _funcList.createIterator() ;
    70   _coefIter  = _coefList.createIterator() ;
    84   _funcList(
"!funcList",
"List of functions",this),
    85   _coefList(
"!coefList",
"List of coefficients",this),
   105   _funcList(
"!funcList",
"List of functions",this),
   106   _coefList(
"!coefList",
"List of coefficients",this),
   132   _funcList(
"!funcList",
"List of functions",this),
   133   _coefList(
"!coefList",
"List of coefficients",this),
   139            << 
") number of pdfs and coefficients inconsistent, must have Nfunc=Ncoef or Nfunc=Ncoef+1" << endl ;
   155     if (!dynamic_cast<RooAbsReal*>(coef)) {
   159     if (!dynamic_cast<RooAbsReal*>(func)) {
   169     if (!dynamic_cast<RooAbsReal*>(func)) {
   170       coutE(
InputArguments) << 
"RooRealSumPdf::RooRealSumPdf(" << 
GetName() << 
") last func " << coef->
GetName() << 
" is not of type RooAbsReal, fatal error" << endl ;
   245       cxcoutD(
Eval) << 
"RooRealSumPdf::eval(" << 
GetName() << 
") coefVal = " << coefVal << 
" funcVal = " << func->IsA()->
GetName() << 
"::" << func->
GetName() << 
" = " << func->
getVal() << endl ;
   247    value += func->
getVal()*coefVal ;
   249       lastCoef -= coef->
getVal() ;
   257       value += func->
getVal()*lastCoef ;
   260     cxcoutD(
Eval) << 
"RooRealSumPdf::eval(" << 
GetName() << 
") lastCoef = " << lastCoef << 
" funcVal = " << func->
getVal() << endl ;
   263     if (lastCoef<0 || lastCoef>1) {
   265         << 
" WARNING: sum of FUNC coefficients not in range [0-1], value="    266         << 1-lastCoef << endl ;
   301              << 
" and FUNC " << func->
GetName() << 
" have one or more observables in common" << endl ;
   306              << 
" depends on one or more of the following observables" ; nset->
Print(
"1") ;
   322                     const RooArgSet* normSet2, 
const char* rangeName)
 const    325   if (allVars.
getSize()==0) 
return 0 ;
   329   analVars.
add(allVars) ;
   334   Int_t sterileIdx(-1) ;
   350     if (normSet && normSet->
getSize()>0) {
   378   if (code==0) 
return getVal(normSet2) ;
   406     Double_t coefVal = coef->getVal(normSet2) ;
   411    value += funcInt->getVal()*coefVal ;
   413       lastCoef -= coef->getVal(normSet2) ;
   422       value += funcInt->getVal()*lastCoef ;
   426     if (lastCoef<0 || lastCoef>1) {
   428         << 
" WARNING: sum of FUNC coefficients not in range [0-1], value="    429         << 1-lastCoef << endl ;
   434   if (normSet2 && normSet2->
getSize()>0) {
   443       Double_t coefVal = coef->getVal(normSet2) ;
   446    normVal += funcNorm->
getVal()*coefVal ;
   454       normVal += funcNorm->
getVal()*lastCoef ;
   458   return value / normVal;
   478   list<Double_t>* sumBinB = 0 ;
   486     list<Double_t>* funcBinB = func->
binBoundaries(obs,xlo,xhi) ;
   495    list<Double_t>* newSumBinB = 
new list<Double_t>(sumBinB->size()+funcBinB->size()) ;
   498    merge(funcBinB->begin(),funcBinB->end(),sumBinB->begin(),sumBinB->end(),newSumBinB->begin()) ;
   503    sumBinB = newSumBinB ;
   511     list<Double_t>::iterator new_end = unique(sumBinB->begin(),sumBinB->end()) ;
   512     sumBinB->erase(new_end,sumBinB->end()) ;
   544   list<Double_t>* sumHint = 0 ;
   563    list<Double_t>* newSumHint = 
new list<Double_t>(sumHint->size()+funcHint->size()) ;
   566    merge(funcHint->begin(),funcHint->end(),sumHint->begin(),sumHint->end(),newSumHint->begin()) ;
   570    sumHint = newSumHint ;
   578     list<Double_t>::iterator new_end = unique(sumHint->begin(),sumHint->end()) ;
   579     sumHint->erase(new_end,sumHint->end()) ;
   595   while ((sarg=siter.
next())) {
   597       trackNodes.
add(*sarg) ;
   629       os << 
" + [%] * " << func->
GetName() ;
 virtual const char * GetName() const
Returns name of object. 
TIterator * createIterator(Bool_t dir=kIterForward) const
virtual Bool_t add(const RooAbsCollection &col, Bool_t silent=kFALSE)
Add a collection of arguments to this collection by calling add() for each element in the source coll...
Bool_t dependsOn(const RooAbsCollection &serverList, const RooAbsArg *ignoreArg=0, Bool_t valueOnly=kFALSE) const
Test whether we depend on (ie, are served by) any object in the specified collection. 
RooArgSet * getObservables(const RooArgSet &set, Bool_t valueOnly=kTRUE) const
virtual Bool_t addOwned(RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list. 
Double_t getVal(const RooArgSet *set=0) const
virtual ExtendMode extendMode() const
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
T * getObjByIndex(Int_t index) const
static Bool_t _doFloorGlobal
TIterator * _coefIter
Iterator over FUNC list. 
const RooArgList & funcList() const
Class RooRealSumPdf implements a PDF constructed from a sum of functions: 
RooObjCacheManager _normIntMgr
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooRealSumPdf to more intuitively reflect the contents of the p...
Iterator abstract base class. 
const RooNameSet * nameSet1ByIndex(Int_t index) const
virtual Double_t expectedEvents(const RooArgSet *nset) const
Return expected number of events from this p.d.f for use in extended likelihood calculations. 
Bool_t observableOverlaps(const RooAbsData *dset, const RooAbsArg &testArg) const
Test if any of the dependents of the arg tree (as determined by getObservables) overlaps with those o...
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=0, const TNamed *isetRangeName=0)
virtual void setCacheAndTrackHints(RooArgSet &)
Label OK'ed components of a RooRealSumPdf with cache-and-track. 
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself. 
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Reimplementation of standard RooArgList::add() 
Bool_t _extended
Iterator over coefficient list. 
RooAbsReal * createIntegral(const RooArgSet &iset, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Create an object that represents the integral of the function over one or more observables listed in ...
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
void logEvalError(const char *message, const char *serverValueString=0) const
Log evaluation error message. 
static const TNamed * ptr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string. 
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
cout << "RooRealSumPdf::analyticalIntegralWN:"<<GetName()<<"("<<code<<","<<(normSet2?*normSet2:RooArgSet())<<","<<(rangeName?rangeName:"<none>") << endl; Implement analytical integrations by deferring integration of component functions to integrators of components 
Double_t getNorm(const RooArgSet &nset) const
Bool_t isBinnedDistribution(const RooArgSet &obs) const
virtual Bool_t isBinnedDistribution(const RooArgSet &) const
const RooNameSet * nameSet2ByIndex(Int_t index) const
RooRealSumPdf()
Default constructor coverity[UNINIT_CTOR]. 
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
RooFIter fwdIterator() const
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &, Double_t, Double_t) const
RooArgSet * getParameters(const RooAbsData *data, Bool_t stripDisconnected=kTRUE) const
Create a list of leaf nodes in the arg tree starting with ourself as top node that don't match any of...
static RooMathCoreReg dummy
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &numVars, const RooArgSet *normSet, const char *rangeName=0) const
cout << "RooRealSumPdf::getAnalyticalIntegralWN:"<<GetName()<<"("<<allVars<<",analVars,"<<(normSet2?*normSet2:RooArgSet())<<","<<(rangeName?rangeName:"<none>") << endl; Advertise that all integrals can be handled internally. 
RooArgSet * select(const RooArgSet &list) const
Construct a RooArgSet of objects in input 'list' whose names match to those in the internal name list...
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &, Double_t, Double_t) const
virtual ~RooRealSumPdf()
Destructor. 
RooAbsRealLValue is the common abstract base class for objects that represent a real value that may a...
RooAbsPdf is the abstract interface for all probability density functions The class provides hybrid a...
virtual TObject * Next()=0
Bool_t isSelectedComp() const
If true, the current pdf is a selected component (for use in plotting) 
Int_t setObj(const RooArgSet *nset, T *obj, const TNamed *isetRangeName=0)
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
virtual CacheMode canNodeBeCached() const
virtual Bool_t checkObservables(const RooArgSet *nset) const
Check if FUNC is valid for given normalization set. 
Double_t evaluate() const
Calculate the current value.