29 class RooAddPdf : 
public RooAbsPdf {
 
   33   RooAddPdf(
const char *name, 
const char *title=0);
 
   34   RooAddPdf(
const char *name, 
const char *title,
 
   35        RooAbsPdf& pdf1, RooAbsPdf& pdf2, RooAbsReal& coef1) ;
 
   36   RooAddPdf(
const char *name, 
const char *title, 
const RooArgList& pdfList) ;
 
   37   RooAddPdf(
const char *name, 
const char *title, 
const RooArgList& pdfList, 
const RooArgList& coefList, Bool_t recursiveFraction=kFALSE) ;
 
   39   RooAddPdf(
const RooAddPdf& other, 
const char* name=0) ;
 
   40   virtual TObject* clone(
const char* newname)
 const { 
return new RooAddPdf(*
this,newname) ; }
 
   41   virtual ~RooAddPdf() ;
 
   43   virtual Bool_t checkObservables(
const RooArgSet* nset) 
const ;  
 
   45   virtual Bool_t forceAnalyticalInt(
const RooAbsArg& )
 const { 
 
   49   Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& numVars, 
const RooArgSet* normSet, 
const char* rangeName=0) 
const ;
 
   50   Double_t analyticalIntegralWN(Int_t code, 
const RooArgSet* normSet, 
const char* rangeName=0) 
const ;
 
   51   virtual Bool_t selfNormalized()
 const { 
 
   56   virtual ExtendMode extendMode()
 const { 
 
   58     return ((_haveLastCoef&&!_recursive) || _allExtendable) ? MustBeExtended : CanNotBeExtended; 
 
   60   virtual Double_t expectedEvents(
const RooArgSet* nset) 
const ;
 
   61   virtual Double_t expectedEvents(
const RooArgSet& nset)
 const { 
 
   64     return expectedEvents(&nset) ; 
 
   67   const RooArgList& pdfList()
 const { 
 
   71   const RooArgList& coefList()
 const { 
 
   76   void fixCoefNormalization(
const RooArgSet& refCoefNorm) ;  
 
   77   void fixCoefRange(
const char* rangeName) ;
 
   79   const RooArgSet& getCoefNormalization()
 const { 
return _refCoefNorm ; }
 
   80   const char* getCoefRange()
 const { 
return _refCoefRangeName?RooNameReg::str(_refCoefRangeName):
"" ; }
 
   82   virtual void resetErrorCounters(Int_t resetValue=10) ;
 
   84   virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) 
const ; 
 
   85   virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& , Double_t , Double_t ) 
const ;
 
   86   Bool_t isBinnedDistribution(
const RooArgSet& obs) 
const  ;
 
   88   void printMetaArgs(std::ostream& os) 
const ;
 
   90   virtual CacheMode canNodeBeCached()
 const { 
return RooAbsArg::NotAdvised ; } ;
 
   91   virtual void setCacheAndTrackHints(RooArgSet&) ;
 
   95   virtual void selectNormalization(
const RooArgSet* depSet=0, Bool_t force=kFALSE) ;
 
   96   virtual void selectNormalizationRange(
const char* rangeName=0, Bool_t force=kFALSE) ;
 
   98   mutable RooSetProxy _refCoefNorm ;   
 
   99   mutable TNamed* _refCoefRangeName ;  
 
  101   Bool_t _projectCoefs ;         
 
  102   std::vector<double> _coefCache; 
 
  105   class CacheElem : 
public RooAbsCacheElement {
 
  107     virtual ~CacheElem() {} ;
 
  109     RooArgList _suppNormList ; 
 
  110     Bool_t    _needSupNorm ; 
 
  112     RooArgList _projList ; 
 
  113     RooArgList _suppProjList ; 
 
  114     RooArgList _refRangeProjList ; 
 
  115     RooArgList _rangeProjList ; 
 
  117     virtual RooArgList containedArgs(Action) ;
 
  120   mutable RooObjCacheManager _projCacheMgr ;  
 
  121   CacheElem* getProjCache(
const RooArgSet* nset, 
const RooArgSet* iset=0, 
const char* rangeName=0) 
const ;
 
  122   void updateCoefficients(CacheElem& cache, 
const RooArgSet* nset) 
const ;
 
  125   friend class RooAddGenContext ;
 
  126   virtual RooAbsGenContext* genContext(
const RooArgSet &vars, 
const RooDataSet *prototype=0, 
 
  127                                        const RooArgSet* auxProto=0, Bool_t verbose= kFALSE) 
const ;
 
  130   Double_t evaluate() 
const;
 
  131   virtual RooSpan<double> evaluateBatch(std::size_t begin, std::size_t batchSize) 
const;
 
  134   mutable RooAICRegistry _codeReg ;  
 
  136   RooListProxy _pdfList ;   
 
  137   RooListProxy _coefList ;  
 
  138   mutable RooArgList* _snormList{
nullptr};  
 
  140   Bool_t _haveLastCoef ;    
 
  141   Bool_t _allExtendable ;   
 
  144   mutable Int_t _coefErrCount ; 
 
  147   std::pair<const RooArgSet*, CacheElem*> getNormAndCache() 
const;
 
  149   ClassDef(RooAddPdf,3)