00001
00002
00003
00004
00005
00006
00007 #ifndef JEFFREYSPRIOR
00008 #define JEFFREYSPRIOR
00009
00010 #include "RooAbsPdf.h"
00011 #include "RooRealProxy.h"
00012 #include "RooListProxy.h"
00013
00014 class RooRealVar;
00015 class RooArgList ;
00016
00017 class RooJeffreysPrior : public RooAbsPdf {
00018 public:
00019
00020 RooJeffreysPrior() ;
00021 RooJeffreysPrior(const char *name, const char *title, RooAbsPdf& nominal, const RooArgList& paramSet, const RooArgList& obsSet) ;
00022 virtual ~RooJeffreysPrior() ;
00023
00024 RooJeffreysPrior(const RooJeffreysPrior& other, const char* name = 0);
00025 virtual TObject* clone(const char* newname) const { return new RooJeffreysPrior(*this, newname); }
00026
00027 const RooArgList& lowList() const { return _obsSet ; }
00028 const RooArgList& paramList() const { return _paramSet ; }
00029
00030 Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
00031 Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
00032
00033 protected:
00034
00035 RooRealProxy _nominal;
00036
00037 RooArgList _ownedList ;
00038 RooListProxy _obsSet ;
00039 RooListProxy _paramSet ;
00040 mutable TIterator* _paramIter ;
00041 mutable TIterator* _obsIter ;
00042
00043 Double_t evaluate() const;
00044
00045 ClassDef(RooJeffreysPrior,1)
00046 };
00047
00048 #endif