12 #ifndef ROOPROJECTEDPDF
13 #define ROOPROJECTEDPDF
21 class RooProjectedPdf :
public RooAbsPdf {
25 RooProjectedPdf(
const char *name,
const char *title, RooAbsReal& _intpdf,
const RooArgSet& intObs);
26 RooProjectedPdf(
const RooProjectedPdf& other,
const char* name=0) ;
27 virtual TObject* clone(
const char* newname)
const {
return new RooProjectedPdf(*
this,newname); }
28 inline virtual ~RooProjectedPdf() { }
31 virtual Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
32 virtual Double_t analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
33 virtual Bool_t forceAnalyticalInt(
const RooAbsArg& dep)
const ;
35 virtual Double_t getValV(
const RooArgSet* set=0)
const ;
37 Int_t getGenerator(
const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE)
const;
38 void initGenerator(Int_t ) {} ;
39 void generateEvent(Int_t code);
41 virtual Bool_t selfNormalized()
const {
return kTRUE ; }
44 virtual RooAbsPdf* createProjection(
const RooArgSet& iset) ;
46 void printMetaArgs(std::ostream& os)
const ;
55 class CacheElem :
public RooAbsCacheElement {
57 virtual ~CacheElem() {
delete _projection ; } ;
59 RooAbsReal* _projection ;
61 virtual RooArgList containedArgs(Action) ;
62 virtual void printCompactTreeHook(std::ostream&,
const char *, Int_t, Int_t) ;
64 mutable RooObjCacheManager _cacheMgr ;
66 Bool_t redirectServersHook(
const RooAbsCollection& newServerList, Bool_t , Bool_t , Bool_t ) ;
68 mutable RooArgSet* _curNormSet ;
70 const RooAbsReal* getProjection(
const RooArgSet* iset,
const RooArgSet* nset,
const char* rangeName,
int& code)
const ;
71 Double_t evaluate()
const ;
75 ClassDef(RooProjectedPdf,1)