16 #ifndef ROO_REAL_SUM_FUNC 
   17 #define ROO_REAL_SUM_FUNC 
   24 class RooRealSumFunc : 
public RooAbsReal {
 
   27    RooRealSumFunc(
const char *name, 
const char *title);
 
   28    RooRealSumFunc(
const char *name, 
const char *title, 
const RooArgList &funcList, 
const RooArgList &coefList);
 
   29    RooRealSumFunc(
const char *name, 
const char *title, RooAbsReal &func1, RooAbsReal &func2, RooAbsReal &coef1);
 
   30    RooRealSumFunc(
const RooRealSumFunc &other, 
const char *name = 0);
 
   31    virtual TObject *clone(
const char *newname)
 const { 
return new RooRealSumFunc(*
this, newname); }
 
   32    virtual ~RooRealSumFunc();
 
   34    Double_t evaluate() 
const;
 
   35    virtual Bool_t checkObservables(
const RooArgSet *nset) 
const;
 
   37    virtual Bool_t forceAnalyticalInt(
const RooAbsArg &arg)
 const { 
return arg.isFundamental(); }
 
   38    Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &numVars, 
const RooArgSet *normSet,
 
   39                                  const char *rangeName = 0) 
const;
 
   40    Double_t analyticalIntegralWN(Int_t code, 
const RooArgSet *normSet, 
const char *rangeName = 0) 
const;
 
   42    const RooArgList &funcList()
 const { 
return _funcList; }
 
   43    const RooArgList &coefList()
 const { 
return _coefList; }
 
   45    void printMetaArgs(std::ostream &os) 
const;
 
   47    virtual std::list<Double_t> *binBoundaries(RooAbsRealLValue & , Double_t , Double_t ) 
const;
 
   48    virtual std::list<Double_t> *plotSamplingHint(RooAbsRealLValue & , Double_t , Double_t ) 
const;
 
   49    Bool_t isBinnedDistribution(
const RooArgSet &obs) 
const;
 
   51    void setFloor(Bool_t flag) { _doFloor = flag; }
 
   52    Bool_t getFloor()
 const { 
return _doFloor; }
 
   53    static void setFloorGlobal(Bool_t flag) { _doFloorGlobal = flag; }
 
   54    static Bool_t getFloorGlobal() { 
return _doFloorGlobal; }
 
   56    virtual CacheMode canNodeBeCached()
 const { 
return RooAbsArg::NotAdvised; };
 
   57    virtual void setCacheAndTrackHints(RooArgSet &);
 
   60    class CacheElem : 
public RooAbsCacheElement {
 
   63       virtual ~CacheElem(){};
 
   64       virtual RooArgList containedArgs(Action)
 
   66          RooArgList ret(_funcIntList);
 
   67          ret.add(_funcNormList);
 
   70       RooArgList _funcIntList;
 
   71       RooArgList _funcNormList;
 
   73    mutable RooObjCacheManager _normIntMgr; 
 
   77    RooListProxy _funcList; 
 
   78    RooListProxy _coefList; 
 
   83    static Bool_t _doFloorGlobal; 
 
   86    ClassDef(RooRealSumFunc, 3)