32 ClassImp(RooCachedPdf);
46 RooCachedPdf::RooCachedPdf(
const char *name,
const char *title, RooAbsPdf& _pdf) :
47 RooAbsCachedPdf(name,title),
48 pdf(
"pdf",
"pdf",this,_pdf),
49 _cacheObs(
"cacheObs",
"cacheObs",this,kFALSE,kFALSE)
68 RooCachedPdf::RooCachedPdf(
const char *name,
const char *title, RooAbsPdf& _pdf,
const RooArgSet& cacheObs) :
69 RooAbsCachedPdf(name,title),
70 pdf(
"pdf",
"pdf",this,_pdf),
71 _cacheObs(
"cacheObs",
"cacheObs",this,kFALSE,kFALSE)
73 _cacheObs.add(cacheObs) ;
81 RooCachedPdf::RooCachedPdf(
const RooCachedPdf& other,
const char* name) :
82 RooAbsCachedPdf(other,name),
83 pdf(
"pdf",this,other.pdf),
84 _cacheObs(
"cacheObs",this,other._cacheObs)
93 RooCachedPdf::~RooCachedPdf()
105 void RooCachedPdf::fillCacheObject(RooAbsCachedPdf::PdfCacheElem& cache)
const
108 if (cache.hist()->get()->getSize()>1) {
109 coutP(Eval) <<
"RooCachedPdf::fillCacheObject(" << GetName() <<
") filling multi-dimensional cache" ;
113 ((RooAbsPdf&)pdf.arg()).fillDataHist(cache.hist(),&cache.nset(),1.0,kFALSE,kTRUE) ;
115 if (cache.hist()->get()->getSize()>1) {
116 ccoutP(Eval) << endl ;
119 cache.pdf()->setUnitNorm(kTRUE) ;
127 void RooCachedPdf::preferredObservableScanOrder(
const RooArgSet& obs, RooArgSet& orderedObs)
const
129 pdf.arg().preferredObservableScanOrder(obs,orderedObs) ;
142 RooArgSet* RooCachedPdf::actualObservables(
const RooArgSet& nset)
const
144 if (_cacheObs.getSize()>0) {
145 return pdf.arg().getObservables(_cacheObs) ;
148 return pdf.arg().getObservables(nset) ;
159 RooArgSet* RooCachedPdf::actualParameters(
const RooArgSet& nset)
const
161 if (_cacheObs.getSize()>0) {
162 return pdf.arg().getParameters(_cacheObs) ;
164 return pdf.arg().getParameters(nset) ;