93   _refCoefNorm(
"!refCoefNorm",
"Reference coefficient normalization set",this,
kFALSE,
kFALSE),
   119   _pdfList(
"!pdfs",
"List of PDFs",this),
   120   _coefList(
"!coefficients",
"List of coefficients",this),
   147   _pdfList(
"!pdfs",
"List of PDFs",this),
   148   _coefList(
"!coefficients",
"List of coefficients",this),
   185   _pdfList(
"!pdfs",
"List of PDFs",this),
   186   _coefList(
"!coefficients",
"List of coefficients",this),
   193            << 
") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1" << endl ;
   197   if (recursiveFractions && inPdfList.
getSize()!=inCoefList.
getSize()+1) {
   199            << 
") WARNING inconsistent input: recursive fractions options can only be used if Npdf=Ncoef+1, ignoring recursive fraction setting" << endl ;
   220              << 
") number of pdfs and coefficients inconsistent, must have Npdf=Ncoef or Npdf=Ncoef+1" << endl ;
   223     if (!dynamic_cast<RooAbsReal*>(coef)) {
   227     if (!dynamic_cast<RooAbsReal*>(pdf)) {
   234     if (recursiveFractions) {
   235       partinCoefList.
add(*coef) ;
   258     if (!dynamic_cast<RooAbsReal*>(pdf)) {
   265     if (recursiveFractions) {
   305   _pdfList(
"!pdfs",
"List of PDFs",this),
   306   _coefList(
"!coefficients",
"List of coefficients",this),
   319     if (!dynamic_cast<RooAbsReal*>(pdf)) {
   391   if (refCoefNorm.
getSize()==0) {
   480     name.Append(
"_SupNorm") ;
   484       cxcoutD(
Caching) << 
"RooAddPdf " << 
GetName() << 
" making supplemental normalization set " << supNSet << 
" for pdf component " << pdf->
GetName() << endl ;
   487       snorm = 
new RooRealVar(name,
"Unit Supplemental normalization integral",1.0) ;
   495     cxcoutD(
Caching) << 
"RooAddPdf::syncSuppNormList(" << 
GetName() << 
") synching supplemental normalization list for norm" << (nset?*nset:
RooArgSet()) << endl ;
   535     cxcoutD(
Caching) << 
"ALEX:     RooAddPdf::syncCoefProjList(" << 
GetName() << 
") projecting coefficients from "   536          << *nset2 << (rangeName?
":":
"") << (rangeName?rangeName:
"") 
   554    name.Append(thePdf->
GetName()) ;
   555    name.Append(
"_ProjectNorm") ;
   556    pdfProj = 
new RooRealVar(name,
"Unit Projection normalization integral",1.0) ;
   572       name.Append(thePdf->
GetName()) ;
   573       name.Append(
"_ProjSupNorm") ;
   575    snorm = 
new RooRealIntegral(name,
"Projection Supplemental normalization integral",
   578    snorm = 
new RooRealVar(name,
"Unit Projection Supplemental normalization integral",1.0) ;
   624    theName.Append(
"_") ;
   625    theName.Append(thePdf->
GetName()) ;
   626    theName.Append(
"_RangeNorm1") ;
   627    rangeProj1 = 
new RooRealVar(theName,
"Unit range normalization integral",1.0) ;
   636       cxcoutD(
Caching) << 
"RooAddPdf::syncCoefProjList(" << 
GetName() << 
") rangename = " << (rangeName?rangeName:
"<null>") 
   637              << 
" nset = " << (nset?*nset:
RooArgSet()) << endl ;
   652    theName.Append(
"_") ;
   653    theName.Append(thePdf->
GetName()) ;
   654    theName.Append(
"_RangeNorm2") ;
   655    rangeProj2 = 
new RooRealVar(theName,
"Unit range normalization integral",1.0) ;
   699       coutW(
Eval) << 
"RooAddPdf::updateCoefCache(" << 
GetName() << 
") WARNING: total number of expected events is 0" << endl ;
   702       for (i=0 ; i<siz ; i++) {
   720    coutW(
Eval) << 
"RooAddPdf::updateCoefCache(" << 
GetName() << 
") WARNING: sum of coefficients is zero 0" << endl ;
   723    for (i=0 ; i<siz ; i++) {
   746           << 
" WARNING: sum of PDF coefficients not in range [0-1], value="    749      coutW(
Eval) << 
" (no more will be printed)"  ;
   803     << 
" ( _coefCache[i]/coefSum = " << 
_coefCache[i]*coefSum << 
"/" << coefSum << 
" ) "<< endl ;
   820   if (nset==0 || nset->
getSize()==0) {
   892              << 
" and PDF " << pdf->
GetName() << 
" have one or more dependents in common" << endl ;
   912                 const RooArgSet* normSet, 
const char* rangeName)
 const    942   if (allAnalVars.
getSize()==0) {
   957     if (subCode[n]==0 && allAnalVars2->
getSize()>0) {
   959              << 
"   advertises inconsistent set of integrals (e.g. (X,Y) but not X or Y individually."   960              << 
"   Distributed analytical integration disabled. Please fix PDF" << endl ;
   963     delete allAnalVars2 ; 
   972   analVars.
add(allAnalVars) ;
   998   if (subCode.empty()) {
   999     coutE(
InputArguments) << 
"RooAddPdf::analyticalIntegral(" << 
GetName() << 
"): ERROR unrecognized integration code, " << code << endl ;
  1103    expectedTotal += ncomp ;      
  1109   return expectedTotal ;  
  1170   allNodes.
add(_projList) ;
  1171   allNodes.
add(_suppProjList) ;
  1172   allNodes.
add(_refRangeProjList) ;
  1173   allNodes.
add(_rangeProjList) ;
  1185   list<Double_t>* sumHint = 0 ;
  1205    list<Double_t>* newSumHint = 
new list<Double_t>(sumHint->size()+pdfHint->size()) ;
  1208    merge(pdfHint->begin(),pdfHint->end(),sumHint->begin(),sumHint->end(),newSumHint->begin()) ;
  1212    sumHint = newSumHint ;
  1219     list<Double_t>::iterator new_end = unique(sumHint->begin(),sumHint->end()) ;
  1220     sumHint->erase(new_end,sumHint->end()) ;
  1232   list<Double_t>* sumBinB = 0 ;
  1251    list<Double_t>* newSumBinB = 
new list<Double_t>(sumBinB->size()+pdfBinB->size()) ;
  1254    merge(pdfBinB->begin(),pdfBinB->end(),sumBinB->begin(),sumBinB->end(),newSumBinB->begin()) ;
  1259    sumBinB = newSumBinB ;
  1267     list<Double_t>::iterator new_end = unique(sumBinB->begin(),sumBinB->end()) ;
  1268     sumBinB->erase(new_end,sumBinB->end()) ;
  1299   while ((aarg=aiter.
next())) {
  1301       trackNodes.
add(*aarg) ;
  1333       os << 
" + [%] * " << pdf->
GetName() ;
 virtual Double_t getMin(const char *name=0) const
 
void fixCoefRange(const char *rangeName)
By default the interpretation of the fraction coefficients is performed in the default range...
 
virtual const char * GetName() const
Returns name of object. 
 
void updateCoefficients(CacheElem &cache, const RooArgSet *nset) const
Update the coefficient values in the given cache element: calculate new remainder fraction...
 
RooAddPdf is an efficient implementation of a sum of PDFs of the form. 
 
TIterator * createIterator(Bool_t dir=kIterForward) const
 
static void globalSelectComp(Bool_t flag)
Global switch controlling the activation of the selectComp() functionality. 
 
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list. 
 
virtual Double_t getMax(const char *name=0) 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 _haveLastCoef
Iterator over coefficient list. 
 
virtual RooArgList containedArgs(Action)
List all RooAbsArg derived contents in this cache element. 
 
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. 
 
void fixCoefNormalization(const RooArgSet &refCoefNorm)
By default the interpretation of the fraction coefficients is performed in the contextual choice of o...
 
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. 
 
virtual Double_t expectedEvents(const RooArgSet *nset) const
Return the number of expected events, which is either the sum of all coefficients or the sum of the c...
 
virtual void removeAll()
Remove all argument inset using remove(const RooAbsArg&). 
 
Double_t getVal(const RooArgSet *set=0) const
 
static const char * str(const TNamed *ptr)
Return C++ string corresponding to given TNamed pointer. 
 
TString _normRange
MC generator configuration specific for this object. 
 
RooListProxy _pdfList
Registry of component analytical integration codes. 
 
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
 
RooAddPdf()
Default constructor used for persistence. 
 
virtual void selectNormalization(const RooArgSet *depSet=0, Bool_t force=kFALSE)
Interface function used by test statistics to freeze choice of observables for interpretation of frac...
 
CacheElem * getProjCache(const RooArgSet *nset, const RooArgSet *iset=0, const char *rangeName=0) const
Retrieve cache element with for calculation of p.d.f value with normalization set nset and integrated...
 
Transiet cache with transformed values of coefficients. 
 
const RooArgList & pdfList() const
 
void printMetaArgs(std::ostream &os) const
Customized printing of arguments of a RooAddPdf to more intuitively reflect the contents of the produ...
 
virtual void selectNormalizationRange(const char *rangeName=0, Bool_t force=kFALSE)
Interface function used by test statistics to freeze choice of range for interpretation of fraction c...
 
Bool_t equals(const RooAbsCollection &otherColl) const
Check if this and other collection have identically named contents. 
 
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &obs, Double_t xlo, Double_t xhi) const
Loop over components for plot sampling hints and merge them if there are multiple. 
 
Bool_t addOwnedComponents(const RooArgSet &comps)
Take ownership of the contents of 'comps'. 
 
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
Loop over components for plot sampling hints and merge them if there are multiple. 
 
Iterator abstract base class. 
 
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Analytical integral with normalization (see RooAbsReal::analyticalIntegralWN() for further informatio...
 
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...
 
The TNamed class is the base class for all named ROOT classes. 
 
T * getObj(const RooArgSet *nset, Int_t *sterileIndex=0, const TNamed *isetRangeName=0)
 
if on multiple lines(like in C++). **The " * configuration fragment. * * The "import myobject continue
Parses the configuration file. 
 
TIterator * _pdfIter
List of supplemental normalization factors. 
 
virtual void Print(Option_t *options=0) const
This method must be overridden when a class wants to print itself. 
 
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects. 
 
virtual Double_t expectedEvents(const RooArgSet *nset) const
Return expected number of events from this p.d.f for use in extended likelihood calculations. 
 
virtual Bool_t checkObservables(const RooArgSet *nset) const
Check if PDF is valid for given normalization set. 
 
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Reimplementation of standard RooArgList::add() 
 
RooRealVar represents a fundamental (non-derived) real valued object. 
 
virtual ~RooAddPdf()
Destructor. 
 
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 RooAbsGenContext * genContext(const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t verbose=kFALSE) const
Return specialized context to efficiently generate toy events from RooAddPdfs return RooAbsPdf::genCo...
 
static Int_t _verboseEval
 
RooAbsArg * at(Int_t idx) const
 
static const TNamed * ptr(const char *stringPtr)
Return a unique TNamed pointer for given C++ string. 
 
unsigned int r1[N_CITIES]
 
virtual Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Variant of getAnalyticalIntegral that is also passed the normalization set that should be applied to ...
 
RooArgList _refRangeProjList
 
char * Form(const char *fmt,...)
 
OperMode operMode() const
 
friend class RooAddGenContext
 
virtual void resetErrorCounters(Int_t resetValue=10)
Reset error counter to given value, limiting the number of future error messages for this pdf to 'res...
 
Double_t evaluate() const
Calculate and return the current value. 
 
RooDataSet is a container class to hold unbinned data. 
 
Bool_t canBeExtended() const
 
TNamed * _refCoefRangeName
 
virtual void resetErrorCounters(Int_t resetValue=10)
Reset error counter to given value, limiting the number of future error messages for this pdf to 'res...
 
virtual Bool_t isBinnedDistribution(const RooArgSet &) const
 
Int_t store(const std::vector< Int_t > &codeList, RooArgSet *set1=0, RooArgSet *set2=0, RooArgSet *set3=0, RooArgSet *set4=0)
Store given arrays of integer codes, and up to four RooArgSets in the registry (each setX pointer may...
 
RooObjCacheManager _projCacheMgr
 
virtual void setCacheAndTrackHints(RooArgSet &)
Label OK'ed components of a RooAddPdf with cache-and-track. 
 
RooAbsArg * find(const char *name) const
Find object with given name in list. 
 
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
 
RooFIter fwdIterator() 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...
 
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &numVars, const RooArgSet *normSet, const char *rangeName=0) const
Determine which part (if any) of given integral can be performed analytically. 
 
TIterator * _coefIter
Iterator over PDF list. 
 
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
 
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &, Double_t, Double_t) const
 
static Bool_t _globalSelectComp
Component selection flag for RooAbsPdf::plotCompOn. 
 
virtual Bool_t remove(const RooAbsArg &var, Bool_t silent=kFALSE, Bool_t matchByNameOnly=kFALSE)
Remove the specified argument from our list. 
 
Class RooRecursiveFraction is a RooAbsReal implementation that calculates the plain fraction of sum o...
 
RooConstVar & RooConst(Double_t val)
 
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...
 
friend class RooRealIntegral
 
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Return analytical integral defined by given scenario code. 
 
virtual TObject * Next()=0
 
static RooConstVar & value(Double_t value)
Return a constant value object with given value. 
 
void setOperMode(OperMode mode, Bool_t recurseADirty=kTRUE)
Change cache operation mode to given mode. 
 
Bool_t isSelectedComp() const
If true, the current pdf is a selected component (for use in plotting) 
 
RooArgSet * _normSet
Normalization integral (owned by _normMgr) 
 
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...
 
const std::vector< Int_t > & retrieve(Int_t masterCode) const
Retrieve the array of integer codes associated with the given master code. 
 
unsigned int r2[N_CITIES]
 
RooArgList _rangeProjList
 
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Overloaded RooArgSet::add() method inserts 'var' into set and registers 'var' as server to owner with...
 
virtual CacheMode canNodeBeCached() const
 
Bool_t isBinnedDistribution(const RooArgSet &obs) const
If all components that depend on obs are binned that so is the product.