/*****************************************************************************
 * Project: RooStats
 * Package: RooStats
 *    File: $Id$
 * author: Kyle Cranmer
 *****************************************************************************/
#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;           // The nominal value
  //RooAbsPdf* _nominal;           // The nominal value
  RooArgList   _ownedList ;       // List of owned components
  RooListProxy _obsSet ;            // Low-side variation
  RooListProxy _paramSet ;            // interpolation parameters
  mutable TIterator* _paramIter ;  //! Iterator over paramSet
  mutable TIterator* _obsIter ;  //! Iterator over lowSet

  Double_t evaluate() const;

  ClassDef(RooJeffreysPrior,1) // Sum of RooAbsReal objects
};

#endif
 RooJeffreysPrior.h:1
 RooJeffreysPrior.h:2
 RooJeffreysPrior.h:3
 RooJeffreysPrior.h:4
 RooJeffreysPrior.h:5
 RooJeffreysPrior.h:6
 RooJeffreysPrior.h:7
 RooJeffreysPrior.h:8
 RooJeffreysPrior.h:9
 RooJeffreysPrior.h:10
 RooJeffreysPrior.h:11
 RooJeffreysPrior.h:12
 RooJeffreysPrior.h:13
 RooJeffreysPrior.h:14
 RooJeffreysPrior.h:15
 RooJeffreysPrior.h:16
 RooJeffreysPrior.h:17
 RooJeffreysPrior.h:18
 RooJeffreysPrior.h:19
 RooJeffreysPrior.h:20
 RooJeffreysPrior.h:21
 RooJeffreysPrior.h:22
 RooJeffreysPrior.h:23
 RooJeffreysPrior.h:24
 RooJeffreysPrior.h:25
 RooJeffreysPrior.h:26
 RooJeffreysPrior.h:27
 RooJeffreysPrior.h:28
 RooJeffreysPrior.h:29
 RooJeffreysPrior.h:30
 RooJeffreysPrior.h:31
 RooJeffreysPrior.h:32
 RooJeffreysPrior.h:33
 RooJeffreysPrior.h:34
 RooJeffreysPrior.h:35
 RooJeffreysPrior.h:36
 RooJeffreysPrior.h:37
 RooJeffreysPrior.h:38
 RooJeffreysPrior.h:39
 RooJeffreysPrior.h:40
 RooJeffreysPrior.h:41
 RooJeffreysPrior.h:42
 RooJeffreysPrior.h:43
 RooJeffreysPrior.h:44
 RooJeffreysPrior.h:45
 RooJeffreysPrior.h:46
 RooJeffreysPrior.h:47
 RooJeffreysPrior.h:48