00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_EXTEND_PDF
00017 #define ROO_EXTEND_PDF
00018
00019 #include "RooAbsPdf.h"
00020 #include "RooRealProxy.h"
00021
00022 class RooExtendPdf : public RooAbsPdf {
00023 public:
00024
00025 RooExtendPdf() ;
00026 RooExtendPdf(const char *name, const char *title, const RooAbsPdf& pdf,
00027 const RooAbsReal& norm, const char* rangeName=0) ;
00028 RooExtendPdf(const RooExtendPdf& other, const char* name=0) ;
00029 virtual TObject* clone(const char* newname) const { return new RooExtendPdf(*this,newname) ; }
00030 virtual ~RooExtendPdf() ;
00031
00032 Double_t evaluate() const { return _pdf ; }
00033
00034 Bool_t forceAnalyticalInt(const RooAbsArg& ) const { return kTRUE ; }
00035 Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet, const char* rangeName=0) const {
00036
00037 return ((RooAbsPdf&)_pdf.arg()).getAnalyticalIntegralWN(allVars, analVars, normSet, rangeName) ;
00038 }
00039 Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const {
00040
00041 return ((RooAbsPdf&)_pdf.arg()).analyticalIntegralWN(code, normSet, rangeName) ;
00042 }
00043
00044 virtual Bool_t selfNormalized() const { return kTRUE ; }
00045 virtual ExtendMode extendMode() const { return CanBeExtended ; }
00046 virtual Double_t expectedEvents(const RooArgSet* nset) const ;
00047 virtual Double_t expectedEvents(const RooArgSet& nset) const { return expectedEvents(&nset) ; }
00048
00049 protected:
00050
00051 RooRealProxy _pdf ;
00052 RooRealProxy _n ;
00053 const TNamed* _rangeName ;
00054
00055
00056 ClassDef(RooExtendPdf,1)
00057 };
00058
00059 #endif