32 class RooProduct :
public RooAbsReal {
36 RooProduct(
const char *name,
const char *title,
const RooArgList& _prodSet) ;
38 RooProduct(
const RooProduct& other,
const char* name = 0);
39 virtual TObject* clone(
const char* newname)
const {
return new RooProduct(*
this, newname); }
40 virtual Bool_t forceAnalyticalInt(
const RooAbsArg& dep)
const ;
41 virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars,
42 const RooArgSet* normSet,
43 const char* rangeName=0)
const ;
44 virtual Double_t analyticalIntegral(Int_t code,
const char* rangeName=0)
const;
47 RooArgList components() { RooArgList tmp(_compRSet) ; tmp.add(_compCSet) ;
return tmp ; }
49 virtual ~RooProduct() ;
53 void printMetaArgs(std::ostream& os)
const ;
55 virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& , Double_t , Double_t )
const ;
56 virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& , Double_t , Double_t )
const ;
57 virtual Bool_t isBinnedDistribution(
const RooArgSet& obs)
const ;
59 virtual CacheMode canNodeBeCached()
const {
return RooAbsArg::NotAdvised ; } ;
60 virtual void setCacheAndTrackHints(RooArgSet&) ;
64 RooListProxy _compRSet ;
65 RooListProxy _compCSet ;
67 class CacheElem :
public RooAbsCacheElement {
71 RooArgList _prodList ;
72 RooArgList _ownedList ;
73 virtual RooArgList containedArgs(Action) ;
75 mutable RooObjCacheManager _cacheMgr ;
78 Double_t calculate(
const RooArgList& partIntList)
const;
79 Double_t evaluate()
const;
80 const char* makeFPName(
const char *pfx,
const RooArgSet& terms)
const ;
81 ProdMap* groupProductTerms(
const RooArgSet&)
const;
82 Int_t getPartIntList(
const RooArgSet* iset,
const char *rangeName=0)
const;
87 ClassDef(RooProduct,2)