#ifndef JEFFREYSPRIOR
#define JEFFREYSPRIOR
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooListProxy.h"
class RooRealVar;
class RooArgList ;
class RooJeffreysPrior : public RooAbsPdf {
public:
RooJeffreysPrior() ;
RooJeffreysPrior(const char *name, const char *title, RooAbsPdf& nominal, const RooArgList& paramSet, const RooArgList& obsSet) ;
virtual ~RooJeffreysPrior() ;
RooJeffreysPrior(const RooJeffreysPrior& other, const char* name = 0);
virtual TObject* clone(const char* newname) const { return new RooJeffreysPrior(*this, newname); }
const RooArgList& lowList() const { return _obsSet ; }
const RooArgList& paramList() const { return _paramSet ; }
Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars, const char* rangeName=0) const ;
Double_t analyticalIntegral(Int_t code, const char* rangeName=0) const ;
protected:
RooRealProxy _nominal;
RooArgList _ownedList ;
RooListProxy _obsSet ;
RooListProxy _paramSet ;
mutable TIterator* _paramIter ;
mutable TIterator* _obsIter ;
Double_t evaluate() const;
ClassDef(RooJeffreysPrior,1)
};
#endif